Day10:批量下载文件:一键下载网页上的所有图片和文档
网页上有十几张想要的图片,或者好几个PDF文档需要保存。右键另存为,一个一个点,手都酸了,还容易漏。
今天用AI写个小工具,把这些重复劳动全自动化。
场景:真实的痛点
上周从产品官网下载30多张产品图。右键、另存为、选文件夹、确定,重复30多次。每张图还要手动改名字,不然全是 “product-1.jpg”、”product-2.jpg” 这种随机字符。
有些图片点开是大图,有些是缩略图,得逐个点进去确认。花了快40分钟。
这种重复劳动,不该交给程序吗?
解决思路
“我不会写代码。”
没关系,有AI。描述清楚需求,AI生成代码。
思路:
-
告诉AI要下载什么类型的文件(图片、PDF、文档等) -
AI生成Python脚本 -
运行脚本,自动下载
你只需要复制粘贴代码,然后运行。
实操步骤
第一步:准备环境
安装Python(没有的话)。去Python官网下载安装包,一路下一步。安装时勾选 “Add Python to PATH”,命令行就能直接用了。
第二步:向AI描述需求
打开AI工具(ChatGPT、Claude、Gemini都行),输入需求:
我需要一个批量下载工具。网页地址是:https://example.com/products[1]
请帮我:
找出这个页面上所有的图片链接 自动下载所有图片到指定文件夹 用图片的alt文字或标题作为文件名 显示下载进度 请用Python写,使用requests和BeautifulSoup库。
AI会生成代码,大概长这样:
import requests
from bs4 import BeautifulSoup
import os
from urllib.parse import urljoin
def download_images(url, folder='downloads'):
# 创建下载文件夹
if not os.path.exists(folder):
os.makedirs(folder)
# 获取网页内容
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 找到所有图片
images = soup.find_all('img')
for i, img in enumerate(images):
img_url = img.get('src')
if not img_url:
continue
# 处理相对路径
img_url = urljoin(url, img_url)
# 获取文件名
filename = img.get('alt', f'image_{i}')
filename = f"{filename}.jpg".replace('/', '_')
# 下载图片
print(f"正在下载: {filename}")
img_data = requests.get(img_url).content
with open(os.path.join(folder, filename), 'wb') as f:
f.write(img_data)
print(f"完成!共下载 {len(images)} 张图片")
# 使用方法
download_images('https://example.com/products')
第三步:运行脚本
把代码保存成 downloader.py,打开命令行,输入:
python downloader.py
脚本开始工作。一行行 “正在下载…” 的提示,几秒钟后,所有图片都躺在文件夹里了。
第四步:按需调整
需求比较特殊?继续问AI:
-
“我想只下载大于500KB的图片” -
“我想下载PDF文档而不是图片” -
“网页需要登录才能访问,怎么办?”
AI会修改代码。复制新代码,替换旧的。
效果展示
用这个方法下载了博客网站的50张配图。原本要点50次右键、选50次文件夹、确认50次,至少20分钟。运行脚本,5秒搞定。
脚本自动处理:
-
给文件起有意义的名字(不再是一串随机字符) -
跳过重复图片 -
保留原始文件格式 -
显示下载进度
脚本可以反复使用。下次遇到类似下载需求,改一下URL就能用。
延伸应用
学会思路,能做的事远不止下载图片:
批量下载PDF文档
把代码里的 img 换成 a 标签,筛选 .pdf 结尾的链接。
下载整个网页的素材
图片、CSS样式表、JavaScript文件,甚至整站克隆。
定时自动下载
配合Windows任务计划程序或Mac的crontab,定时运行脚本。每天自动下载某个网站更新的内容。
批量重命名
下载完,用Python的 os.rename() 批量改名字,比如加日期前缀。
核心要点
-
重复劳动交给程序,不要手动硬扛 -
不需要会写代码,AI写,你运行 -
描述需求要具体:什么网站、什么文件、存到哪、命名规则 -
脚本写好一次,反复用 -
遇到问题继续问AI,让它调整代码
那些机械重复的下载工作可以全自动化了。时间应该花在更有价值的事情上。
夜雨聆风