我正在尝试使用Python Requests库来抓取一些数据(重现我在浏览器中执行的POST操作)。期待它将返回我在使用浏览器时看到的内容,方法是复制request header
和post form
。
但是,我不太确定使用Python请求发送cookie的正确方法是什么。 以下是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)
谢谢!
答案 0 :(得分:3)
只需关注documentation:
>>> url = 'http://httpbin.org/cookies'
>>> cookies = dict(cookies_are='working')
>>> r = requests.get(url, cookies=cookies)
>>> r.text
'{"cookies": {"cookies_are": "working"}}'
因此请使用dict作为Cookie,并注意cookies
而不是cookie
。
答案 1 :(得分:1)
是。但请确保将其称为“Cookie”(使用大写C)
我总是用dict做的。请求期望您给出一个词典。
字符串将提供以下内容
cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))
TypeError: string indices must be integers, not str