【问题标题】:Download content-disposition from http response header (Python 3)从 http 响应头下载 content-disposition (Python 3)
【发布时间】:2015-02-04 01:04:48
【问题描述】:
我在这里寻求一点帮助。我一直在使用 Python 中的请求来访问网站。我能够访问该网站并获得响应标头,但我不确定如何下载 Content-disposition 中包含的 zip 文件。我猜这不是 Requests 可以处理的功能,或者至少我似乎找不到任何关于它的信息。如何访问文件并保存它?
'Content-disposition': 'attachment;filename=MT0376_DealerPrice.zip'
【问题讨论】:
标签:
python-3.x
python-requests
【解决方案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'
【解决方案2】:
您要做的是访问 response.content。如果内容确实包含文件,您可能希望添加更好的检查。
小例子sn-p
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)