本帖最后由 da11 于 2025-5-15 16:24 编辑
Python 下载URL图片到本地
# 直接上代码:
import requests
import os
from urllib.parse import unquote # 用于解码URL中的特殊字符
def download_image(url, save_dir="images", filename=None):
"""
根据URL下载图片到本地
:param url: 图片的完整URL
:param save_dir: 保存目录(默认当前目录下的images文件夹)
:param filename: 自定义文件名(默认从URL中提取)
:return: 成功返回保存路径,失败返回None
"""
try:
# 创建保存目录
os.makedirs(save_dir, exist_ok=True)
# 发送HTTP请求
response = requests.get(url, stream=True, timeout=10)
response.raise_for_status() # 如果状态码非200,抛出异常
# 提取文件名
if not filename:
# 从URL中解码并提取文件名(例如: → image.jpg)
filename = unquote(url).split('/')[-1].split('?')[0]
if not filename:
raise ValueError("无法从URL中提取文件名")
# 拼接保存路径(兼容Windows/Linux)
save_path = os.path.join(save_dir, filename)
# 保存图片(二进制写入)
with open(save_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f"图片已保存至:{save_path}")
return save_path
except Exception as e:
print(f"下载失败:{str(e)}")
return None
# 示例用法
img_save_path = download_image("https://www.baidu.com/test.png") # URL请替换为实际地址
|