网络爬虫又称为网络机器人,它可以按照程序设定的规则自动抓取网页上的信息。网络是信息的海洋,但是网络中的数据是零散的、无序的且存在着冗余,如何从复杂的网页代码中提取有用的信息便是爬虫需要解决的问题。 Python 语法简洁,代码风骚,数据的处理能力强,比如函数参数的打包解包,列表解析,矩阵处理,非常方便,所以 Python 非常适合做网络爬虫。我将在这里很大家分享我的一些网络爬虫小程序,让我们一起体验爬虫带来的乐趣吧!
基本正则表达式
导入re模块
导入 Python 正则表达式模块:
|
|
Python 通过 re 模块提供对正则表达式的支持。
常用方法
findall: 匹配所有符合规律的内容,返回包含结果的列表
Search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象(object)
Sub:替换符合规律的内容,返回替换后的值
常用符号
,,问号与括号
点号. : 匹配任意字符,换行符 \n 除外
星号* :匹配前一个字符 0 次或无限次
问号? :匹配前一个字符 0 次或 1 次
贪心算法:.*
非贪心算法:.*?
括号():括号内的数据作为结果返回
常用情况
使用 findall 与 search 从大量文本中匹配感兴趣的内容
使用 sub 实现换页功能
Http网络请求
requests模块
Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。
导入requests模块
|
|
基本Get请求
|
|
这里只举例了我们要使用的基本的 get 请求,如果需要了解更多的 requests 模块的方法请自行百度。
实例代码
目的:爬取湖南农业大学官网中心位置的三张图片,并且下载下来。
获取图片的源代码
使用 Chrome 打开农大官网,右键审查元素,然后点击左上角的放大镜,点击图片就会定位到图片的源代码位置,如图所示:
分析源代码,写出正则表达式
分析上图可知,我们需要的部分为 src=""
中引号里面的 url,而三张图片都是相同的格式,所以我们使用 re 模块的 findall 方法,将 src 的中间部分获取到即可:re.findall('img src="(.*?)" width="990"',html.text,re.S)
(1)findall
即匹配所有符合正则表达式规则的内容
(2)(.*?)
用作获取 src=""
的双引号中间的 url 并返回
(3)re.S
的作用是使 .
的作用范围包括换行符,即可以换行匹配
根据获取到的url下载图片
因为我们获取到的 url 并不是完整的网址,所以右键上图的链接选择 Open link in new tab 来查看完整的网址,如下图,因此我们在下载图片时需要在 url 前加上 http://www.hunau.edu.cn/。
代码如下:
文本爬虫,效果如下:
我们在这里只是爬取了三张图片,但是使用 python 来做网页爬虫真的功能很强大,大家可以试一试修改代码去爬取更多的图片。