Python实战:Python爬虫学习教程,获取电影排行榜

Python应用现在如火如荼,应用范围很广。因其效率高开发迅速的优势,快速进入编程语言排行榜前几名。本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结。希望大家能够快速入门并学习Python这门语言。

本文是在前一部分Python基础之上程序员带你十天快速入门Python,玩转电脑软件开发(四),再次进行的Python爬虫实战课程。

正则表达式实例简单详解

正则表达式干什么用? 就是在字符串中提取我们需要的内容的。

记得哦,要先引用正则表达式模块的哦。

re就是正则表达式相关的模块

实例一、

运行结果:

为了更加区分并铭记正则表达式。我们看一下其他元字符的效果:

元字符”+”的使用

元字符”?的使用”

?表示前面的字符必须出现一次或者多次。

其他的一些元字符建议大家根据课程程序员带你十天快速入门Python,玩转电脑软件开发(四)进行测试,查看效果。

findall和search的区别

findall:

根据运行结果可以发现:fingall可以匹配出所有的结果并返回集合。而search只能够匹配一个结果,当search时从左往右发现有一个结果时就直接返回了。

如果你仔细查看的话发现,search还有一个重载。例如我们可以这样写

但此时结果却没有任何变化。

so 这个参数是什么呢? 其实这是个设置是否匹配换行的标志。如果加上re.S就表示可以匹配换行。不写参数默认不匹配换行的。比如:

很明显,如果匹配中间有换行的话,不加re.S就没法匹配了。

sub的使用

根据运行结果可以得出:sub函数是替换函数。他可以把匹配的内容进行替换掉并返回新替换完毕的字符串。

爬虫程序

众所周知,所有的网页都是通过html代码编写而成的,可以说是一个文本文件,根据渲染模型从而产生了多姿多彩的网页。

我们将要做的项目就是捕捉百度风云榜实施热搜榜单的全部电影。得到火热的电影。也就是下面的部分

这个网页也是由html编写而成的。打开微博热搜。在网页空白处点击右键就可以看到网页源代码。

你会发现整个html代码非常复杂。所以我们这边就使用一个神器:开发人员工具。

网页空白处点击右键审查元素

然后选择实时热搜里面的内容。下方就会自动定位到你所选择的代码了。

我们查看一下实时热搜这几个标签有什么规律:

我们可以看到我们想要的热搜的内容都是如下结构:

电影名称

所以我们就可以按照如上内容写正则表达式,然后在html源代码中匹配出来电影名称就可以了

我们正则表达式可以这样写

.*?

其中我们用到了一个python网络请求的框架。这个框架默认是没有的。我们需要进行安装的。

下载requests模块,(大家可以加入QQ群:538742639获取)

安装requests模块

解压模块文件并打开kennethreitz-requests-3314259文件夹

按住键盘shift键,在空白区域右键点击-在此处打开命令窗口

输入以下指令:python setup.py install

点击回车即可安装。此时就可以导入requests模块了

至此一个简单的获取热门电影的爬虫小程序开发完成。

下节课我们学习更高效率更快速度的多线程爬虫。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python中文社区

使用Python分析nginx日志

使用Python分析nginx日志 专栏作者:熊球 ♚土木工程毕业,现从事web后端开发方面的工作,擅长python,flask框架等。 博客:codechat...

31010
来自专栏互联网杂技

前端面试题整理

交互设计前端开发 前言: 现在前端面试主要考察以下几个方面: 初级的:html、css、js,jquery,开发工具git的使用,对其他框架稍微了解; 中级的:...

4899
来自专栏码字搬砖

spark内存模型概论

背景: 自从开始接触spark之后就一直很奇怪spark on yarn到底是怎么样跑起来了,具体的内存占用是怎么分配的?如果container的内存小于–e...

2272
来自专栏余林丰

0.Java并发包系列开篇

  在我们想要谈论Java并发包(java.util.concurrent)的时候,这是一个头疼的问题,却又是每个Java工程师不得不掌握的一项技能。一直以来都...

2185
来自专栏魏艾斯博客www.vpsss.net

修改 WordPress 文章默认排序的方法

2505
来自专栏腾讯移动品质中心TMQ的专栏

基于 hook 和 gmock 开展单元测试

单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函...

9002
来自专栏运维技术迷

Redis单线程架构

redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务。 引出单线程模型 开启三个redis-cli客户端同时执行命令 客户端1设置一个字...

5328
来自专栏Python小屋

Python计算前n个自然数的阶乘和

本文来源于粉丝私信的问题,目的在于计算result = 1!+2!+3!+...+n!,因为代码比较简单,没加注释,有问题可以留言交流。文中给出了2段代码,在实...

4805
来自专栏Golang语言社区

channel机理及调度理解

《Go语言编程》一书介绍了libtask库,可以认为这个库等同于go的底层goroutine实现。

1143
来自专栏Keegan小钢

App架构经验总结(一)

原文链接:http://keeganlee.me/post/architecture/20160303 版权声明:本文刊载在《程序员》杂志2016年3期,版权归...

2324

扫码关注云+社区

领取腾讯云代金券