请求:禁用自动解码

时间:2013-08-21 17:41:37

标签: python python-requests

您可以在requests版本1.2.3中禁用自动解码功能吗?

我查看了文档并找不到任何内容,我目前遇到gzip解码错误,并希望手动调试请求中的数据。

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:0)

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编码的响应进行自动解压缩,而仍将其逐块写入文件(用于获取大文件)