目录
一、搜索引擎蜘蛛
二、requests库
三、Beautiful Soup
四、爬虫的基本流程
一、搜索引擎蜘蛛
-
爬虫是按照一定规则,自动地提取并保存网页中信息的程序
蜘蛛沿着网络抓取猎物
通过一个节点之后,顺着该节点的连线继续爬行到下一个节点,最终爬完整个网络的全部节点 -
通过向网站发起请求获取资源,提取其中有用的信息
二、requests库
-
Python实现的一个简单易用的HTTP库
支持HTTP持久连接和连接池、SSL证书验证、cookies处理、流式上传等 -
向服务器发起请求并获取响应,完成访问网页的步骤
-
简洁、容易理解,是最友好的网络爬虫库
-
http请求类型
requests.request()
:构造一个请求
requests.get()
:获取HTML网页
requests.head()
:获取HTML网页头信息
requests.post()
:提交POST请求
requests.put()
:提交PUT请求
requests.patch()
:提交局部修改请求
requests.delete()
:提交删除请求
requests.options()
:获取http请求 -
返回的是一个response对象
-
response对象
包含服务器返回的所有信息,例如状态码、编码形式、文本内容等;也包含请求的request信息
.status_code
:HTTP请求的返回状态
.text
:HTTP响应内容的字符串形式
.content
:HTTP响应内容的二进制形式
.encoding
:(从HTTP header中)分析响应内容的编码方式
.apparent_encoding
:(从内容中)分析响应内容的编码方式
- 定制请求头
requests的请求接口有一个名为headers的参数,向它传递一个字典来完成请求头定制 - 设置代理
一些网站设置了同一IP访问次数的限制,可以在发送请求时指定proxies参数来替换代理,解决这一问题
三、Beautiful Soup
-
页面解析器
使用requests库下载了网页并转换成字符串后,需要一个解析器来处理HTML和XML,解析页面格式,提取有用的信息 -
解析器类型
image.png -
搜索方法
find_all(name,attrs,recursive,string,**kwargs)
返回文档中符合条件的所有tag,是一个列表
find(name,attrs,recursive,string,**kwargs)
相当于find_al1()中limit=1,返回一个结果
name
:对标签名称的检索字符串
attrs
:对标签属性值的检索字符串
recursive
:是否对子节点全部检索,默认为True
string
:<>...</>中检索字符串
**kwargs
:关键词参数列表
四、爬虫的基本流程
-
分析网页结构
image.png -
爬取页面
通过requests库向目标站点发送请求,若对方服务器正常响应,能够收到一个response对象,它包含了服务器返回的所有信息
image.png -
解析页面
HTML代码-网页解析器
Json数据-json模块,转换成Json对象
二进制数据一以wb形式写入文件,再做进一步处理此处使用bs4进行解析
image.png
网友评论