在浏览器中,如果单击下载按钮,将下载文件及其原始名称和元数据。
目前我可以下载一个包含python请求的文件,但我必须给它一个名字,下载文件中没有任何元数据可用。
我要下载的文件具有有意义的名称,但这些名称不是网址的一部分。
使用python执行此操作的最佳方法是什么?
响应中只有这些标题:
Content-Disposition
标头在r.headers
中不可用,但如果我在浏览器中下载该文件,我就会看到它。
Traceback (most recent call last):
File "download.py", line 53, in <module>
print r.headers["Content-Disposition"]
File "/Users/raitis.dembovskis/.virtualenvs/webcrawler/lib/python2.7/site-packages/requests/structures.py", line 54, in __getitem__
return self._store[key.lower()][1]
KeyError: 'content-disposition'
答案 0 :(得分:1)
只有当该网址的标头包含文件名信息时才能执行此操作:
result.urllib2.urlopen(url)
result.headers['content-disposition']
or
result.info()
答案 1 :(得分:0)
文件名由服务器使用Content-Disposition标头设置,如下所示:
Content-Disposition: attachment; filename="downloaded.pdf"
所以,尝试从标题中读取并提取标题中给出的文件名并使用它。
参考: