文档备案控制台
免费开始使用

影刀RPA实战案例:多平台销售数据汇总与对账自动化——从数据采集到飞书推送

如果你同时做拼多多、淘宝、抖音三个平台,每天早上第一件事是什么?登录三个后台,分别下载昨天的数据,打开三个Excel,手动汇总到一个表里,发给老板。这一套操作下来,少说半小时。

我现在用影刀做这件事:每天早上8点,三个平台的数据自动采集、自动汇总成一张表、自动发到飞书群。打开手机就能看,再也不用开电脑了。

picture.image

这篇文章完整拆解这套系统——不是教你做一个“通用的”汇总流程,而是把拼多多、淘宝、抖音三个平台串起来的完整方案。

picture.image

一、整体架构设计

这套系统的核心逻辑很简单:各平台各自采集 → 统一清洗格式 → 合并汇总 → 推送通知

我把整个流程拆成6个子流程:

picture.image

A_Main(主流程-调度器)
├─ B01_采集_拼多多
├─ B02_采集_淘宝

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/bb5e71f864f94cd18415ca7028f3b53c~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783032133&x-signature=U%2FiVWPyoWuO%2Bn1bKlZj8RqK60Uk%3D)
├─ B03_采集_抖音
├─ C01_清洗_统一格式
├─ D01_合并_生成汇总表
└─ E01_推送_飞书通知

picture.image

设计思路:每个平台独立采集,互不影响。哪个平台挂了只影响它自己,其他平台照常跑。清洗和合并独立出来,方便以后加新平台。

二、数据格式统一:用字典做“翻译层”

picture.image

三个平台的数据字段名不一样——拼多多叫“商品标题”,淘宝叫“商品名称”,抖音叫“视频标题”。在合并之前,必须先把它们转成统一格式。

我在采集子流程里直接把数据转成统一格式的字典:

picture.image

# 统一数据格式
{
    "platform": "拼多多",      # 平台名称
    "product_name": "连衣裙",   # 商品/视频名称
    
![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/d9721f3fdedb4a6d9da86be4b2d7bf34~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783032133&x-signature=HQ431WhEG30mO3lxSsqDa0d7duY%3D)
    "sales": 5200,             # 销售数量(统一为数字)
    "amount": 665600.0,        # 销售金额(统一为浮点数)
    "date": "2026-06-29"       # 日期(统一格式)
}

每个平台的采集子流程,最后都输出这种格式的列表。这样C_清洗子流程拿到的是三种来源但结构完全一样的数据,合并逻辑只需要写一遍。

三、拼多多数据采集(B01)

拼多多采集的是商家后台的数据,需要登录。

登录方式:用独立的User Data目录保存登录态,每天第一次跑的时候检测登录态是否有效,失效则触发重新登录。

采集路径:数据中心 → 昨日数据 → 商品明细列表。

# 捕获元素:拼多多商家后台数据中心菜单
//span[contains(text(),'数据中心')]

# 捕获元素:商品数据行
//div[@class='data-table']//tr

# 子元素:商品名称(基于行内相对路径)
.//td[1]/span

# 子元素:订单数
.//td[2]/span

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/80d0d19758a94c5e894ab526145d11a2~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783032133&x-signature=AgmluM6ztIFhP%2FECCgxdPQUvz%2Fo%3D)

# 子元素:支付金额
.//td[3]/span

采集逻辑

打开拼多多商家后台 → 检测登录态(失效则重新登录)→ 点击数据中心 → 点击“昨日” → 等待表格加载 → 
获取相似元素列表(商品数据行) → 循环遍历每行 → 提取商品名/订单数/金额 → 
组装统一格式字典 → 追加到列表

数据清洗点

  • 金额:¥12,345.6712345.67
  • 订单数:1,2341234
  • 商品名去除首尾空格和换行

四、淘宝数据采集(B02)

淘宝采集的是“生意参谋”或“千牛”后台的商品数据。

# 捕获元素:千牛后台商品分析菜单
//span[contains(text(),'商品分析')]

# 捕获元素:数据行
//div[@class='table']//tr

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/1a968554fc234aaf8a25dd8331267f5b~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783032133&x-signature=N%2FRMEW%2F%2F19DKjxno4kA5uIQ8AwQ%3D)

