我想使用请求来下载文件,因为这是迄今为止研究的最佳选择,但是我不知道如何在不提供文件名的情况下下载给定的url链接。
import requests
url = 'https://www.python.org/static/img/python-logo.png'
fileName = 'D:\Python\dwnldPythonLogo.png'
req = requests.get(url)
file = open(fileName, 'wb')
for chunk in req.iter_content(100000):
file.write(chunk)
file.close()
上面的代码显示了如何使用文件名下载它,是否可以不使用文件名来进行下载?
例如这样的例子:
import requests
url = 'https://www.python.org/static/img/python-logo.png'
location = 'D:\Python\'
req = requests.get(url)
file = open(location, 'wb')
for chunk in req.iter_content(100000):
file.write(chunk)
file.close()
答案 0 :(得分:2)
import requests
import re
def get_filename_from_cd(cd):
"""
Get filename from content-disposition
"""
if not cd:
return None
fname = re.findall('filename=(.+)', cd)
if len(fname) == 0:
return None
return fname[0]
url = 'http://google.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
filename = get_filename_from_cd(r.headers.get('content-disposition'))
open(filename, 'wb').write(r.content)
我认为这解决了我的问题,因为它从标题而不是url获取文件名。