Python网络爬虫之requests库
目录
一.网络爬虫的介绍
1.网络爬虫库
2.robot.txt规则
二.requests库
1.requests库的安装
2.get()函数
3.Response对象
Response的属性
设置编码
返回网页内容
text()
content()
三.提交信息到网页
post()函数
四.会话与代理服务器
一.网络爬虫的介绍
1.网络爬虫库
①urllib库:Python自带的标准库,代码编写略微复杂
②requests库:第三方库,在urllib库的基础上建立的,但使用起来更简洁方便
③scrapy库:第三方库,是一个专业应用程序开发的网络爬虫库
④selenium库:第三方库,可用于驱动计算机中的浏览器执行相关命令,而无需用户手动操作
2.robot.txt规则
注意不是 网站中的所有信息都允许被爬取,也不是所有的网站都允许被爬取,在大部分网站的根目录存在一个robot.txt文件用于声明此网站中禁止访问的url和可以访问的url
User-agent表示访问网站的引擎,第一个值为*表示所有搜索引擎都需要遵守2-21行的规则
第二个值为Wandoujia Spider 表示Wandoujia Spider搜索引擎需要遵守的规则
Disallow表示该搜索引擎不允许访问的url,值为/则表示不允许访问任何内容
Allow表示该搜索引擎允许访问的url
Sitemap网站地图,用于提供网站中所有可以爬取的url
二.requests库
1.requests库的安装
pip install requests -i 镜像源地址
2.get()函数
在requests库中获取html网页内容的方法就是get()函数
get(url,params=None,**kwargs)
url:需要获取的网址
params:可选参数,以字典的形式发送信息,当需要想向网页中提交查询信息时使用
**kwargs:请求采用的可选参数
注意:此时get()函数爬取的网页源代码仅包含原始文本数据(如城市名称),不包含渲染后的资源(如图片、视频)。r是返回的Response对象
import requests
r = requests.get('https://www.ptpress.com.cn/')
部分数据(如搜索关键词)可通过字典参数动态添加到 URL 后(如 ?keyword=excel),适配不同网站的查询格式。search表示搜索
import requests
r = requests.get('https://www.ptpress.com.cn/search?keyword=人工智能')
我们也可以用param参数来添加搜索信息,需要提前将param定义为字典
import requests
info ={'keyword':'人工智能
'}
r = requests.get('https://www.ptpress.com.cn/search',params=info)
系统会自动在url后面添加字典信息形式为
https://www.ptpress.com.cn/search?keyword=人工智能'
3.Response对象
Response的属性
关键属性包括:
status_code:服务器返回的状态码(如200表示成功,301表示永久重定向)。
url:实际爬取的网页地址。
encoding、cookies:网页编码和 Cookie 信息。
状态码用于判断请求是否成功(如200为允许爬取,其他代码可能表示拒绝或错误)。
设置编码
爬取内容出现乱码时,需将响应对象的编码(encoding)与网页实际编码(apparent_encoding)对齐。通过response对象.encoding = response对象.apparent_encoding自动匹配编码(如UTF-8),解决乱码问题。如果设置自动匹配编码后依然出现乱码,需要我们自行设置encoding编码方式
未设置编码时,输出内容可能因默认编码(如ISO-8859-1)与网页编码不匹配而显示乱码。
返回网页内容
Response对象返回网页对象有两种方法text()和content()
text()
以字符串形式返回网页内容
content()
以二进制形式返回网页内容常用于保存网页中的媒体文件,例如
import requests
r = requests.get('https://fileinfo.com/img/ss/xl/jpg_44-2.jpg')
f = open("1.jpg",'wb')
f.write(r.content)
f.close()
三.提交信息到网页
我们用post请求将表单中的数据提交给浏览器
post()函数
post(url,data=None,json=None,**kwarge)
- url:目标网站地址。
data
:需要发送的以字典/元组形式提交的信息(如密码修改表单)。json
:需要发送的JSON类型的数据-
**kwargs:请求采用的可选参数
返回值也是一个Response对象
四.会话与代理服务器
会话维持:HTTP无记忆性需通过cookie或session保持连续操作(如翻页爬取)
代理服务器:
作用:避免IP被封禁,通过中间服务器转发请求(如爬取淘宝数据)。
扩展应用:VPN原理类似,通过代理访问受限网站(如Facebook、ChatGPT)。
获取方式:免费代理IP不稳定,推荐付费服务(如香港/新加坡服务器)。