影刀RPA实操指南:从0到1搭建电商数据日报自动化系统

前面十几篇文章分别讲了Excel操作循环指令子流程设计异常处理飞书通知定时任务——每个知识点单独看都挺好,但你是不是还在发愁:怎么把这些东西串起来,做一个真正能每天自动跑的完整系统?

比如每天早上9点,自动采集拼多多/淘宝/抖音三个平台的数据,清洗完汇总成一张日报表,然后自动发到飞书群里——全程不用人盯着。这才叫自动化,不是跑一个流程就完事。

picture.image

今天这篇实操指南,不讲单个知识点,直接从需求出发,从0到1搭建一个电商数据日报自动化系统。把前面所有技能串起来,做一个真正能每天自动运行的完整项目。

一、日报系统的整体设计

picture.image

先搞清楚这个系统要做什么,再想怎么做。

需求描述

每天早上8点,自动采集3个平台(拼多多、淘宝、抖音)各10个关键词的TOP商品数据,清洗后汇总成一张日报表,9点前发送到飞书群。

picture.image

系统拆解

模块职责关键技术点

picture.image | A_调度模块 | 定时触发整个流程 | 定时触发器 / Windows计划任务 | | B_数据采集模块 | 从各平台采集原始数据 | 网页自动化、循环、翻页 | | C_数据清洗模块 | 清洗原始数据成标准格式 | Python代码指令、正则 | | D_汇总报表模块 | 合并多平台数据生成日报 | Excel操作 | | E_通知模块 | 发送日报到飞书 | 飞书群通知 |

picture.image

文件结构

D:/RPA_DailyReport/

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/7c494089247c4fd4be064d77e241bcdc~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783981079&x-signature=vNoJN18qxrXLuuzTdvp3lNPL5eU%3D)
├── 01_输入/
│   └── 关键词列表.xlsx          # 要监控的关键词
├── 02_输出/
│   ├── 拼多多_原始数据.xlsx     # 各平台原始采集结果
│   ├── 淘宝_原始数据.xlsx

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/4ea3371246314bcca01859ce296c390e~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783981079&x-signature=%2FUc5YwJ%2FHMUjN9lJJ0BImTY72ZY%3D)
│   ├── 抖音_原始数据.xlsx
│   └── 日报汇总.xlsx            # 最终日报
├── 03_日志/
│   ├── 运行日志_20260106.log
│   └── 错误截图/                # 出错时自动截图

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/014f7d84c7024a63bea795ac4417f1fc~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783981079&x-signature=YqiLAwubNJTXDaM3Jm40h%2Fw4Rx0%3D)
└── 主流程.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列

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/46955e62b9e34debabd52a552ef0353f~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783981079&x-signature=ryXlF9ADtwrHXiMKOUF%2FoRZ4A6k%3D)

# 3. 按平台分组(便于后续批量采集)
# 拼多多关键词
筛选列表(关键词列表, 平台列表 == "拼多多") → 拼多多关键词
# 淘宝关键词
筛选列表(关键词列表, 平台列表 == "淘宝") → 淘宝关键词
# 抖音关键词
筛选列表(关键词列表, 平台列表 == "抖音") → 抖音关键词

# 4. 关闭Excel
关闭Excel(excel对象)

三、第2阶段:多平台数据采集

核心采集逻辑。影刀RPA并行执行指令可以同时跑多个平台,大幅提升采集效率。

# 影刀RPA - 阶段B:并行采集多平台数据

# 并行执行三个平台的采集任务
并行执行
    分支1:调用子流程(采集拼多多数据, 输入={关键词列表: 拼多多关键词})
    分支2:调用子流程(采集淘宝数据, 输入={关键词列表: 淘宝关键词})
    分支3:调用子流程(采集抖音数据, 输入={关键词列表: 抖音关键词})
结束并行

# 三个平台同时采集,总耗时 ≈ 最慢的那个平台的时间

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/4e645b5ec6934fc68ba73cbccb6afc60~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783981079&x-signature=AkMSQ%2BM4DPC3tAHZQb%2BaPA94LcE%3D)
# 而不是三个平台时间相加

各平台采集子流程(以拼多多为例):

# 子流程:采集拼多多数据
# 输入参数:关键词列表
# 输出参数:原始数据列表

# 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 从 110
    当前行 = 清洗后数据[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的“定时触发器”:

  1. 发布整个应用
  2. 创建定时触发器
  3. 触发频率选“每天”,时间设8:00
  4. 勾选“执行失败时发送通知”

社区版Windows任务计划程序

  1. 编写bat启动脚本
  2. 在任务计划程序中设置每天8:00执行
  3. 电源设置中关闭睡眠

九、系统优化建议

优化1:采集失败自动重试

如果某个平台采集失败(比如触发了风控),不要整个系统都停掉。在子流程内部做3次重试,3次都失败再跳到下一个平台。

优化2:增量采集代替全量采集

每天采集相同的数据浪费资源。可以只采集新增的、或价格有变动的商品。用历史数据做对比,只在变化时采集。

优化3:采集进度实时记录

采集过程中如果系统崩溃,下次运行不知道从哪继续。可以在Excel里记录“当前采集到第X个关键词”,崩溃后从断点继续。

优化4:日报中增加趋势对比

除了今天的TOP10,再加上环比昨天的变化——哪些商品排名上升了、哪些下降了、哪些是新入榜的。这个可以在生成日报时用Python计算。

十、常见问题与易错速查

错误现象可能原因修复方法
日报里数据是空的采集环节失败了检查子流程Catch日志,看具体报错
某个平台数据一直采集不到平台更新了页面结构重新捕获元素,更新XPath
日报发到飞书是乱码编码问题Excel保存时选UTF-8编码
定时任务没触发电脑休眠了电源设置关闭睡眠
运行内存不足并行开太多浏览器改成串行执行,或升级内存
日报文件被占用打不开上次运行的Excel没关Finally块里加“关闭所有Excel”

推荐资源

  • 影刀官方社区:搜索“日报系统”“数据看板”,有大量完整项目参考
  • 影刀模板市场:搜索“电商数据日报”,可能有现成模板直接套用
  • 飞书机器人配置:参考本系列《飞书联动》章节

一句话总结日报自动化系统的核心就是模块化设计 + 异常兜底 + 定时调度——把大系统拆成独立子流程逐个开发测试,用Try-Catch保证任何环节出错都不会让整个系统崩掉,最后用定时触发器跑起来。这套框架跑通之后,加新平台、加新维度都非常方便。

试试从“读取Excel关键词”这个模块开始,一步步搭建你自己的日报系统。


#影刀RPA #RPA自动化 #综合实战 #数据采集 #电商自动化 #飞书联动

作者:林焱

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

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