如何在不使用“请求”指定文件名的情况下下载文件?

时间:2019-04-05 16:00:07

标签: python python-3.x python-requests

我想使用请求来下载文件,因为这是迄今为止研究的最佳选择,但是我不知道如何在不提供文件名的情况下下载给定的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()

1 个答案:

答案 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获取文件名。

Source