欢迎访问宙启技术站
智能推送

如何通过download()函数在Python中下载网络资源

发布时间:2024-01-16 09:21:43

在Python中,可以使用requests库的get()函数来下载网络资源。这个函数会发送一个HTTP GET请求,并返回响应的内容。

首先,需要安装requests库。可以使用以下命令在终端中安装它:

pip install requests

然后,导入requests库并使用get()函数下载网络资源。以下是一个使用get()函数下载文件并保存到本地的示例:

import requests

def download(url, save_path):
    # 发送GET请求并获取响应
    response = requests.get(url, stream=True)

    # 获取文件的总大小
    total_size = int(response.headers.get('content-length', 0))
    print(f"Downloading {url} ...")

    # 每次读取的块大小
    chunk_size = 1024

    # 下载进度
    progress = 0

    with open(save_path, 'wb') as file:
        for data in response.iter_content(chunk_size=chunk_size):
            # 写入文件
            file.write(data)

            # 更新下载进度
            progress += len(data)
            percentage = progress * 100 / total_size
            print(f"Downloaded {progress}/{total_size} bytes ({percentage:.2f}%)", end='\r')

    print(f"
Download completed: {save_path}")

# 要下载的资源URL
url = "http://example.com/file.txt"

# 保存的文件路径
save_path = "file.txt"

# 调用download()函数下载文件
download(url, save_path)

在这个例子中,download()函数接收两个参数:资源的URL和要保存的文件路径。它使用requests.get()函数来获取网络资源的响应。stream=True参数表示要以流的方式读取响应。

然后,函数获取文件的总大小,并设置每次读取的块大小。它使用response.iter_content()方法迭代地读取响应内容,并将数据写入文件。同时,它会根据下载进度更新并显示进度条。

最后,函数会在下载完成后打印出保存文件的路径。

需要注意的是,使用requests.get()函数下载大文件时,可以使用流的方式读取响应,并分块保存,以节省内存。这个例子中使用的stream=True参数就是实现这个功能的。