影刀RPA实战教程:手把手教你搭建电商商品数据采集机器人
影刀RPA实战教程:手把手教你搭建电商商品数据采集机器人
作者:林焱
前言:为什么要学电商数据采集?
在电商运营工作中,你是否经常面临这样的困境:
- 竞品的价格每天都在变,人工跟踪根本跟不上节奏?
- 想要分析某个品类的市场行情,却要一个个网站去复制粘贴?
- 需要监控自家商品在各平台的排名和评分,耗费大量人力?
- 上级要求一份详细的竞品分析报告,时间只有一天?
这些问题,用影刀RPA搭建一个数据采集机器人就可以完美解决。今天这篇文章,我就以淘宝/天猫商品数据采集为例,手把手教你从零搭建一个完整的电商数据采集系统。
读完这篇文章,你将学会:
- 如何分析目标网页结构
- 如何设计可扩展的数据采集流程
- 如何处理分页、动态加载等常见难点
- 如何将采集数据自动存入Excel并生成统计报表
第一步:需求分析与方案设计

1.1 明确采集目标
在开始之前,我们需要先明确几个关键问题:
我们要采集什么数据?
| 字段名 | 字段说明 | 数据来源 |
|---|---|---|
| 商品ID | 商品的唯一标识符 | URL或页面元素 |
| 商品名称 | 商品标题 | 标题区域 |
| 商品价格 | 当前售价 | 价格区域 |
| 月销量 | 近30天销量数据 | 销量标签 |
| 店铺名称 | 卖家店铺名 | 店铺信息区 |
| 商品评分 | 用户综合评分 | 评分区域 |
| 商品链接 | 详情页URL | 当前页面地址 |
采集范围是什么?
- 目标平台:淘宝/天猫(以淘宝为例)
- 搜索关键词:由用户自行设定(本例以"无线耳机"为例)
- 采集页数:前5页(约100个商品)
- 运行频率:每天定时运行一次
1.2 技术方案选型
针对淘宝这种大型电商网站的数据采集,我们需要考虑以下几点:
技术挑战:
- 反爬机制:淘宝有较为严格的反爬虫策略,包括登录检测、访问频率限制、验证码拦截等
- 动态加载:商品列表通常是JavaScript动态渲染的,需要等待JS执行完成
- 数据分散:部分详细信息需要进入商品详情页才能获取
- 结构变化:页面布局可能随时调整,选择器容易失效
解决方案:

┌────────────────────────────────────────────────┐
│ 采集方案架构 │
├────────────────────────────────────────────────┤
│ │
│ 浏览器自动化层 │
│ ├── 使用影刀内置浏览器(自带反检测能力) │
│ ├── 模拟真实用户操作行为 │
│ └── 随机化操作间隔 │
│ │
│ 数据提取层 │
│ ├── 元素捕获 + XPath/选择器 │
│ ├── OCR兜底(元素捕获失败时启用) │
│ └── 数据清洗与校验 │
│ │
│ 存储层 │
│ ├── Excel实时写入 │
│ └── 数据完整性校验 │
│ │
│ 可靠性保障层 │
│ ├── Try-Catch异常处理 │
│ ├── 自动重试机制 │
│ └── 断点续传支持 │
│ │
└────────────────────────────────────────────────┘
第二步:环境准备与前置配置
2.1 影刀RPA环境检查
确保你的影刀RPA满足以下条件:
- 版本要求:建议使用最新稳定版(新版本对主流网站的兼容性更好)
- 浏览器组件:确认Chrome内核组件已正确安装
- 账号状态:确保影刀账号已登录且服务可用
- 存储空间:预留足够的磁盘空间存放采集数据和日志
2.2 创建项目结构
新建一个影刀项目,建议按以下结构组织:
店群矩阵自动化突破运营极限!
电商数据采集项目/
├── main.flow # 主流程(入口)
├── config.flow # 参数配置(关键词、页数等)
├── collect_page.flow # 单页数据采集子流程
├── save_data.flow # 数据存储子流程
├── notify.flow # 通知发送子流程
└── utils/ # 工具模块
├── retry.flow # 重试逻辑
└── clean_data.flow # 数据清洗
2.3 全局变量定义

