你能在requests
1.2.3 版本中禁用自动解码功能吗?
我查看了文档但找不到任何东西,我目前遇到 gzip 解码错误,并希望手动调试通过请求传入的数据。
你能在requests
1.2.3 版本中禁用自动解码功能吗?
我查看了文档但找不到任何东西,我目前遇到 gzip 解码错误,并希望手动调试通过请求传入的数据。
您可以像这样访问原始响应:
resp = requests.get(url, stream=True)
resp.raw.read()
为了使用raw
您需要设置stream=True
原始请求。另外,raw
是一个类似文件的对象,读取response.content
会影响查找光标。换句话说:如果您已经(试图) read response.content
,response.raw.read()
将返回一个空字符串。
请参阅常见问题解答:编码数据和快速入门:文档中的原始响应内容requests
。
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 编码的响应,并且仍然将其逐块写入文件(对于获取大文件很有用)