前面十几篇文章分别讲了Excel操作、循环指令、子流程设计、异常处理、飞书通知、定时任务——每个知识点单独看都挺好,但你是不是还在发愁:怎么把这些东西串起来,做一个真正能每天自动跑的完整系统?
比如每天早上9点,自动采集拼多多/淘宝/抖音三个平台的数据,清洗完汇总成一张日报表,然后自动发到飞书群里——全程不用人盯着。这才叫自动化,不是跑一个流程就完事。
今天这篇实操指南,不讲单个知识点,直接从需求出发,从0到1搭建一个电商数据日报自动化系统。把前面所有技能串起来,做一个真正能每天自动运行的完整项目。
一、日报系统的整体设计
先搞清楚这个系统要做什么,再想怎么做。
需求描述:
每天早上8点,自动采集3个平台(拼多多、淘宝、抖音)各10个关键词的TOP商品数据,清洗后汇总成一张日报表,9点前发送到飞书群。
系统拆解:
| 模块 | 职责 | 关键技术点 |
|---|
| A_调度模块 | 定时触发整个流程 | 定时触发器 / Windows计划任务 |
| B_数据采集模块 | 从各平台采集原始数据 | 网页自动化、循环、翻页 |
| C_数据清洗模块 | 清洗原始数据成标准格式 | Python代码指令、正则 |
| D_汇总报表模块 | 合并多平台数据生成日报 | Excel操作 |
| E_通知模块 | 发送日报到飞书 | 飞书群通知 |
文件结构:
D:/RPA_DailyReport/

├── 01_输入/
│ └── 关键词列表.xlsx # 要监控的关键词
├── 02_输出/
│ ├── 拼多多_原始数据.xlsx # 各平台原始采集结果
│ ├── 淘宝_原始数据.xlsx

│ ├── 抖音_原始数据.xlsx
│ └── 日报汇总.xlsx # 最终日报
├── 03_日志/
│ ├── 运行日志_20260106.log
│ └── 错误截图/ # 出错时自动截图

└── 主流程.flow # 影刀主流程
二、第1阶段:Excel关键词读取
系统第一步是读取要监控的关键词列表。这个Excel由运营手动维护,每天加新词或删旧词。
关键词列表.xlsx结构:
| 序号 | 关键词 | 平台 | 优先级 |
|---|---|---|---|
| 1 | 无线耳机 | 拼多多 | A |
| 2 | 蓝牙耳机 | 淘宝 | A |
| 3 | 运动耳机 | 抖音 | B |
| ... | ... | ... | ... |
影刀流程代码:
# 影刀RPA - 阶段A:读取关键词列表
# 1. 启动Excel
启动Excel("D:/RPA_DailyReport/01_输入/关键词列表.xlsx", 可见=否) → excel对象
# 2. 读取列数据
读取列数据到列表(excel对象, 列号=2) → 关键词列表 # B列
读取列数据到列表(excel对象, 列号=3) → 平台列表 # C列

# 3. 按平台分组(便于后续批量采集)
# 拼多多关键词
筛选列表(关键词列表, 平台列表 == "拼多多") → 拼多多关键词
# 淘宝关键词
筛选列表(关键词列表, 平台列表 == "淘宝") → 淘宝关键词
# 抖音关键词
筛选列表(关键词列表, 平台列表 == "抖音") → 抖音关键词
# 4. 关闭Excel
关闭Excel(excel对象)
三、第2阶段:多平台数据采集
核心采集逻辑。影刀RPA的并行执行指令可以同时跑多个平台,大幅提升采集效率。
# 影刀RPA - 阶段B:并行采集多平台数据
# 并行执行三个平台的采集任务
并行执行
分支1:调用子流程(采集拼多多数据, 输入={关键词列表: 拼多多关键词})
分支2:调用子流程(采集淘宝数据, 输入={关键词列表: 淘宝关键词})
分支3:调用子流程(采集抖音数据, 输入={关键词列表: 抖音关键词})
结束并行
# 三个平台同时采集,总耗时 ≈ 最慢的那个平台的时间

