【发布时间】:2014-09-25 08:24:45
【问题描述】:
x = requests.post(url, data=data)
print x.cookies
我使用 requests 库从网站获取一些 cookie,但我只能获取 cookie 从响应中,如何从请求中获取 cookie?谢谢!
【问题讨论】:
x = requests.post(url, data=data)
print x.cookies
我使用 requests 库从网站获取一些 cookie,但我只能获取 cookie 从响应中,如何从请求中获取 cookie?谢谢!
【问题讨论】:
如果您需要每个 cookie 的 path 和 domain,而 get_dict() 未公开,您可以手动解析 cookie,例如:
[
{'name': c.name, 'value': c.value, 'domain': c.domain, 'path': c.path}
for c in session.cookies
]
【讨论】:
或者,您可以使用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'}
【讨论】:
path和domain,有什么建议吗?
r = requests.get('...') 然后使用r.cookies._cookies 遍历Cookie 对象,r.cookies._cookies 是一个字典,其键是[<domain>][<path>]
r.cookies._cookies 返回的是一个空字典,而当我使用 Firefox 或 Chrome 访问时,我可以使用开发人员工具轻松找到它们。有什么提示吗?
r.cookies(并获得了 domain 属性)或访问 r.cookies._cookies 工作。你能用http://google.com试试吗?由于不同的用户代理,您访问的 URL 是否会返回不同的内容?如果您将请求的用户代理设置为 Firefox 的,它可以工作吗?