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

影刀RPA综合实战:从零搭建一个完整的日报自动化系统(附项目源码结构)

前面几十篇文章讲了很多独立技能——元素捕获、XPath、循环、条件判断、异常处理、子流程设计、定时任务……但单独会一个技能和能搭出一个完整的项目,是两码事。

我之前也是这样,每个指令都会用,但真要做一个“每天早上8点自动抓取拼多多店铺数据、生成日报Excel、发到企业微信群”的项目时,不知道从哪下手、模块怎么划分、数据怎么流转。后来硬着头皮做了一个,跑通了之后才发现——原来完整的项目就是把这些独立技能按顺序串起来

这篇文章就把一个完整的日报自动化系统从头到尾搭一遍。不需要一次看懂所有细节,把它当成一个“食谱”,先照着抄,跑通了再改

项目目标与整体架构

项目目标:每天早上8:00自动抓取拼多多店铺的订单数据,生成日报Excel,发送到企业微信群。

picture.image

整体架构分成五个核心模块


![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/755c086544914afe8cd094435d7f1da7~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782879586&x-signature=72Bnu%2FN8%2BX3NxcN15rRtzphUmQQ%3D)
定时任务(每天早上8:00触发)
        │
        ▼
┌───────────────────────────────────────┐
│  A_登录流程(Cookie管理,保持登录态)   │

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/353e3d8cc8a5430cad59119ad4baacf6~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782879586&x-signature=Xn6f4%2B1U%2BeJWCLkNkhCmQitH5yw%3D)
│         │                              │
│         ▼                              │
│  B_数据采集(翻页抓取今日订单数据)      │
│         │                              │
│         ▼                              │

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/866b0805640249e0885b25538534f31f~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782879586&x-signature=8tQS%2BkQ0VC6ivknDPhT6Ht5Q%2B8s%3D)
│  C_数据处理(Pandas清洗+指标计算)      │
│         │                              │
│         ▼                              │
│  D_生成报表(Excel模板填充+图表)       │
│         │                              │

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/5790775f189443bba07ceed650188096~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782879586&x-signature=%2FtweKKxnGJg%2FJWK7GUVqXiZWi0M%3D)
│         ▼                              │
│  E_发送通知(企业微信Webhook推送)      │
└───────────────────────────────────────┘

picture.image 五个子流程,清晰分离。任何一个模块出问题只影响它自己

A_登录流程:Cookie管理+登录态检测

登录是日报系统的第一个关卡。如果登录失败了,后面的采集、报表全白搭。

picture.image

核心思路:先尝试加载Cookie免登录,Cookie失效了再走账密登录

在右侧指令面板新建子流程,命名为A01_登录拼多多

# 子流程:A01_登录拼多多
# 输出参数:$登录状态(布尔值)

# 1. 打开登录页
打开网页("https://mms.pinduoduo.com/login")

# 2. 尝试加载保存的Cookie
如果 文件存在("D:\\cookie\\pdd_cookie.txt"):
    读取文本文件("D:\\cookie\\pdd_cookie.txt") → $Cookie内容
    设置Cookie($Cookie内容)
    刷新页面()
结束

# 3. 检测登录态——查找登录后才出现的元素
判断元素是否存在("店铺名称") → $登录状态

# 4. 如果未登录,执行账密登录
如果 $登录状态 == False:

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/b35675bc918d4ed68890b318ef6ac3ec~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782879586&x-signature=A3iAcUjfYaR3oeY3ba7hJ6FYEkU%3D)
    清除当前网页Cookie()
    等待元素出现("账号输入框", 5秒)
    输入文本("账号输入框", $账号)      # 账号从流程参数传入
    输入文本("密码输入框", $密码)      # 密码从流程参数传入
    点击元素("登录按钮")
    等待元素出现("店铺名称", 10秒)
    
    # 登录成功后保存新Cookie
    获取当前网页Cookie() → $新Cookie
    写入文本文件("D:\\cookie\\pdd_cookie.txt", $新Cookie)
    输出日志("登录流程完成")
结束

一个容易踩的坑:保存Cookie的文件路径要提前建好文件夹,否则写入会失败。D:\cookie\这个目录需要手动创建。

B_数据采集:翻页抓取今日订单

登录成功后,进入数据页面,把今天的订单数据全部抓下来。

在右侧指令面板新建子流程,命名为B01_采集今日订单

# 子流程:B01_采集今日订单
# 输出参数:$采集数据(列表,每个元素是一个字典)

# 1. 进入数据中心
点击元素("数据中心菜单")

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/c47b1b6593f24dca84328ab9a9716f1b~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782879586&x-signature=JcMlI8TVMk0HJcH52GDceGweQCE%3D)
等待元素出现("数据表格", 5秒)

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/46ccd1cbe4ae492b8dcde9b698568b36~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782879586&x-signature=L0lJ%2FbSUyI6lCs2fB%2FQTMy7D6Gw%3D)
# 2. 设置日期筛选:今天
点击元素("日期筛选")
点击元素("今日")
点击元素("查询按钮")
固定等待(2秒)

