Python获取cookie

现在Python到底要怎样获得某一个网站(比如b站)的cookie啊,如果希望用requests这个类实现打开的话?

使用Python requests模块获取网站的cookie可以分为两步

  1. 获取登录页面
  2. 提交登录请求,获取服务器返回的cookie
import requests

# 获取登录页面,获取csrf_token
url = 'https://www.bilibili.com/login'
response = requests.get(url)

# 提取csrf_token
csrf = response.text.split('csrf = "')[1].split('";')[0]

# 构造登录请求数据
data = {
   'csrf_token': csrf,
   'username': 'yourusername',
   'password': 'yourpassword' 
}

# 登录并获取cookie
response = requests.post(url, data=data)
cookies = response.cookies

# 打印cookie,保存到文件等后续使用
print(cookies)
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7411172
  • 这篇博客你也可以参考下:Python爬虫-requests的cookie登录
  • 你还可以看下python参考手册中的 python-http.cookiejar —— HTTP 客户端的 Cookie 处理
  • 除此之外, 这篇博客: Python爬虫携带Cookie,session会话保持,对于需要登录才能抓数据的处理方式中的 方式二:Cookies直接作为requests方法的参数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 方式二与方式一都是通过携带Cookie来发请求,方式二直接调用requests的cookies参数,但是要求cookies是一个字典类型,所以要对从网上复制下来的cookie值进行一些处理,cookie中都是键值对的形式,如:

    uuid_tt_dd=10_19035893370-1578805336439-452978; dc_session_id=10_1578805336439.387381;

    我们要将这样的一串字符串做成字典的形式首先要将它以“; ”分隔,注意两个值直接不仅有;符号,还有一个空格,所以是;+空格。分隔之后得到的格式为:键=值 ,再以=号分隔,取[0]为键,[1]为值,如下:

    import requests

    cookies="从网上复制的cookie值"

    cookies_dict={}

    for i in cookies.split("; "):

       cookies_dict[i.splict('=')[0]] = i.splict('=')[1]

    html=requests.get(url='',cookies=cookies_dict}

     

  • 您还可以看一下 龙豪杰老师的Python网络爬虫课程中的 获取cookie对象小节, 巩固相关知识点