【问题标题】:python requests get cookiespython请求获取cookies
【发布时间】:2014-09-25 08:24:45
【问题描述】:
x = requests.post(url, data=data)
print x.cookies

我使用 requests 库从网站获取一些 cookie,但我只能获取 cookie 从响应中,如何从请求中获取 cookie?谢谢!

【问题讨论】:

    标签: python python-requests


    【解决方案1】:

    如果您需要每个 cookie 的 pathdomain,而 get_dict() 未公开,您可以手动解析 cookie,例如:

    [
        {'name': c.name, 'value': c.value, 'domain': c.domain, 'path': c.path}
        for c in session.cookies
    ]
    

    【讨论】:

      【解决方案2】:

      或者,您可以使用requests.Session 并在请求前后观察cookies

      >>> import requests
      >>> session = requests.Session()
      >>> print(session.cookies.get_dict())
      {}
      >>> response = session.get('http://google.com')
      >>> print(session.cookies.get_dict())
      {'PREF': 'ID=5514c728c9215a9a:FF=0:TM=1406958091:LM=1406958091:S=KfAG0U9jYhrB0XNf', 'NID': '67=TVMYiq2wLMNvJi5SiaONeIQVNqxSc2RAwVrCnuYgTQYAHIZAGESHHPL0xsyM9EMpluLDQgaj3db_V37NjvshV-eoQdA8u43M8UwHMqZdL-S2gjho8j0-Fe1XuH5wYr9v'}
      

      【讨论】:

      • 这不会返回pathdomain,有什么建议吗?
      • @OrDuan 如前所述here 你可以做r = requests.get('...') 然后使用r.cookies._cookies 遍历Cookie 对象,r.cookies._cookies 是一个字典,其键是[<domain>][<path>]
      • @GregSadetsky 哦哇,那是几年前的事了,我发布了我多年前使用的解决方案作为答案:)
      • @GregSadetsky 我的行为很奇怪,因为我的r.cookies._cookies 返回的是一个空字典,而当我使用 Firefox 或 Chrome 访问时,我可以使用开发人员工具轻松找到它们。有什么提示吗?
      • @RicardoBarrosLourenço 刚刚使用请求 2.20.1 进行了尝试,并且都迭代了 r.cookies(并获得了 domain 属性)或访问 r.cookies._cookies 工作。你能用http://google.com试试吗?由于不同的用户代理,您访问的 URL 是否会返回不同的内容?如果您将请求的用户代理设置为 Firefox 的,它可以工作吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      • 2022-01-25
      • 2019-09-07
      • 1970-01-01
      • 2012-09-30
      相关资源
      最近更新 更多