1、cookie和session的区别
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上。
(2)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗。
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用服务器的性能。
(4)单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。
2、爬虫处理cookie和session
2.1 带上cookie、session的好处
能够请求到登录之后的页面,因此必须发送带有cookies的请求。
2.2 带上cookie、session的弊端
一套cookie和session往往和一个用户对应。
请求太快,请求次数太多,容易被服务器识别为爬虫。
所以:不需要cookie的时候尽量不去使用cookie。
2.3 处理cookie、session请求
requests提供了一个叫做session类,来实现客户端和服务端的会话保持
思路:先实例化session,再使用session发送请求,登录网站,把cookie保存在实例化的session中,接着使用session请求登录之后才能访问的网站,session能够自动的携带登录成功时保存在其中的cookie,进行请求。
使用方法:
(1)实例化一个session对象:`session = requests.session()`
(2)让session发送get或则post请求:`response = session.get(url,headers)`
2.4 Requests小技巧
(1)把cookie对象转化为字典:`requests.util.dict_from_cookiejar`
(2)设置超时:`response=requests.get(url,1)`
(3)配合状态码判断是否请求成功:`assert response.status_code==200`
(4)对url进行解码:`requests.utils.unquote("https:%3a%2f%2ftieba.baidu.com")`
(5)对url进行编码:`requests.utils.quote("https://tieba.baidu.com")`
3、retrying模块
安装:`pip install retrying`
作用:重复执行一段代码
说明:retrying以装饰器的方式使用
案例:
```
from retrying import retry
@retry
def function():
pass
```