在主流程中定义以下全局变量,方便各子流程共享:
全局变量:
searchKeyword: "无线耳机" # 搜索关键词
maxPages: 5 # 最大采集页数
outputFilePath: "D:/data/商品采集结果.xlsx" # 输出文件路径
currentPage: 1 # 当前页码
totalCount: 0 # 已采集总数
errorCount: 0 # 错误计数
dataList: [] # 采集到的数据列表
第三步:搭建主流程框架
3.1 主流程设计
主流程负责整体的编排协调,核心逻辑如下:
开始
│
▼
【初始化阶段】
├── 读取配置参数
├── 创建/初始化输出Excel文件
├── 写入表头(商品ID、名称、价格...)
└── 初始化计数器和日志
│
▼
【主循环:逐页采集】
┌─ For currentPage 从 1 到 maxPages ─┐
│ │
│ 【打开搜索结果页】 │
│ ├── 构造搜索URL │
│ ├── 打开浏览器导航到该URL │
│ └── 等待页面完全加载 │
│ │
│ 【调用单页采集子流程】 │
│ ├── collect_page.flow(currentPage) │
│ └── 返回本页采集的数据条数 │
│ │
│ 【翻页处理】 │
│ ├── 判断是否有下一页 │
│ ├── 如果有 → 点击"下一页"按钮 │
│ └── 如果没有 → 退出循环 │
│ │
└──────────────────────────────────────┘
│
▼
【收尾阶段】
├── 保存并关闭Excel文件
├── 生成采集统计摘要
├── 发送完成通知(邮件/消息)
└── 输出最终报告
│
▼
结束
3.2 关键指令详解
指令1:打开浏览器并导航
指令名称:打开网页
参数设置:
URL: "https://s.taobao.com/search?q={searchKeyword}&s={(currentPage-1)*44}"
浏览器类型: Chrome
超时时间: 30秒
等待策略: 等待DOM加载完成
这里的关键点是URL中的参数构造:
q参数:搜索关键词(需要进行URL编码)s参数:偏移量,淘宝每页44个商品,所以第N页的偏移量为(N-1)*44
指令2:智能等待页面加载
指令名称:等待元素出现
目标选择器: 商品列表容器(如 div.items .item)
超时时间: 20秒
轮询间隔: 500毫秒
失败处理: 超时报错(触发重试)
不要使用固定的"等待N秒"指令,因为网络状况不同,固定等待要么浪费时间(网络快时),要么不够(网络慢时)。等待特定元素出现才是最佳实践。
第四步:单页数据采集——核心逻辑实现
这是整个项目最核心的部分。我们需要从当前页面中提取所有商品的各项字段信息。
4.1 页面结构分析
在编写采集逻辑之前,先用浏览器开发者工具(F12)分析一下淘宝搜索结果页的DOM结构:
div.J_MouserOnverReq (每个商品的容器)
├── div.productTitle a → 商品名称 + 链接
├── div.price g_price → 商品价格
├── div.deal-cnt → 月销量(如"月销 1000+")
├── div.shopName a → 店铺名称
└── div.rate-star → 评分信息
注:淘宝页面结构会不定期更新,以上仅供参考,实际使用时请以当前页面为准。
4.2 采集子流程详细设计

