从http响应头(Python 3)下载内容处置

时间:2015-02-04 01:04:49

标签: python-3.x python-requests

我在这里寻求一些帮助。我一直在使用Python中的请求来访问网站。我能够访问该网站并获得响应标题,但我不确定如何下载Content-disposition中包含的zip文件。我猜这不是一个函数请求可以处理或至少我似乎无法找到任何信息。如何获取文件并保存?

'Content-disposition': 'attachment;filename=MT0376_DealerPrice.zip'

2 个答案:

答案 0 :(得分:1)

使用urllib代替requests因为它是一个更轻的库:

import urllib

req = urllib.request.Request(url, method='HEAD')
r = urllib.request.urlopen(req)
print(r.info().get_filename())

示例:

In[1]: urllib.request.urlopen(urllib.request.Request('https://httpbin.org/response-headers?content-disposition=%20attachment%3Bfilename%3D%22example.csv%22', method='HEAD')).info().get_filename()
Out[1]: 'example.csv'

答案 1 :(得分:0)

您要做的是访问response.content。如果内容确实包含文件,您可能希望添加更好的检查。

小示例摘录

response = requests.post(url, files={'name': 'filename.bin'}, timeout=60, stream=True)
if response.status_code == 200:
    if response.headers.get('Content-Disposition'):
        print("Got file in response")
        print("Writing file to filename.bin")
        open("filename.bin", 'wb').write(response.content)