# 子元素:商品名称
.//td[1]//a

# 子元素:支付金额
.//td[2]//span

# 子元素:支付件数
.//td[3]//span

采集逻辑和拼多多基本一样,区别在于:

  • 登录方式:淘宝支持扫码登录,用User Data目录保存更稳定
  • 日期筛选:点击“昨日”后数据加载较慢,等待时间设长一些(10秒)
  • 金额字段:淘宝有时会显示“--”表示无数据,需要处理为0

特殊处理:淘宝商品数据可能分页,需要翻页采集。最多采5页。

# 处理淘宝的“--”空值
amount_raw = row[1] or "0"
if amount_raw == "--":
    amount = 0.0
else:
    amount = float(amount_raw.replace(",", ""))

五、抖音数据采集(B03)

抖音数据来源是抖音电商后台(抖店),同样需要登录。

# 捕获元素:抖店数据菜单
//span[contains(text(),'数据')]

# 捕获元素:商品列表行
//div[@class='goods-list']//tr

# 子元素:商品名称
.//td[1]//div[@class='name']

# 子元素:支付金额
.//td[2]//span

# 子元素:支付件数
.//td[3]//span

抖音的特殊坑:抖店的class名经常带随机哈希,需要用contains()匹配。

采集范围:抖店后台默认只显示最近7天,需要手动点击“昨日”筛选。

社区版用户注意:三个平台分别登录会消耗不少时长,建议用User Data目录保存登录态,每天第一次跑的时候检测一下,已登录就直接跳过登录步骤。

六、数据清洗与汇总(C01 + D01)

C01_清洗_统一格式

从三个平台采集回来的数据已经是统一格式的字典列表。C子流程做三件事:

  1. 去重:按platform + product_name去重(防止三个平台有重复商品,避免同一个商品被重复计算)
  2. 日期统一:确保所有数据的日期字段都是YYYY-MM-DD格式
  3. 汇总计算:计算总销售额、总订单数、各平台占比
# 影刀Python代码 - 数据汇总计算
# 输入变量:all_data(三个平台采集数据的合并列表)
# 输出变量:summary(汇总结果字典)

# all_data 格式:[{"platform":"拼多多","product_name":"连衣裙","sales":5200,"amount":665600.0,"date":"2026-06-29"}, ...]

# 按平台分组汇总
summary_by_platform = {}
for item in all_data:
    platform = item["platform"]
    if platform not in summary_by_platform:
        summary_by_platform[platform] = {"sales": 0, "amount": 0.0}
    summary_by_platform[platform]["sales"] += item["sales"]
    summary_by_platform[platform]["amount"] += item["amount"]

# 计算总销售额
total_amount = sum([item["amount"] for item in all_data])
total_sales = sum([item["sales"] for item in all_data])

summary = {
    "total_amount": total_amount,
    "total_sales": total_sales,
    "by_platform": summary_by_platform,
    "record_count": len(all_data)
}
print(summary)

D01_合并_生成汇总表

把清洗后的数据写入Excel,生成一张包含“平台汇总”和“商品明细”两个Sheet的报表。

Sheet1:平台汇总

平台销售额订单数占比
拼多多¥665,6005,20045%
淘宝¥532,8003,80036%
抖音¥281,6002,10019%

Sheet2:商品明细

平台商品名称销售额订单数
拼多多连衣裙¥665,6005,200
淘宝T恤¥532,8003,800
抖音运动鞋¥281,6002,100

七、飞书推送(E01)

报表生成后,自动发送到飞书群。

消息内容(飞书消息卡片格式):

📊 多平台销售日报 - 2026-06-29

💰 总销售额:¥1,480,000
📦 总订单数:11,100 

🏷️ 分平台数据:
 拼多多:¥665,600(45%)
 淘宝:¥532,800(36%)  
 抖音:¥281,600(19%)

📎 报表附件已上传

实现方式

  1. 用“连接飞书多维表格”连接报表所在的多维表格
  2. 用“批量添加记录”把汇总数据写入多维表格的“日报”Sheet
  3. 用“飞书群通知”发消息卡片

