使用Python的
requests
库下载文件是一种常见的操作。以下是一个示例代码,演示如何使用requests
库下载文件:
在这个示例中,我们首先定义了文件的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
替换为您希望保存文件的本地路径。这个示例可以用于下载任何类型的文件。
在这个示例中,添加了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响应的内容,通常是二进制数据。 |
如果这对您有所帮助,希望点赞支持一下作者!
点击查看原文