cookie处理

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
上一篇:openstack组件之Keystone


下一篇:win7下使用U盘安装Ubuntu Kylin完全详解教程