容易踩坑:飞书消息卡片的变量名和影刀传递的变量名必须完全一致。建议在飞书消息卡片搭建工具里先做好模板,再复制到影刀里。

八、定时执行与异常处理

定时配置

创业版以上:影刀计划任务 → 每天早上8:00执行。

社区版:Windows任务计划 + 批处理脚本,每天早上8:00触发。

异常处理

每个平台的采集子流程独立包Try-Catch:

Try(拼多多采集):
    → 执行采集
Catch:
    → 输出日志("拼多多采集失败:" + %Error%)
    → 该平台数据 = [](空列表)
    → 继续执行淘宝采集
Try结束

这样一个平台挂了不影响其他平台。最终汇总时,失败平台的数据为空,报表里显示“采集失败”或“无数据”。

全局超时保护:主流程外层再包一层Try-Catch,如果整体运行超过15分钟,强制终止并发送告警通知。

九、完整主流程代码

A_Main(主流程)
├─ 【初始化】
│   ├─ 设置变量:all_data = []
│   ├─ 设置变量:错误平台列表 = []
│   └─ 设置变量:开始时间 = 当前时间
│
├─ 【采集拼多多】
│   ├─ Try:
│   │   └─ 调用子流程 B01_采集_拼多多 → 拼多多数据
│   │   └─ 追加到 all_data
│   ├─ Catch:
│   │   └─ 错误平台列表.append("拼多多")
│   └─ Try结束
│
├─ 【采集淘宝】
│   ├─ Try:
│   │   └─ 调用子流程 B02_采集_淘宝 → 淘宝数据
│   │   └─ 追加到 all_data
│   ├─ Catch:
│   │   └─ 错误平台列表.append("淘宝")
│   └─ Try结束
│
├─ 【采集抖音】
│   ├─ Try:
│   │   └─ 调用子流程 B03_采集_抖音 → 抖音数据
│   │   └─ 追加到 all_data
│   ├─ Catch:
│   │   └─ 错误平台列表.append("抖音")
│   └─ Try结束
│
├─ 【数据清洗与汇总】
│   ├─ 如果 all_data 为空:
│   │   └─ 发送告警通知("所有平台采集失败,请检查")
│   │   └─ 终止流程
│   └─ 调用子流程 C01_清洗_统一格式(all_data) → 汇总数据
│
├─ 【生成报表】
│   └─ 调用子流程 D01_合并_生成汇总表(汇总数据) → 报表路径
│
├─ 【推送通知】
│   ├─ 计算总耗时
│   └─ 调用子流程 E01_推送_飞书通知(汇总数据, 报表路径, 错误平台列表, 总耗时)
│
└─ 【结束日志】
    └─ 输出日志("多平台汇总完成,共{总数}条数据,耗时{总耗时}秒")

常见问题/易错速查

  1. 某个平台采集失败导致整个流程中断 → 每个平台的采集子流程独立包Try-Catch,失败不影响其他平台。

  2. 三个平台数据格式不统一,合并报错 → 采集时直接转成统一格式的字典,合并逻辑只写一遍。

  3. 登录态每天失效,重新登录耗时 → 用User Data目录保存登录态,流程开始时检测,已登录直接跳过。

  4. Excel报表太大打不开 → 日报只保留最近30天数据,超过30天的归档到另一个文件。

  5. 飞书消息卡片的变量不生效 → 卡片模板里的变量名和影刀传递的变量名必须完全一致。每次添加变量后重新发版。

  6. 社区版30分钟不够跑三个平台 → 每个平台采集时间控制在5分钟以内,三个平台加上清洗和推送,总时长15-20分钟。如果还不够,分批跑——早上先跑拼多多和淘宝,中午再跑抖音。

推荐资源

  1. 影刀官方帮助中心搜索“飞书消息卡片
  2. 影刀官方社区搜“多平台数据汇总”有完整案例
  3. 飞书消息卡片搭建工具(飞书官方)
  4. B站“小可耐教你学影刀RPA”有日报系统的实操视频

#影刀RPA #RPA自动化 #多平台汇总 #数据对账 #飞书联动 #电商自动化

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论