collect_page.flow 子流程:
输入参数:pageUrl(当前页URL)、pageIndex(页码索引)
输出参数:pageDataList(本页采集的数据列表)、 itemCount(本页条数)
━━━ 步骤1:获取当前页所有商品容器 ━━━
指令:获取匹配元素集合
选择器: "div.J_MouserOnverReq"
结果存入: itemElements (List)
如果 itemElements.Count == 0:
日志警告("第" + pageIndex + "页:未找到商品元素")
返回空列表
━━━ 步骤2:遍历每个商品容器提取数据 ━━━
ForEach itemElement in itemElements:
尝试:
① 提取商品名称
nameElement = itemElement.FindFirst("div.productTitle a")
商品名称 = nameElement.GetText().Trim()
商品链接 = nameElement.GetAttribute("href")
② 提取商品价格
priceElement = itemElement.FindFirst("div.price")
商品价格 = priceElement.GetText()
// 清理价格文本,去掉"¥"符号等
③ 提取月销量
salesElement = itemElement.FindFirst("div.deal-cnt")
if salesElement != null:
月销量文本 = salesElement.GetText()
// 解析数字:从"月销 1000+"中提取1000
else:
月销量 = 0
④ 提取店铺名称
shopElement = itemElement.FindFirst("div.shopName a")
店铺名称 = shopElement?.GetText() ?? "未知店铺"
⑤ 组装数据对象
dataItem = {
"序号": totalCount + 1,
"商品名称": 商品名称,
"商品价格": 商品价格,
"月销量": 月销量,
"店铺名称": 店铺名称,
"商品链接": 商品链接,
"采集时间": DateTime.Now.ToString()
}
⑥ 加入结果列表
pageDataList.Add(dataItem)
totalCount += 1
捕获异常 e:
errorCount += 1
日志错误("提取第" + totalCount + "条数据失败: " + e.Message)
// 继续处理下一条,不中断整页采集
结束 ForEach
━━━ 步骤3:返回结果 ━━━
返回 pageDataList, pageDataList.Count
4.3 数据清洗技巧
从网页上直接提取的原始数据往往包含大量"脏数据",需要在采集过程中或采集完成后进行清洗:
常见脏数据类型及处理方法:
1. 价格文本清理
原始: "¥299.00-¥599.00" 或 "¥299"
处理: 取最低价,去掉¥符号,转为数值类型
表达式: Regex.Match(priceText, "[\d.]+").ToDecimal()
2. 销量文本解析
原始: "月销 1000+" 或 "200+人付款"
处理: 用正则提取数字部分
表达式: Regex.Replace(salesText, "[^0-9]", "").ToInt()
3. 文本去空白
原始: " 无线蓝牙耳机 降噪 "
处理: Trim() 去除首尾空格
4. 特殊字符过滤
原始: 包含\t\n\r等不可见字符
处理: 替换为空字符串
第五步:Excel自动存储与报表生成
采集到的数据需要妥善存储和管理。影刀RPA提供了非常强大的Excel操作指令集。
5.1 Excel写入策略
策略选择:逐条追加 vs 批量写入
| 方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 逐条追加 | 实时性好,中途崩溃不丢数据 | 性能较低 | 大规模长时间采集 |
![]() |
| 批量写入 | 性能高,速度快 | 中途崩溃丢失当前页数据 | 小规模快速采集 |
推荐方案:结合两者的优点——每采完一页批量写入一次Excel,这样既保证了较好的性能,又不会因为意外丢失过多数据。
5.2 Excel操作实现
━━━ 初始化Excel文件(主流程开始时执行一次)━━━
指令:创建/打开Excel文件
文件路径: outputFilePath
如果文件已存在: 打开(追加模式)
如果文件不存在: 创建新文件
指令:写入表头
目标单元格: A1
数据: ["序号", "商品名称", "商品价格", "月销量",
"店铺名称", "商品链接", "采集时间"]
指令:设置表头样式
字体加粗: true
背景色: 浅蓝色
边框: 全边框
━━━ 每页采集完成后追加数据(循环中执行)━━━
指令:追加写入数据
起始行: lastRow + 1
数据源: pageDataList(本页数据列表)
列映射: 按顺序对应各字段
指令:自动调整列宽
范围: 所有数据列
━━━ 最终保存(全部采集完成后执行)━━━
指令:保存Excel文件
指令:关闭Excel对象(释放资源)
5.3 自动生成统计报表
采集完成后,自动生成一份简洁的统计摘要:
统计指标计算:
1. 总采集数量: totalCount
2. 平均价格: 所有商品价格的算术平均值
3. 最高价商品: 按价格降序排列取第一条
4. 最低价商品: 按价格升序排列取第一条
5. 价格区间分布:
- 0-50元: count1 个
- 51-100元: count2 个
- 101-300元: count3 个
- 301元以上: count4 个
6. 采集成功率: (totalCount / (totalCount + errorCount)) * 100%
7. 采集总耗时: 结束时间 - 开始时间
将这些统计数据写入一个新的Sheet页,或者单独生成一份汇总报告。
第六步:可靠性保障——异常处理与重试机制
一个能在生产环境中长期稳定运行的采集流程,必须具备完善的可靠性保障机制。
6.1 分层异常处理体系

第一层:指令级别(细粒度)
└── 单条数据提取失败 → 跳过这条,记录日志,继续下一条
第二层:页面级别(中粒度)
└── 整页采集失败 → 重试3次,仍失败则跳过此页,记录错误
第三层:流程级别(粗粒度)
└── 整个流程严重故障 → 保存已采集数据,发送告警通知
6.2 重试机制实现
通用重试子流程 (retry.flow):
输入参数:
action: 要重试的操作(可以是子流程引用)
maxRetryCount: 最大重试次数(默认3次)
retryInterval: 重试间隔秒数(默认5秒)
输出参数:
success: 是否最终成功
result: 操作结果
attempts: 实际尝试次数
━━━ 实现 ━━━
attempts = 0
success = false
While attempts < maxRetryCount:
attempts += 1
尝试:
result = 执行 action
success = true
Break(跳出循环)
捕获异常:
If attempts < maxRetryCount:
等待(retryInterval 秒)
日志信息("第" + attempts + "次重试...")
Else:
日志错误("已达最大重试次数,操作失败")
返回 success, result, attempts
6.3 常见异常场景处理清单
| 场景 | 触发条件 | 处理方式 |
|---|---|---|
| 页面加载超时 | 网络波动/服务器繁忙 | 刷新页面后重试,超过3次则跳过 |
| 元素找不到 | 页面改版/加载不全 | 切换备用选择器,或使用OCR兜底 |
| 登态过期 | 跳转到登录页 | 自动重新登录后回到原流程 |
| 验证码弹出 | 触发反爬机制 | 使用影刀OCR/CV能力自动处理 |
| 数据为空 | 商品下架/信息缺失 | 记录空值标记,不影响其他数据 |
| IP被封 | 请求频率过高 | 降低频率,更换IP,或暂停运行 |
第七步:定时调度与自动化运维
手工每天运行一次流程还不够"自动化"。利用影刀的定时任务功能,可以实现真正的无人值守全自动运行。
7.1 定时任务配置
temu店群自动化报活动案例

