【python实用小脚本-139】Python 在线图片批量下载器:requests+PIL 一键保存网络图像

引言

设计师小李每天都要从 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

相关推荐
en.en..3 分钟前
TCP/UDP 收发流程(网络字节序---函数讲解)
开发语言·php
宸津-代码粉碎机10 分钟前
Spring AI 高危CVE漏洞深度复盘|生产禁跑版本汇总+临时防御+修复方案
java·大数据·人工智能·python·spring
en.en..24 分钟前
TCP/IP四层模型「数据包封装与拆包」| 网络传输
服务器·网络·php
Roadinforest37 分钟前
NoSQL的最终一致性:真的可靠吗?
数据库·nosql
敲代码的嘎仔38 分钟前
用 Redis 合并写 + DelayQueue 延迟检测,把视频播放进度写库频率降到 1/60
java·开发语言·数据库·redis·缓存·音视频·高并发
承渊政道1 小时前
Python IDLE鸿蒙PC适配全记录:用 ArkUI 重建编辑、运行、Shell 与基础调试闭环
python·microsoft·harmonyos·鸿蒙系统·pc端
zjh9005301 小时前
Kotlin黑科技:空安全与Java兼容性深度解析
python
黄昏恋慕黎明1 小时前
博客论坛技术迭代
python·pytest
我叫汪枫1 小时前
RAG 进阶:切分、检索、重排序,以及它和 Agent、微调、MCP 都是什么关系
开发语言·python
承渊政道1 小时前
PostgreSQL 鸿蒙 PC 适配全记录:从原生交叉编译到 HNP 数据库服务闭环
数据库·postgresql·harmonyos·鸿蒙系统·pc端