Python怎么通过url下载网络文件到本地

以下代码演示Python怎么从网络下载一个文件至本地并保存在当前文件夹download

import os
import requests
from urllib.parse import urlparse

def download_file(url):
    response = requests.get(url, stream=True)
    response.raise_for_status()

    download_dir = 'download'
    os.makedirs(download_dir, exist_ok=True)

    file_name = os.path.basename(urlparse(url).path)
    print("下载文件名是",file_name)
    file_path = os.path.join(download_dir, file_name)
    print("下载文件路径是",file_path)
    with open(file_path, 'wb') as file:
        for chunk in response.iter_content(chunk_size=8192):
            if chunk:
                file.write(chunk)

    print(f'文件下载完成: {file_path}')

url = 'https://www.example.com/example.pdf'
file_path = 'download'
download_file(url)

在这个示例代码中,我们使用了urllib.parse.urlparse函数来解析URL,然后使用os.path.basename函数提取URL路径中的文件名。
然后,我们将文件保存到以文件名命名的文件路径中,并将其放在一个名为download的文件夹下。
请注意,使用这种方法来提取文件名并不总是可靠的,因为URL可能不包含文件扩展名,或者URL可能没有明确的文件名。在某些情况下,你可能需要进一步处理文件名以确保正确性。

注意:如果下载https链接并且对方的证书不是权威证书则会出现以下报错

requests.exceptions.SSLError: HTTPSConnectionPool(host='192.168.8.97', port=443): Max retries exceeded with url: /start_read_original.wav (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1002)')))

image
解决方法
在下载参数添加,参数verify=False

response = requests.get(url, stream=True,verify=False)

image

posted @ 2023-08-24 17:37  minseo  阅读(1140)  评论(0编辑  收藏  举报