引言
设计师小李每天都要从 Unsplash、Pinterest 等站点收集灵感图。手动"右键-另存为"不仅慢,而且容易重名、格式混乱。他想要一个能自动识别图片格式、按顺序编号保存的小工具。于是,这个 30 行不到的 main.py
成为他的"效率神器":只需把图片 URL 复制进去,回车即可自动保存到脚本所在目录,再也不用手动整理。
代码解析说明(附源码)
python
import requests
from PIL import Image
from io import BytesIO
import os
download_path = os.path.dirname(os.path.abspath(__file__)) # 当前脚本所在目录
count = 1 # 自动编号起始值
while True: # 持续交互
url = input("Enter Image URL: ")
try:
res = requests.get(url, timeout=10)
res.raise_for_status() # 检查 404/500
except Exception as e:
print("Invalid URL / Can't Access The URL", e)
continue
img = Image.open(BytesIO(res.content)) # 内存解码图片
fmt = img.format or 'JPEG' # 兜底格式
file_name = f"{count}.{fmt.lower()}"
save_path = os.path.join(download_path, file_name)
img.save(save_path, format=fmt.upper()) # 按原始格式保存
print(f"Image Downloaded: {save_path}")
count += 1 # 递增编号
要点解析
- requests:下载二进制流,支持 HTTPS、重定向、超时控制。
- PIL.Image:自动识别图片真实格式(PNG/JPEG/WebP 等)。
- os.path.abspath(file):跨平台获取脚本目录,无需手动配置路径。
- 异常捕获:网络异常或格式错误不会导致程序崩溃,体验友好。
可扩展的两个场景
a. 批量壁纸爬虫
把 while True
改为读取文本文件 URL 列表,即可一次性爬取并编号保存 1000 张壁纸。
b. 电商 SKU 图片同步
结合正则解析商品详情页中的所有 <img>
标签,自动下载并命名为商品 ID,提高商品上新效率。
总结
这段不到 30 行的 Python 脚本结合了 requests 的高速下载和 PIL 的格式识别能力,实现了"极简、零配置"的在线图片下载器。无论是设计师、运营还是爬虫开发者,都能在此基础上快速扩展,满足壁纸收集、商品图同步、训练数据抓取等多场景需求,真正做到"复制-回车-完成"。
源码获取
完整代码已开源,包含详细的注释文档:
🔗 [GitCode仓库] https://gitcode.com/laonong-1024/python-automation-scripts
📥 [备用下载] https://pan.quark.cn/s/654cf649e5a6 提取码:f5VG