# 3. 初始化结果列表
设置变量 $采集数据 = []

# 4. 翻页采集(参考翻页采集模板)
设置变量 $页码 = 1
无限循环开始:
    # 获取当前页所有数据行
    获取相似元素列表("表格数据行") → $数据行列表
    
    # 遍历每一行,提取数据
    ForEach $当前行 in $数据行列表:
        $商品名 = 获取元素文本($当前行 // 商品名元素)
        $订单数 = 获取元素文本($当前行 // 订单数元素)
        $金额 = 获取元素文本($当前行 // 金额元素)
        $状态 = 获取元素文本($当前行 // 状态元素)
        
        $采集数据.追加({
            "商品名称": $商品名,
            "订单数": $订单数,
            "金额": $金额,
            "状态": $状态
        })
    结束
    
    # 判断是否有下一页
    获取相似元素列表("下一页按钮") → $下一页列表
    如果 获取列表长度($下一页列表) > 0 且 $页码 < 50:
        点击元素("下一页按钮")
        等待元素出现("表格数据行", 5秒)
        $页码 = $页码 + 1
        输出日志("已采集第{$页码}页")
    否则:
        输出日志("采集完成,共{$页码}页")
        跳出循环
    结束
结束

采集字段可以根据实际业务调整。订单日报一般需要抓取:订单编号、下单时间、商品名称、实付金额、买家昵称、物流状态等。

C_数据处理:Pandas清洗+指标计算

采集到的原始数据通常很“脏”——金额带“¥”符号、日期格式不统一、可能有重复订单。用影刀的Python脚本指令调用Pandas做清洗

在右侧指令面板新建子流程,命名为C01_数据清洗与汇总

# 子流程:C01_数据清洗与汇总
# 输入参数:$原始数据(列表)
# 输出参数:$清洗后数据(列表),$汇总指标(字典)

import pandas as pd
import re

# 1. 转为DataFrame
df = pd.DataFrame($原始数据)

# 2. 去除重复订单(按订单号去重)
df.drop_duplicates(subset=['订单号'], keep='first', inplace=True)

# 3. 清洗金额字段:去掉¥符号,转为数字
df['金额'] = df['金额'].apply(
    lambda x: float(re.sub(r'[^0-9.]', '', str(x))) if pd.notna(x) else 0
)

# 4. 统一日期格式
df['下单时间'] = pd.to_datetime(df['下单时间'])

# 5. 状态映射编码
状态映射 = {"待发货": 1, "已发货": 2, "已签收": 5, "退款中": 3}
df['状态编码'] = df['状态'].map(状态映射)

# 6. 计算汇总指标
$汇总指标 = {
    "总成交额": df['金额'].sum(),
    "总订单数": len(df),
    "平均客单价": df['金额'].mean(),
    "退款率": len(df[df['状态'] == '退款中']) / len(df) * 100 if len(df) > 0 else 0
}

# 7. 返回清洗后的数据(转为列表)
$清洗后数据 = df.to_dict('records')

注意:影刀里使用Python脚本时,需要点亮指令上的Python图标,确保运行环境是Python而非影刀原生引擎。

D_生成报表:Excel模板填充

数据处理完了,需要生成一份带格式、带图表的专业日报Excel

在右侧指令面板新建子流程,命名为D01_生成日报Excel

# 子流程:D01_生成日报Excel
# 输入参数:$清洗后数据(列表),$汇总指标(字典)
# 输出参数:$报表路径(字符串)

# 1. 创建新Excel
新建Excel → $报表对象

# 2. 写入汇总指标(封面页/概览页)
写入单元格:$报表对象, "A1", "拼多多店铺日报"
写入单元格:$报表对象, "A2", "报表日期:" + 获取当前日期()
写入单元格:$报表对象, "A4", "总成交额"
写入单元格:$报表对象, "B4", $汇总指标["总成交额"]
写入单元格:$报表对象, "A5", "总订单数"
写入单元格:$报表对象, "B5", $汇总指标["总订单数"]
写入单元格:$报表对象, "A6", "平均客单价"
写入单元格:$报表对象, "B6", $汇总指标["平均客单价"]
写入单元格:$报表对象, "A7", "退款率"
写入单元格:$报表对象, "B7", str(round($汇总指标["退款率"], 2)) + "%"

# 3. 写入明细数据(新建一个Sheet)
新建Sheet:$报表对象, "明细数据"
写入表头:["商品名称", "订单数", "金额", "状态", "下单时间"]
# 循环写入每条数据
$行号 = 2
ForEach $行 in $清洗后数据:
    写入行数据:$报表对象, $行号, [$行["商品名称"], $行["订单数"], $行["金额"], $行["状态"], $行["下单时间"]]
    $行号 = $行号 + 1
结束

# 4. 保存Excel
$报表路径 = "D:\\日报\\拼多多_日报_" + 获取当前日期("YYYYMMDD") + ".xlsx"
保存Excel:$报表对象, $报表路径
关闭Excel:$报表对象

输出日志("报表已生成:" + $报表路径)

进阶技巧:可以用openpyxl引擎在Python脚本里生成带图表的Excel,包含柱状图展示TOP10商品销量、折线图呈现近7日成交趋势。

E_发送通知:企业微信推送

报表生成后,自动发送到企业微信群。

在右侧指令面板新建子流程,命名为E01_发送企微通知

# 子流程:E01_发送企微通知
# 输入参数:$汇总指标(字典),$报表路径(字符串)

# 1. 构造消息内容
$消息内容 = """
📊 **拼多多店铺日报**

📅 日期:{获取当前日期()}
💰 总成交额:{¥汇总指标["总成交额"]}
📦 总订单数:{¥汇总指标["总订单数"]}单
🧾 平均客单价:{¥汇总指标["平均客单价"]}
⚠️ 退款率:{round(¥汇总指标["退款率"], 2)}%

📎 详细报表见附件
"""

# 2. 发送企业微信机器人消息
发送企业微信机器人消息:
    Webhook地址 = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxx"
    消息类型 = "Markdown"
    消息内容 = $消息内容
    附件 = $报表路径

消息里可以加预警逻辑:当退款率超过5%时,在消息里自动添加红色预警标识。

定时触发与主流程

五个子流程都写好了,最后需要一个主流程把它们串起来,再配上定时触发器。

主流程

# 主流程:拼多多日报自动化

# 1. 登录
调用子流程 "A01_登录拼多多"$登录状态
如果 $登录状态 == False:
    输出日志("登录失败,流程终止")
    终止流程
结束

# 2. 采集数据
调用子流程 "B01_采集今日订单"$原始数据

# 3. 数据处理
调用子流程 "C01_数据清洗与汇总":
    输入参数:$原始数据
    输出参数:$清洗后数据,$汇总指标

# 4. 生成报表
调用子流程 "D01_生成日报Excel":
    输入参数:$清洗后数据,$汇总指标
    输出参数:$报表路径

# 5. 发送通知
调用子流程 "E01_发送企微通知":
    输入参数:$汇总指标,$报表路径

输出日志("日报自动化流程执行完成")

设置定时触发器

  1. 点击右上角「发版」,把应用发版
  2. 客户端顶部菜单 → 「触发器」→ 「新建」→ 「定时触发器
  3. 设置每天早上8:00执行
  4. 保存并启用

四个容易踩的坑

坑一:Cookie文件路径不存在

现象:登录流程报错,提示文件写入失败。

原因D:\cookie\文件夹没有提前创建。

解决方法:在流程最开始加一个“创建文件夹”指令,确保路径存在再写入。

坑二:采集时页面元素变化

现象:昨天还能跑的采集,今天突然报“元素未找到”。

原因:电商后台页面经常改版,元素定位失效。

解决方法:在元素库里用相对XPath定位,少用绝对路径。定期检查流程,发现失效及时更新元素。

坑三:数据量太大采集超时

现象:订单量大的时候,流程跑不完,社区版30分钟额度耗尽了。

解决方法

  • 优化翻页采集效率,减少不必要的等待时间
  • 如果订单量超过150条/页,考虑分页采集时只抓取关键字段
  • 升级创业版(无时长限制)

坑四:企业微信消息发送失败

现象:流程跑完了,但群里没收到消息。

原因:Webhook地址失效、网络不通、或者触发了频率限制。

解决方法

  • 检查Webhook地址是否正确
  • 在发送消息外面包一层Try-Catch,失败时记录日志并切换到邮件备用通道
  • 如果消息里带附件,确保附件路径正确、文件存在

项目源码结构参考

一个完整的日报自动化项目,源码结构大致是这样的:

拼多多日报自动化/
├── 主流程(定时触发入口)
├── A01_登录拼多多(子流程)
├── B01_采集今日订单(子流程)
├── C01_数据清洗与汇总(子流程,含Python脚本)
├── D01_生成日报Excel(子流程)
├── E01_发送企微通知(子流程)
├── cookie/(Cookie存储目录)
│   └── pdd_cookie.txt
├── 日报/(报表输出目录)
│   └── 拼多多_日报_20260629.xlsx
└── 日志/
    └── execution_log_20260629.log

常见问题速查

问题现象根本原因修复方法
每天早上登录失败Cookie过期且账密登录失败检查账号密码是否正确,检查是否触发了验证码
采集到的数据为空日期筛选没生效或页面加载慢在点击查询后加“等待元素出现”
Excel报表打不开文件被占用或格式损坏确保Excel已关闭,检查文件路径
企微消息收不到Webhook失效或网络问题检查Webhook地址,加Try-Catch+邮件备用
定时任务没触发应用未发版或触发器未启用发版应用,检查触发器状态

推荐资源

  • 影刀官方帮助文档搜索“触发器”或“定时任务
  • 影刀社区搜索“日报系统”或“综合实战”,有大量完整项目分享
  • 本文参考的项目源码可在CSDN下载

#影刀RPA #RPA自动化 #日报自动化 #电商自动化 #数据采集 #拼多多

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。如果这篇文章对你有帮助,欢迎点赞收藏,下一篇我们聊“非技术人员学习影刀RPA的完整学习路线与自检清单”。

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