# 爬虫requests的高级操作

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'

 

三、验证码识别

  • 显示的打码平台进行验证码识别
  • 超级鹰使用:
    • 注册
    • 登录
      • 创建一个软件:软件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进行等待间隔。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章