我写了以下简单的代码(在stackoverflow的帮助下,谢谢!)要从url链接下载文件,请执行以下操作:
import requests
url = "http://www.url.com/file.pdf"
response = requests.get(url)
output = open('file.pdf', 'wb')
output.write(response.content)只要我在url中有一个文件名,代码就能正常工作。然而,一些链接直接打开一个不包含文件名的url的pdf。请求有办法处理这个问题吗?
一些附加信息:有问题的url包含字符串".cfm?“我发现它指的是冷融合标记语言。我希望这能帮助别人为我找到一个解决方案。
发布于 2014-08-21 23:42:59
当浏览器得到一个文件的响应时,它将查找文件名作为URL的一部分,但是如果有一个带有filename参数的Content-Disposition header (最初是MIME头,但也在HTTP中使用),那么文件名就是从中获取的。
requests不会给你任何具体的帮助,而是你自己去做:
import cgi
from urllib.parse import urlsplit
def filename_from_response(response):
cdisp = response.headers.get('content-disposition')
if cdisp:
_, params = cgi.parse_header(cdisp)
if 'filename' in params:
return filename
last_part = urlsplit(response.url).path.rpartition('/')[-1]
return last_parthttps://stackoverflow.com/questions/25430219
复制相似问题