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发起的请求。
import requests
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'
}
#https://xueqiu.com/,将雪球网中的新闻资讯进行数据爬取
#分析:首页第一屏的数据不是动态加载,但是滚轮滑动到底部后会动态加载出更多新闻数据
url = 'https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20367942&count=15&category=-1'
json_data = requests.get(url=url,headers=headers).json()
json_data
#没有捕获到正确的数据,原因在于我们进行请求发送的时候没有在请求头中携带cookie
#基于session自动处理cookie
sess = requests.Session()
#该次请求只是为了捕获cookie存储到sess中
sess.get(url='https://xueqiu.com/',headers=headers)
url = 'https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20367942&count=15&category=-1'
json_data = sess.get(url=url,headers=headers).json()
json_data