【问题标题】:requests: disable auto decoding请求:禁用自动解码
【发布时间】:2013-08-21 17:41:37
【问题描述】:

能否在requests 1.2.3 版中禁用自动解码功能?

我查看了文档,但找不到任何东西,我目前遇到 gzip 解码错误,并希望手动调试通过请求传入的数据。

【问题讨论】:

    标签: python python-requests


    【解决方案1】:

    您可以像这样访问原始响应:

    resp = requests.get(url, stream=True)
    resp.raw.read()
    

    为了使用raw,您需要为原始请求设置stream=True。另外,raw 是一个类似文件的对象,从response.content 读取会影响查找光标。换句话说:如果您已经(试图)阅读response.contentresponse.raw.read() 将返回一个空字符串。

    请参阅 requests 文档中的 FAQ: Encoded DataQuickstart: raw response content

    【讨论】:

    • 太棒了,正是我需要的谢谢!
    【解决方案2】:
    import requests
    
    r = requests.get(url, stream=True)
    with open(local_filename, 'wb') as f:
        for chunk in r.raw.stream(1024, decode_content=False):
            if chunk:
                f.write(chunk)
    

    这样,您将避免自动解压缩 gzip 编码的响应,并且仍然将其逐块写入文件(对于获取大文件很有用)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      相关资源
      最近更新 更多