使用Python请求发送Cookie

时间:2014-10-22 15:01:41

标签: python cookies web-scraping screen-scraping

我正在尝试使用Python Requests库来抓取一些数据(重现我在浏览器中执行的POST操作)。期待它将返回我在使用浏览器时看到的内容,方法是复制request headerpost 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)

谢谢!

2 个答案:

答案 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)

  1. 是。但请确保将其称为“Cookie”(使用大写C)

  2. 我总是用dict做的。请求期望您给出一个词典。

  3. 字符串将提供以下内容

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