使用Python的requests库下载文件

使用Python的requests库下载文件_第1张图片

使用Python的requests库下载文件是一种常见的操作。以下是一个示例代码,演示如何使用requests库下载文件:

1. 基本用法

在这个示例中,我们首先定义了文件的URL(file_url)和本地保存路径(local_file_path)。然后,我们使用requests.get方法发送HTTP GET请求以获取文件内容。接着,我们检查响应的状态码是否为200,如果是,则将下载的内容写入到本地文件中。

import requests

# 定义文件的URL和本地保存路径
file_url = 'https://example.com/sample.jpg'  # 替换为您要下载的文件的URL
local_file_path = 'sample.jpg'  # 替换为您希望保存文件的本地路径

try:
    # 发送HTTP GET请求以获取文件内容
    response = requests.get(file_url)

    # 检查响应状态码是否为200(表示成功)
    if response.status_code == 200:
        # 打开本地文件并保存下载内容
        with open(local_file_path, 'wb') as file:
            file.write(response.content)
        print("文件下载成功.")
    else:
        print("文件下载失败. 响应状态码:", response.status_code)
except Exception as e:
    print("下载文件时发生错误:", str(e))

请注意,您需要将file_url替换为您要下载的文件的实际URL,并将local_file_path替换为您希望保存文件的本地路径。这个示例可以用于下载任何类型的文件。

2. 调整网络代理下载文件

在这个示例中,添加了set_global_proxy函数,实现在切换网络代理的同时,下载文件。

import requests


def set_global_proxy(status='off'):
    """
    全局性的关闭或者启用系统代理。

    在访问 https 网站时,有时会发生 requests.exceptions.ProxyError 错误,
    这是因为 SSL 连接时可能出现问题。解决此问题的一种方法是使用 http 代理访问 https 网站。
    本函数提供了一种全局性的关闭或启用系统代理的方式。

    :param status:  'off', 关闭系统代理;
                    'on', 打开系统代理;
                    'toggle', 切换关闭或者打开状态;
    """
    from requests import sessions, utils

    init_func = sessions.get_environ_proxies

    if status == 'off':
        # 关闭系统代理
        if init_func.__name__ == '':
            # 已经替换了原始函数,即已经是关闭状态,无需设置
            return
        # 修改函数,将代理设置为空字典
        sessions.get_environ_proxies = lambda *x, **y: {}

    elif status == 'on':
        # 打开系统代理,如果设置了代理的话
        # 对高版本的 urllib3(>1.26.0) 打补丁,修正 https 代理 BUG: OSError: [Error 0] Error
        proxies = utils.getproxies()
        if 'https' in proxies:
            proxies['https'] = proxies.get('http')  # 使用 http 代理访问 https 网站
        sessions.get_environ_proxies = lambda *x, **y: proxies
        sessions.get_environ_proxies.__name__ = 'get_environ_proxies'

    else:
        # 切换开关状态
        if init_func.__name__ == '':
            # 已经是关闭状态,切换为打开状态
            set_global_proxy('on')
        else:
            # 已经是打开状态,切换为关闭状态
            set_global_proxy('off')
        return


def main():
    download_url = 'https://data.worldpop.org/GIS/Population/Global_2000_2020_1km/2000/ABW/abw_ppp_2000_1km_Aggregated.tif'
    # 判断是否下载时,需要网络代理
    set_global_proxy(status='on')
    response = requests.get(download_url)

    # 检查请求是否成功
    if response.status_code == 200:
        # 提取文件名(可以根据需求自定义文件名)
        file_name = 'download.tif'

        # 打开文件并保存下载内容
        with open(file_name, 'wb') as file:
            file.write(response.content)

        print(f"文件 '{file_name}' 下载成功.")
    else:
        print("文件下载失败.")


if __name__ == "__main__":
    main()

计算机术语/函数 解释/用法
requests 用于发送HTTP请求的Python库。
requests.get() 发送HTTP GET请求以获取指定URL的内容。
response 包含HTTP响应的对象,包括状态码和内容。
response.status_code HTTP响应的状态码,200表示成功。
open()函数 用于打开文件,并可以指定打开模式。
wb打开模式 以二进制写入模式打开文件,用于保存下载内容。
with语句 用于确保文件在使用后正确关闭。
file.write() 将数据写入文件。
response.content HTTP响应的内容,通常是二进制数据。

如果这对您有所帮助,希望点赞支持一下作者!

使用Python的requests库下载文件_第2张图片 使用Python的requests库下载文件_第3张图片 使用Python的requests库下载文件_第4张图片

点击查看原文

file

你可能感兴趣的:(python,python,数据库,开发语言)