在影刀RPA中设置定时任务:
任务名称: 淘宝商品数据-每日自动采集
执行流程: main.flow
调度规则:
└─ Cron表达式: "0 0 8 * * ?"
(每天早上8点执行)
运行选项:
后台运行: 是(不影响正常使用电脑)
出错重试: 是(最多重试2次)
截图留存: 是(出错时自动截图便于排查)
通知设置:
任务开始: 发送消息通知
任务完成: 发送包含统计结果的报告
任务失败: 发送告警消息(含错误日志)
7.2 运行监控与日志管理
日志分级记录:
[INFO] 2024-06-01 08:00:01 任务开始执行
[INFO] 2024-06-01 08:00:03 打开第1页搜索结果...
[INFO] 2024-06-01 08:00:15 第1页采集完成,共44条数据
[WARN] 2024-06-01 08:01:02 第3页第17条数据提取失败:元素未找到
[ERROR] 2024-06-01 08:02:30 第4页加载超时,正在重试(1/3)
[INFO] 2024-06-01 08:05:22 全部采集完成!共采集215条数据,3条失败
[INFO] 2024-06-01 08:05:25 Excel文件已保存
[INFO] 2024-06-01 08:05:26 通知邮件已发送
7.3 数据管理建议
随着每日采集数据的累积,需要注意数据的管理:
数据存储建议:
1. 按日期命名文件
格式: 商品采集_无线耳机_20240601.xlsx
好处: 方便追溯历史数据
2. 定期归档
每月底将当月的采集数据打包归档
只保留最近3个月的原始数据在活动目录
3. 增量对比
新采集的数据与上一次的结果进行对比
自动标记价格变动、新品上架、下架商品等信息
4. 数据备份
重要数据定期备份到云盘或异地存储
第八步:完整效果展示与扩展方向
8.1 最终成果

经过以上步骤,我们得到的是一个完整的电商数据采集系统,具备以下能力:
- ✅ 每天早上8点自动运行,无需人工干预
- ✅ 自动采集指定关键词的前5页商品信息(约200+条)
- ✅ 采集数据实时写入Excel,附带完整的时间戳
- ✅ 自动生成统计报表(平均价、价格分布、TOP商品等)
- ✅ 采集完成后发送邮件通知,附上数据摘要
- ✅ 遇到异常自动重试,保证高可用性
- ✅ 完整的运行日志,便于排查问题
8.2 扩展方向
基于当前的系统框架,还可以进一步扩展:
扩展1:多平台采集
同时采集淘宝、京东、拼多多、苏宁等多平台数据
→ 统一数据格式,生成跨平台比价报告
扩展2:价格变动监控
每天对比前后两天的价格数据
→ 自动标记涨价/降价商品
→ 价格变动超过阈值时发送即时告警
扩展3:AI辅助分析
接入影刀的大模型能力
→ 自动生成商品分析摘要
→ 智能推荐热门趋势
→ 生成竞品分析报告
扩展4:可视化仪表盘
结合BI工具或自建Dashboard
→ 实时展示市场行情走势
→ 交互式的数据筛选和分析
总结
这篇文章我们以淘宝商品数据采集为例,完整地展示了如何用影刀RPA从零搭建一个实用的电商数据采集机器人。回顾一下关键知识点:
| 阶段 | 核心要点 |
|---|---|
| 需求分析 | 明确采集什么、从哪采、怎么用 |
| 方案设计 | 分层架构:浏览器→提取→存储→可靠性 |
| 流程搭建 | 主循环+子流程的模式,职责清晰 |
| 数据采集 | 选择器+XPath+OCR兜底的多重策略 |
| 数据存储 | 分页追加写入Excel,兼顾性能和安全 |
| 可靠性 | 三层异常处理+自动重试机制 |
| 定时运行 | Cron调度+通知+日志=无人值守 |
| 扩展延伸 | 多平台、价格监控、AI分析、可视化 |
最重要的一点:技术本身不难,难的是耐心和细致。从分析网页结构到调试每一个选择器,从处理各种边界情况到优化运行效率,这些都是需要反复实践才能积累的经验。
希望这篇文章能给你提供一个完整的参考框架。接下来,找一个你关心的电商品类,动手搭建属于你自己的数据采集机器人吧!
本文由林焱原创,转载请注明出处。更多影刀RPA实战教程,敬请关注!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐




所有评论(0)