用Python Requests发送Cookie
我正在尝试用Python的Requests库抓取一些数据(也就是在浏览器中执行的一个POST操作)。我希望通过复制请求头
和POST表单
,能得到我在浏览器中看到的内容。
不过,我不太确定用Python的Requests库发送cookies的正确方法是什么。这里有一张在Chrome中显示的截图。
看起来我可以选择在请求头中把cookie当作一个键,或者在post命令中使用cookie参数。
(1). 如果我想在请求头中使用cookie,是否应该把整个cookie内容当作一个长字符串,然后把键设置为cookie
,值设置为那个字符串呢?
(2). 如果我想在request.post
命令中使用cookie参数,是否应该先手动把那个长字符串转换成一个字典,然后再传给cookie参数?像这样吗?
mycookie = {'firsttimevisitor':'N'; 'cmTPSet':'Y'; 'viewType':'List'... }
# Then
r = requests.post(myurl, data=myformdata, cookies=mycookie, headers=myheaders)
谢谢!
2 个回答
3
只需按照文档上的说明操作:
>>> url = 'http://httpbin.org/cookies'
>>> cookies = dict(cookies_are='working')
>>> r = requests.get(url, cookies=cookies)
>>> r.text
'{"cookies": {"cookies_are": "working"}}'
所以要用一个字典来存放cookie,注意是
2
没错。不过要确保你把它叫做“Cookie”(注意大写C)
我一直都是用字典来处理的。Requests库希望你给它一个字典。
如果你用字符串的话,会得到以下结果:
cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))
TypeError: string indices must be integers, not str