requests高级操作
目录
1.cookie的处理
2.代理操作
3.验证码识别
4.模拟登陆
一、cookie
- cookie是存储在客户端的一组键值对
- cookie是由服务器端创建
- cookie应用的简单实例:
- 免密登陆(指定时长之内)
在爬虫中处理cookie的两种方式
- 手动处理
- 将cookie封装到headers字典中,将该字典作用到get/post方法中的headers参数中
- 自动处理
- Session对象
- Session对象的创建:requests.Session()
- 对象的作用:
- 可以跟requests一样调用get/post进行请求的发送。在使用session进行请求发送的过程中,如果产生cookie,则cookie会被自动存储到session对象中
- 在爬虫中使用session处理cookie时,session对象至少需要被用几次?
- 两次,第一次是为了捕获和存储cookie到session对象中,第二次就是用携带cookie的session进行请求发送,这次请求发送就是携带cookie发起的请求
二、代理操作
- 概念:代理服务器
- 代理服务器的作用
- fiddler就是一个典型的代理服务器的抓包工具
- 代理服务器就是用来转发请求和响应。可以让代理服务器转发请求从而更换请求的原始IP地址
- 代理与爬虫之间的关联?
- 爬虫程序可能会在短时间内对指定的服务器发起高频的请求。服务器端会将该高频请求的ip禁掉
- 代理的匿名度
- 透明:对方服务器知道你使用了代理也知道你的真实ip
- 匿名:对方知道你使用了代理,但是不知道你的真实ip
- 高匿名:对方不知道你使用代理,更不知道你的真实ip
- 代理的类型:
- http:只能代理http协议的请求
- https:代理https协议的请求
- 如何获取代理服务器?
- 免费:几乎不能用
- 西刺代理
- 快代理
- goubanjia
- 付费:
- 智联HTTP:'http:zhiliandaili.cn'
三、验证码识别
- 显示的打码平台进行验证码识别
- 云代码
- 超级鹰:http://www.chaojiying.com/
- 打码兔
- 超级鹰使用:
- 注册
- 登录
- 创建一个软件:软件id -> 生成一个软件id
- 下载实例代码:开发文档 -> Python
四、模拟登录
- 涉及的反爬:
- 验证码
- 动态变化的请求参数
- cookie
- 以及常见的反爬:
- UA
- robots协议
- 动态加载的数据
- 图片懒加载
- 代理
- js加密
- js混淆
问题:往往在进行大量请求发送大量请求的时候,经常会发生这样一个错误:HTTPConnectionPool(Host:XX) Max....
- 原因:
- 1.每次数据传输前,客户端要和服务器建立TCP连接。为节省传输消耗,默认为keep-alive。即连接一次传输多次。而如果连接迟迟不断开的话,则连接池满后则无法产生新的链接对象,导致请求无法发送。
- 2.Ip被封。
- 3.请求频率太频繁。
- 解决:如果下列解决未生效,则可以尝试再次执行程序。
- 1.设置请求头中的Connection的值为close。表示每次请求成功后断开链接。 headers={'Connection': 'close'}
- 2.更换请求ip。
- 3.每次请求之间使用sleep进行等待间隔。