【问题标题】:Send Cookie Using Python Requests使用 Python 请求发送 Cookie
【发布时间】:2014-12-18 02:10:36
【问题描述】:

我正在尝试使用 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)

谢谢!

【问题讨论】:

    标签: python cookies web-scraping screen-scraping


    【解决方案1】:

    只要关注documentation:

    >>> url = 'http://httpbin.org/cookies'
    >>> cookies = dict(cookies_are='working')
    
    >>> r = requests.get(url, cookies=cookies)
    >>> r.text
    '{"cookies": {"cookies_are": "working"}}'
    

    所以对 cookie 使用 dict,并注意它是 cookies 而不是 cookie。

    【讨论】:

      【解决方案2】:
      1. 是的。但请确保将其称为“Cookie”(大写 C)

      2. 我总是用字典来做。 Requests 希望您提供一个 dict。

      一个字符串将给出以下内容

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

      【讨论】:

      • 快速提问,如果你有一个带数值的字段,说content-length 是200。创建标题时,我们应该将它们视为数字还是字符串?
      • 标头作为字符(字符串)发送,因此将它们视为字符串将是正确的方法。但是不知道requests库有没有问题。
      猜你喜欢
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      相关资源
      最近更新 更多