影刀RPA图片批量下载实战:从网页抓图到本地保存全流程
作者:林焱
批量下载图片是很多运营同学的高频需求:竞品图片采集、商品主图备份、素材库建设……这类任务人工下载一张一张太费时,用影刀跑一个流程几分钟搞定几百张。
这篇把几种常见的图片下载场景和踩坑都整理出来。
一、图片下载的两种模式
模式一:从网页元素获取图片URL,再下载
适合:商品列表页、图片相册类网站。先抓图片的src属性,拿到 URL,然后逐个下载。
模式二:直接截图
适合:网页内容不允许直接提取 URL、或者要保存页面截图。用影刀截图指令保存当前页面或指定区域。
本篇主要讲模式一,模式二在"截图与OCR"篇有详细介绍。
二、方法一:获取图片URL再下载
步骤1:获取图片元素的src属性
先在网页上捕获图片元素,然后读取其src属性。
操作路径:指令库 → 网页操作 → 获取元素属性
参数:
店群矩阵自动化突破运营极限!
- 元素:已捕获的图片元素
- 属性名:
src
输出:图片的完整URL(或相对URL)
踩坑一:有些网站用懒加载,图片真实URL存在data-src而不是src。如果src返回的是一个loading占位图URL,改取data-src。
踩坑二:有些返回的是相对路径如/images/product.jpg,需要手动拼接成完整URL:https://域名.com+ 相对路径。
步骤2:下载图片到本地
操作路径:指令库 → 文件操作 → 下载文件
参数:
- URL:图片完整URL
- 保存路径:本地保存的文件夹路径(要提前创建好)
- 文件名:保存的文件名(含扩展名,如
商品001.jpg)
踩坑:保存路径末尾要用\结尾(Windows),路径里不能有特殊字符。
三、方法二:批量获取所有图片
如果一个页面上有很多图片(比如商品列表),用"获取元素集合"批量拿到所有图片元素,再循环处理。
// 1. 获取页面所有产品图片 图片元素列表 = 获取元素集合(CSS选择器: ".product-img img") // 2. 初始化计数器 序号 = 1 // 3. 循环下载 ForEach 图片元素 in 图片元素列表: 图片URL = 获取元素属性(图片元素, "src") // 4. 生成文件名 文件名 = "商品_" + 数字转文本(序号) + ".jpg" // 5. 下载 下载文件(图片URL, "D:\商品图片\", 文件名) 序号 = 序号 + 1 等待(500毫秒) // 防止下载太快被封四、文件命名策略
不要全部用001.jpg、002.jpg这种无意义的命名,后续找图很麻烦。
推荐方案:商品名 + 序号
文件名 = 商品名称 + "_" + 数字转文本(序号) + ".jpg" // 苹果iPhone15_001.jpg注意:商品名称里可能含有特殊字符(/、:、*等),这些字符在 Windows 文件名里是非法的。用替换指令把非法字符替换成-或_:
安全文件名 = 替换文本(商品名称, "/", "-") 安全文件名 = 替换文本(安全文件名, ":", "-") 安全文件名 = 替换文本(安全文件名, "*", "") // 可以用Python扩展一次性处理所有非法字符五、处理翻页批量下载
一页只有20张图,要下载10页共200张。
总页数 = 10 当前页 = 1 循环 当前页 <= 总页数: // 处理当前页所有图片 图片列表 = 获取页面所有图片() ForEach 图片 in 图片列表: 下载图片(图片URL, 生成文件名()) // 翻到下一页 如果 当前页 < 总页数: 点击"下一页"按钮 等待页面加载(2秒) 当前页 = 当前页 + 1六、创建分类文件夹
大量图片建议按分类存放,不要全堆在一起。
操作路径:指令库 → 文件操作 → 新建文件夹
参数:文件夹路径
判断文件夹是否已存在,不存在再创建:
目标文件夹 = "D:\商品图片\" + 商品分类 如果 非 文件夹是否存在(目标文件夹): 新建文件夹(目标文件夹) 下载文件(图片URL, 目标文件夹 + "\", 文件名)七、跳过已下载图片(断点续传)
temu店群自动化报活动案例
流程中途失败再跑,不想重复下载已有文件:
目标路径 = 保存文件夹 + "\" + 文件名 如果 非 文件是否存在(目标路径): 下载文件(图片URL, 保存文件夹, 文件名) 记录日志("已下载:" + 文件名) 否则: 记录日志("跳过(已存在):" + 文件名)八、下载失败处理
网络波动、URL失效都会导致下载失败,加错误处理避免整个流程崩掉:
尝试: 下载文件(图片URL, 保存路径, 文件名) 捕获异常 e: 失败记录 = 图片URL + " | 原因:" + e.message 添加到末尾(失败列表, 失败记录) 记录日志("下载失败:" + 图片URL)流程结束后再单独处理失败列表。
九、图片格式处理
有些网站图片URL末尾没有扩展名,或者格式是 webp,需要处理:
判断图片格式:
如果 图片URL包含(".jpg") 或 图片URL包含(".jpeg"): 扩展名 = ".jpg" 否则如果 图片URL包含(".png"): 扩展名 = ".png" 否则如果 图片URL包含(".webp"): 扩展名 = ".webp" 否则: 扩展名 = ".jpg" // 默认用jpg十、实战:京东商品主图批量下载
- 打开京东搜索页,搜索目标商品
- 获取所有商品卡片中的主图元素(CSS:
.p-img img) - 获取每个图片的
src属性 - 注意:京东图片URL有时以
//开头,需要加上https:前缀 - 获取同一卡片中商品名称,用于命名
- 下载到指定目录
- 翻页继续(最多5页)
京东图片踩坑:
- 图片URL是
//img10.360buyimg.com/...,前面加https:才能访问 - 部分图片是懒加载,需要滚动到元素可见后再取
src
这套流程走一遍,几百张图片自动到位,不用手动右键另存为了。
作者:林焱