# 而不是三个平台时间相加
各平台采集子流程(以拼多多为例):
# 子流程:采集拼多多数据
# 输入参数:关键词列表
# 输出参数:原始数据列表
# 1. 打开拼多多移动版
打开网页("https://mobile.yangkeduo.com/")
# 2. 循环每个关键词
全部数据 = []
循环 遍历 {{关键词列表}}
当前关键词 = 当前循环项
# 2.1 搜索关键词
输入文本(搜索框, 当前关键词)
点击元素(搜索按钮)
等待元素出现(商品卡片, 超时时间=5秒)
# 2.2 采集当前页商品(前10个)
商品卡片列表 = 获取相似元素列表(商品卡片父元素)
取列表前N项(商品卡片列表, 10) → 前10个卡片
循环 遍历 前10个卡片
标题 = 获取元素文本(当前卡片, ".//div[contains(@class,'title')]")
价格 = 获取元素文本(当前卡片, ".//span[contains(@class,'price')]")
销量 = 获取元素文本(当前卡片, ".//span[contains(@class,'sales')]")
# 组装数据
一行数据 = [当前关键词, "拼多多", 标题, 价格, 销量, 当前时间]
追加数据到列表(全部数据, 一行数据)
# 2.3 随机等待2-4秒(防风控)
固定等待(随机数(2, 4))
# 3. 输出数据
设置输出参数(原始数据列表, 全部数据)
踩坑提醒:并行执行时,三个平台同时打开浏览器,电脑内存占用会很高。如果电脑只有8GB内存,建议改成串行执行(一个一个跑),或者在并行执行里把“浏览器可见性”设为“否”(后台运行)。
四、第3阶段:数据清洗与标准化
三个平台的数据格式不统一——拼多多价格是"¥29.90",淘宝是"29.90元",抖音是"¥29.9"。需要统一清洗成标准格式。
# 影刀RPA - Python代码指令:统一清洗多平台数据
# 输入:从影刀变量获取三个平台的原始数据列表
# 输出:清洗后的标准数据列表
import re
from datetime import datetime
# 从影刀传入三个平台的原始数据
拼多多原始 = {{拼多多原始数据}}
淘宝原始 = {{淘宝原始数据}}
抖音原始 = {{抖音原始数据}}
# 合并所有数据
全部原始 = 拼多多原始 + 淘宝原始 + 抖音原始
# 清洗函数
def clean_price(price_str):
"""清洗价格:提取纯数字"""
if not price_str:
return 0.0
num = re.search(r'[\d.]+', str(price_str))
return float(num.group()) if num else 0.0
def clean_sales(sales_str):
"""清洗销量:支持'万'单位"""
if not sales_str:
return 0
sales_str = str(sales_str).replace('+', '').replace('件', '')
num = re.search(r'[\d.]+', sales_str)
if not num:
return 0
value = float(num.group())
if '万' in sales_str:
value = value * 10000
return int(value)
def clean_title(title_str):
"""清洗标题:去掉首尾空格和换行"""
if not title_str:
return ""
return str(title_str).strip().replace('\n', '').replace('\r', '')
# 清洗全部数据
清洗后数据 = []
for row in 全部原始:
# row结构:[关键词, 平台, 标题, 价格, 销量, 采集时间]
清洗后数据.append([
row[0], # 关键词(不变)
row[1], # 平台(不变)
clean_title(row[2]), # 清洗后的标题
clean_price(row[3]), # 清洗后的价格(数字)
clean_sales(row[4]), # 清洗后的销量(数字)
row[5] # 采集时间(不变)
])
# 按销量降序排序
清洗后数据.sort(key=lambda x: x[4], reverse=True)
# 输出回影刀
print(清洗后数据)
五、第4阶段:生成日报汇总表
清洗后的数据要生成一张汇总日报,包含三个核心信息:
- 今日数据总览:总采集数、总平台数
- 各平台TOP10:每个平台销量最高的10个商品
- 综合TOP10:所有平台合并排名的TOP10
# 影刀RPA - 阶段D:生成日报汇总表
# 1. 创建日报Excel
创建Excel() → 日报对象
# 2. 写入总览信息(Sheet1)
写入单元格(日报对象, 行号=1, 列号=1, 内容="电商数据日报")
写入单元格(日报对象, 行号=2, 列号=1, 内容="报告日期")
写入单元格(日报对象, 行号=2, 列号=2, 内容=当前日期)
写入单元格(日报对象, 行号=3, 列号=1, 内容="总采集数")
写入单元格(日报对象, 行号=3, 列号=2, 内容=总采集数)
写入单元格(日报对象, 行号=4, 列号=1, 内容="覆盖平台")
写入单元格(日报对象, 行号=4, 列号=2, 内容="拼多多、淘宝、抖音")
# 3. 写入综合TOP10(Sheet2)
写入单元格(日报对象, 行号=1, 列号=1, 内容="排名")
写入单元格(日报对象, 行号=1, 列号=2, 内容="平台")
写入单元格(日报对象, 行号=1, 列号=3, 内容="标题")
写入单元格(日报对象, 行号=1, 列号=4, 内容="价格")
写入单元格(日报对象, 行号=1, 列号=5, 内容="销量")
# 循环写入TOP10
循环 变量 i 从 1 到 10
当前行 = 清洗后数据[i-1]
写入单元格(日报对象, 行号=i+1, 列号=1, 内容=i)
写入单元格(日报对象, 行号=i+1, 列号=2, 内容=当前行[1])
写入单元格(日报对象, 行号=i+1, 列号=3, 内容=当前行[2])
写入单元格(日报对象, 行号=i+1, 列号=4, 内容=当前行[3])
写入单元格(日报对象, 行号=i+1, 列号=5, 内容=当前行[4])
# 4. 保存日报
保存Excel(日报对象, "D:/RPA_DailyReport/02_输出/日报汇总.xlsx")
关闭Excel(日报对象)
六、第5阶段:飞书群自动发送日报
日报生成后,自动发送到飞书群。影刀RPA的“飞书群通知”指令支持发文件,可以直接把日报Excel作为附件发送。
# 影刀RPA - 阶段E:发送日报到飞书群
# 1. 构建消息内容
今日日期 = 获取当前日期()
总采集数 = 获取列表长度(清洗后数据)
拼多多数 = 统计平台数据(清洗后数据, "拼多多")
淘宝数 = 统计平台数据(清洗后数据, "淘宝")
抖音数 = 统计平台数据(清洗后数据, "抖音")
TOP1商品 = 清洗后数据[0]
消息内容 = "📊 电商数据日报 " + 今日日期 + "\n" + \
"━━━━━━━━━━━━━━━━\n" + \
"📈 今日数据总览\n" + \
"总采集商品数:" + str(总采集数) + " 条\n" + \
"拼多多:" + str(拼多多数) + " 条\n" + \
"淘宝:" + str(淘宝数) + " 条\n" + \
"抖音:" + str(抖音数) + " 条\n" + \
"━━━━━━━━━━━━━━━━\n" + \
"🏆 今日TOP1商品\n" + \
"平台:" + TOP1商品[1] + "\n" + \
"标题:" + TOP1商品[2][:30] + "...\n" + \
"价格:¥" + str(TOP1商品[3]) + "\n" + \
"销量:" + str(TOP1商品[4]) + " 件\n" + \
"━━━━━━━━━━━━━━━━\n" + \
"📎 详细数据请见附件"
# 2. 发送飞书群通知(带附件)
飞书群通知(
机器人地址 = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxx",
消息类型 = "富文本",
文本内容 = 消息内容,
附件文件 = "D:/RPA_DailyReport/02_输出/日报汇总.xlsx"
)
踩坑提醒:飞书群通知发送文件需要文件大小不超过20MB。日报文件通常只有几百KB,不用担心超限。但如果有大量图片或图表,要注意控制文件大小。
七、第6阶段:异常处理与运行日志
整个系统跑下来涉及多个环节——打开网页可能超时、采集可能被风控、Excel可能被占用、飞书可能发送失败。任何一个环节出错,日报就出不来。
全局异常处理结构:
# 影刀RPA - 主流程异常处理
Try:
# 阶段A:读取关键词
调用子流程(A_读取关键词列表) → 关键词数据
# 阶段B:采集数据
调用子流程(B_并行采集, 输入={关键词数据: 关键词数据}) → 原始数据
# 阶段C:清洗数据
调用子流程(C_数据清洗, 输入={原始数据: 原始数据}) → 清洗后数据
# 阶段D:生成日报
调用子流程(D_生成日报, 输入={清洗后数据: 清洗后数据})
# 阶段E:发送通知
调用子流程(E_发送飞书日报, 输入={清洗后数据: 清洗后数据})
Catch:
# 全局异常捕获
输出日志("【错误】日报系统运行失败:" + 错误信息)
截图保存("D:/RPA_DailyReport/03_日志/错误截图/error_" + 当前时间 + ".png")
# 发送报警通知
飞书群通知("❌ 日报系统运行失败!\n错误信息:" + 错误信息 + "\n请查看日志:" + 日志路径)
Finally:
# 清理:关闭所有浏览器和Excel
关闭所有浏览器()
关闭所有Excel()
输出日志("=== 日报系统运行结束 ===")
八、第7阶段:定时调度
系统开发完成后,配置定时任务每天自动运行。
创业版/企业版直接用影刀RPA的“定时触发器”:
- 发布整个应用
- 创建定时触发器
- 触发频率选“每天”,时间设8:00
- 勾选“执行失败时发送通知”
社区版用Windows任务计划程序:
- 编写bat启动脚本
- 在任务计划程序中设置每天8:00执行
- 电源设置中关闭睡眠
九、系统优化建议
优化1:采集失败自动重试
如果某个平台采集失败(比如触发了风控),不要整个系统都停掉。在子流程内部做3次重试,3次都失败再跳到下一个平台。
优化2:增量采集代替全量采集
每天采集相同的数据浪费资源。可以只采集新增的、或价格有变动的商品。用历史数据做对比,只在变化时采集。
优化3:采集进度实时记录
采集过程中如果系统崩溃,下次运行不知道从哪继续。可以在Excel里记录“当前采集到第X个关键词”,崩溃后从断点继续。
优化4:日报中增加趋势对比
除了今天的TOP10,再加上环比昨天的变化——哪些商品排名上升了、哪些下降了、哪些是新入榜的。这个可以在生成日报时用Python计算。
十、常见问题与易错速查
| 错误现象 | 可能原因 | 修复方法 |
|---|---|---|
| 日报里数据是空的 | 采集环节失败了 | 检查子流程Catch日志,看具体报错 |
| 某个平台数据一直采集不到 | 平台更新了页面结构 | 重新捕获元素,更新XPath |
| 日报发到飞书是乱码 | 编码问题 | Excel保存时选UTF-8编码 |
| 定时任务没触发 | 电脑休眠了 | 电源设置关闭睡眠 |
| 运行内存不足 | 并行开太多浏览器 | 改成串行执行,或升级内存 |
| 日报文件被占用打不开 | 上次运行的Excel没关 | Finally块里加“关闭所有Excel” |
推荐资源
- 影刀官方社区:搜索“日报系统”“数据看板”,有大量完整项目参考
- 影刀模板市场:搜索“电商数据日报”,可能有现成模板直接套用
- 飞书机器人配置:参考本系列《飞书联动》章节
一句话总结:日报自动化系统的核心就是模块化设计 + 异常兜底 + 定时调度——把大系统拆成独立子流程逐个开发测试,用Try-Catch保证任何环节出错都不会让整个系统崩掉,最后用定时触发器跑起来。这套框架跑通之后,加新平台、加新维度都非常方便。
试试从“读取Excel关键词”这个模块开始,一步步搭建你自己的日报系统。
#影刀RPA #RPA自动化 #综合实战 #数据采集 #电商自动化 #飞书联动
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
