ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

影刀RPA实操指南:通用采集模板设计——一套模板改改就能用

影刀RPA实操指南:通用采集模板设计——一套模板改改就能用 影刀RPA实操指南通用采集模板设计——一套模板改改就能用同一套采集逻辑我在拼多多写了一遍淘宝又重写了一遍小红书再重写一遍——写到第三遍我突然反应过来翻页、等待、抓取、写Excel、发通知这些环节每家平台的处理方式几乎一样唯一的差别就是元素定位和网址。重复造轮子的时间比写逻辑本身还多。于是我把影刀RPA的采集流程重新设计成了一个通用模板主流程骨架加占位子流程换平台时只需要改配置表和替换几个元素的定位方式十分钟内跑起来。这篇把这个模板的设计思路和搭建步骤完整拆开讲适合已经会写单平台采集、但不想每个平台都从零开始的人。通用模板的总体结构主流程骨架加占位子流程模板的核心思想是骨架不变血肉可换。整个项目只有一条主流程和六个固定子流程。主流程读配置Excel→调用01_打开网页→调用02_采集数据→调用03_数据清洗→调用04_写入Excel→调用05_飞书通知01_打开网页打开目标网址、处理弹窗、等待加载平台差异小基本不用改02_采集数据翻页循环加数据提取这是唯一需要按平台大改的子流程03_数据清洗去重、去空、价格格式化用列表和字典操作实现全平台通用04_写入Excel按配置表定义的列名写入全平台通用05_飞书通知发送运行结果全平台通用换平台时你的工作量集中在02这一个子流程和一张配置表上其他子流程原样复用。配置表驱动让流程改表不改码配置表是模板的灵魂我把所有会变的东西都抽出来放进一张Excel。配置项示例值说明目标网址站点搜索页链接01子流程读取关键词列表多个搜索词循环采集用最大页数10防止无限翻页输出文件路径按日期命名04子流程写入通知开关是 / 否控制飞书通知01子流程用读取指令把配置表整页读进字典变量主流程全程只消费这个字典指令里找不到任何写死的网址和关键词。这个设计直接参考了我自己做店群多店铺采集的教训以前网址写在指令参数里十个店铺要复制十个流程现在一张表搞定。打开网页与等待策略模板里最容易被忽视的稳定器01_打开网页子流程看着简单实际是采集稳定率的第一道关。操作上用打开网页指令详情面板里URL参数从配置字典取打开方式按需求选网页对象保存为obj_主页面。等待不要只靠固定时间我的做法是三段式先用等待指令给一个基础加载时间再用等待元素出现等待列表容器的标志元素超时时间设20秒元素出现前如果弹出登录框、广告层先处理弹窗再继续弹窗处理按官方文档的五步标准流程走定位弹窗元素→判断存在→点击关闭→验证消失→继续主逻辑。平台弹窗五花八门但处理套路是统一的这段逻辑写一次就能在所有平台复用。翻页设计不确定总页数时的disabled判断02_采集数据子流程里翻页是第一个要模板化的逻辑。大多数平台不告诉你总页数官方文档给过标准方案我直接搬过来用F12查看下一页按钮发现可点击时它的class属性不含disabled到最后一页变成不可点击时才含disabled。模板里的做法是无限循环加属性判断# 捕获元素下一页按钮两种状态都能匹配到 # 用正则把会变化的class通配掉只锁定按钮本身 //*[contains(class,next) and contains(class,btn)] # 判断逻辑在循环里检查该元素的class属性 # 属性值包含 disabled -- 已到最后一页退出循环 # 属性值不包含 disabled -- 点击下一页继续采集另一种等价做法捕获元素时刻意勾选class属性作为限制条件让这个元素只能匹配到可点击状态的下一页按钮循环里用判断元素是否存在找不到就退出。两种写法我都验证过选一种写进模板以后所有平台翻页都是这一段。翻页循环里一定要加最大页数保护配置表里的max_page就是防死循环的保险丝我挂机跑飞过一次才长记性。懒加载与相似元素提取下拉页面的标准处理小红书、抖音这类滚动加载的平台翻页逻辑换成懒加载处理官方文档的方案我做了模板化。鼠标滚动网页到底部触发数据加载适当等待滚动前后各获取一次相似元素列表比较元素数量数量增加了说明还有内容继续滚数量不变说明加载完了退出循环有的页面滚到底有没有更多了到底啦之类的提示直接用判断元素是否存在检测提示元素存在即退出提取数据时用获取相似元素列表拿到条目集合再用For次数循环按下标操作。这里有个文档明确写过的坑如果网页在循环中会刷新、操作过的元素会消失不要直接相似元素循环改用For次数循环循环体内重新获取列表按序号取项。数据清洗与写入Excel全平台通用的两个子流程03_数据清洗我固定做四件事全部用列表和字典操作完成不依赖平台特征去空行过滤列表里字段缺失的条目去重按商品标题或ID做字典键去重格式化价格里的¥和千分位去掉转成数字补字段给每条数据补上采集时间和来源关键词04_写入Excel用写入内容至Excel工作表把清洗后的列表一次写入。这里有两个文档记录过的真实报错要提前规避xls后缀的文件写入超65536行会报错模板统一用xlsx流程开头放一条终止程序清掉残留Excel进程避免多进程冲突报发生意外。# 数据清洗子流程核心示意编码版# 输入raw_list02子流程输出的原始列表# 输出clean_list清洗后的列表传给04子流程clean_list[]seenset()# 用集合做标题去重foriteminraw_list:titleitem.get(title,)# 字典取值带默认值防键不存在报错priceitem.get(price,)ifnottitleornotprice:# 过滤空数据continuepriceprice.replace(¥,).replace(,,)iftitleinseen:# 跳过重复商品continueseen.add(title)item[price_num]price clean_list.append(item)异常处理与日志模板的兜底层每个子流程内部都包一层try-catch这是我模板里雷打不动的结构Try块放业务指令Catch块放打印日志加错误截图Finally块放关闭网页、清理Excel的收尾指令。主流程层面再套一层任何一个子流程抛错主流程记录后跳过当前关键词继续下一个而不是整个停摆。挂机采集最怕的就是半夜卡死这套双层异常加最大页数保护的结构我连续挂机跑四周没出过一次需要人工干预的故障。换平台的改造点只动元素和配置模板化之后换平台的实际工作量清单如下给大家一个直观预期。改造项工作量位置配置表填网址和关键词5分钟配置Excel重新捕获列表元素10分钟02子流程| 调整翻页按钮定位 | 5分钟 | 02子流程 || 确认弹窗类型 | 视平台 | 01子流程 |元素捕获时点工具栏捕获元素橙色边框确认class带随机哈希的平台改用手写XPath或CSS属性选择器。定位方式四件套捕获、XPath、CSS、正则在这个环节各司其职XPath和CSS的选型原则是结构规整用CSS需要按文本或层级跳转用XPath。系统联动飞书通知与定时任务05_飞书通知子流程用飞书群通知指令填机器人webhook地址消息格式选文本类型采集完成把总条数、耗时、异常次数拼成一句话发群里。配合定时任务每天固定时间触发我现在每天早上到工位数据已经在飞书群里等我了。这套通知结构是全平台共用的接入新平台不需要任何修改——因为它只依赖04子流程输出的标准数据结构不依赖任何平台细节。通用模板易错速查最后是模板使用中的高频问题汇总。翻页死循环抓不完——检查最大页数配置是否生效下一页元素是否漏判了disabled懒加载页面只抓到一部分——确认滚动后有无等待且滚动前后元素数量比较逻辑正确写Excel报发生意外——检查是否xls后缀、有无多个Excel进程残留循环中元素找不到——网页有刷新行为时改用For次数循环重新获取列表换平台后弹窗没关掉——新平台的弹窗要在01子流程补对应判断模板只兜通用弹窗学习资源与延伸阅读官方文档里网页数据获取时需要翻页或下拉“网页弹窗处理”网页相似元素循环常见场景及解决方案三篇是这个模板所有核心逻辑的出处建议逐篇精读。整套通用采集模板的源码我放在代码仓库 home.linyan.cloud主流程加六个子流程加配置表齐全可以直接参考改造。#影刀RPA #RPA自动化 #数据采集 #批量采集 #流程模板化作者林焱
返回列表