cookie和session区别
- cookie数据存放在客户浏览器上,session数据放在服务器上
- cookie不是很安全,别人可以分析放在本地的cookie并进行cookie欺骗
- session会在一定时间上保存在服务器。当访问增多,会比较占用服务器的性能。
- 单个cookie保存的数据不能超过4K,很多浏览器限制到一个站点最多保存20个cookie
爬虫处理cookie和session
带上cookie、session的优点:
能够请求到登录后页面
带上cookie、session的弊端:
- 不需要cookie的时候尽量不去使用cookie
- 但是为了获取登录后的页面,我们必须发送带有cookie的请求
一套cookie和session往往和一个用户对应
请求太快、请求次数太多、容易被服务器识别为爬虫
携带cookie的请求
携带一堆cookie进行请求,把cookie组成cookie池
处理cookie、session请求
requests提供了一个叫做session类,来实现客户端和服务端的会话保持
使用方法:
- 实例化一个session对象
- session发送get或者post请求
session = requests.session()
resp = session.get(url,headers)
请求登录之后的网站
未登录时我们无法直接通过url地址访问用户信息页
- 实例化session
- 先使用session发送请求,登录网站,把cookie保存在session中
- 再使用session请求登录之后才能访问的网站,session能够自动的携带登录成功是保存在其中的cookie,进行请求
import requests
session=requests.session()
port_url='http://www.renren.com/PLogin.do'
post_data={}
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"}
不发送post请求,使用cookie获取登录后的页面
- cookie过期时间很长的网站
- 在cookie过期之前能够拿到所有的数据,比较麻烦
- 配合其他程序一起使用,其他程序专门获取cookie,当程序专门请求页面
获取登录后的页面三种方式
- 实例session,使用session方发送post请求,在使用他登录后的页面
- header中添加cookie键,值为cookie字符串
- 在请求方法中添加cookie参数,受字典形式的cookie。字典形式的cookie中的键是cookie的name,值是cookie的value