用Python Requests发送Cookie

0 投票
2 回答
15407 浏览
提问于 2025-04-29 01:43

我正在尝试用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,注意是cookies,而不是cookie

2
  1. 没错。不过要确保你把它叫做“Cookie”(注意大写C)

  2. 我一直都是用字典来处理的。Requests库希望你给它一个字典。

如果你用字符串的话,会得到以下结果:

cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))
TypeError: string indices must be integers, not str

撰写回答