ARTICLE DETAIL

资讯详情

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

影刀RPA实操指南:饿了么商家与配送数据采集实战

影刀RPA实操指南:饿了么商家与配送数据采集实战 影刀RPA实操指南饿了么商家与配送数据采集实战饿了么商家后台的订单和配送数据每天都要人肉复制粘贴到Excel里对账一个店还好几个店一起管光是复制订单号、配送状态、骑手信息就要耗掉一个多小时。这篇文章讲怎么用影刀RPA把这套动作自动化登录商家后台、进订单页、抓配送数据、写入表格、跑完发通知一条流程搞定。我是非技术出身这套流程实操两年多中间踩的坑我会一个个讲清楚。先说结论整个流程不需要写代码核心指令不到十个难点不在会做而在做得稳。数据采集最怕的不是抓不到而是今天能跑明天就报错所以这篇除了讲步骤还会讲怎么把流程做得抗折腾。认识影刀RPA安装与准备工作没装过影刀RPA的先做三件事去官网下载安装包双击安装后注册账号登录打开客户端后在首页左侧点新建流程命名为饿了么订单采集然后装浏览器插件点顶部工具栏的设置进入浏览器扩展管理把影刀浏览器插件装到Chrome上。插件没装好后面所有网页自动化指令都会提示获取网页失败。用哪个浏览器也有讲究。实测Chrome稳定性最好影刀对Chrome的支持也是最完整的。如果你的Chrome不是默认路径安装在【打开网页】指令的【高级】选项里要手动指定Chrome的安装路径不然会报打开Chrome网页失败。版本选择上社区版每天免费跑30分钟采集几个店铺的订单数据够用但如果你要挂定时任务全天候跑建议上创业版执行时长不限制。元素定位四合一订单列表抓得住的根基网页采集的全部基础就是元素定位影刀RPA里一共四套打法元素捕获、XPath、CSS选择器、正则表达式。日常操作以元素捕获为主点顶部工具栏的捕获元素按钮浏览器会自动跳转鼠标移到订单行上出现橙色边框后点击确认元素就进了元素库。但只靠捕获是不够的。订单列表里每一行的结构都一样class里还经常带着一串会变的哈希值这时候就要手动编辑元素。双击元素打开元素编辑界面把会变化的节点取消勾选只保留稳定的最后一级节点再点校验能校验出一整列订单行就说明编辑对了。XPath我常用的就六种写法覆盖九成场景# 场景定位饿了么订单列表的某一行订单 //div[classorder-item] # 模糊匹配定位文本包含配送中的状态标签 //*[contains(text(),配送中)] # 属性开头匹配定位所有以order_开头的订单行 //div[starts-with(id,order_)] # 参照物定位通过配送状态文字找到同一行的骑手姓名 //*[contains(text(),配送状态)]/../following-sibling::*[1]//span[classrider-name] # 层级定位在订单容器下找价格元素 //div[classorder-item]//span[classprice] # 通配符兜底任意标签只要id是order-detail //*[idorder-detail]CSS选择器和XPath的分工是简单场景用CSS写起来短比如div.order-item span.price层级复杂、需要按文本找元素的场景用XPath。两套都会写定位失败时才能互相兜底。正则表达式主要用在元素编辑里把class中变化的数字部分用正则通配掉这是官方文档正则表达式和全局变量在元素编辑中的应用里给的正规做法不是野路子。变量与数据类型采集回来的东西都长什么样流程里数据就四种形态搞清楚就不迷糊。类型长什么样在流程里的用途字符串“配送中”订单状态、骑手姓名数字45.8订单金额、配送费列表[行1, 行2, 行3]相似元素循环的产物字典{“订单号”: “xxx”}一行订单数据打包用【设置变量】指令创建变量变量名建议带类型前缀比如list_orders、str_status后面维护时一眼就知道是什么。字典取值时如果键不存在会直接报错两种处理方案取之前用IF判断键是否存在或者用dict.get(‘键名’)这种带默认值的取法我一般用后者少一个判断分支。流程控制循环加判断采集流程的骨架订单采集的骨架就三种循环加一个判断全在影刀RPA指令面板的流程控制分类下【For次数循环】页数固定时用比如已知要采集10页【循环相似元素(web)】订单列表一行行抓数据的主力【无限循环】配合下拉加载和翻到没页为止的场景【IF 网页包含】判断当前页面有没有某个元素比如暂无订单提示循环里两个小指令特别好用【退出循环】和【继续下一次循环】。抓到重复数据时用继续跳过翻到最后一页时用退出收工。While条件循环在订单场景用得少监控类场景用得多。异常处理用Try-Catch块把抓数据的指令拖进Try块Catch块里放【打印日志】把报错信息记下来Finally块放关闭弹窗、保存表格这类收尾动作。我第一次做这流程时没加Try-Catch半夜跑批时一个弹窗把流程卡死第二天早上发现一晚上只采了3条数据从那以后所有流程必加异常处理。网页自动化核心登录、翻页与数据抓取先讲登录。商家后台不建议用RPA去填账号密码一是密码流程里存明文不安全二是风控容易盯上自动登录。正确姿势是自己手动登录一次然后流程里用【获取已打开的网页对象】指令接管已经登录的浏览器Cookie保持登录态流程只负责采集。网页打开后第一步永远是等待。页面没加载完就抓数据抓到的必然是空的。等待有三个指令要分清【等待网页加载完成】等的是整个页面刷新【等待元素(web)】等的是具体某个元素出现【等待】指令是死等固定秒数。订单列表这种局部刷新的页面用【等待元素(web)】等第一行订单出现最可靠超时时间设20秒。抓数据有两条路。第一条是【批量数据抓取】指令这是影刀RPA内置的可视化抓表工具点击【数据抓取】打开订单页面点【开始抓取】鼠标点第一行订单的订单号再点第二行影刀自动识别出这是个列表然后依次点击金额、状态、骑手姓名等字段每个字段起个列名最后确认它会把整页数据甚至后续多页一次抓回来。整页订单一次抓完效率最高。第二条路是【循环相似元素(web)】加【获取元素信息(web)】灵活度高适合页面上有合并单元格、字段不在同一层级的情况。循环体里通过【获取关联元素(web)】以当前订单行为父元素去找行内的子元素取文本这样行和字段能对上号不会串行。翻页的处理看页数是否已知页面情况处理方式用到的指令总页数固定循环固定次数点击下一页【For次数循环】总页数未知判断下一页按钮class是否含disabled【IF 网页包含】【无限循环】| 下拉自动加载 | 滚动前后元素数量一致就退出 | 【鼠标滚动网页】 || 有没有更多了提示 | 判断提示元素是否存在就退出 | 【IF 元素可见(web)】 |下一页按钮class含disabled这个判断是官方文档里给的通用方案可点击时不包含disabled到最后一页时包含。捕获元素时用元素编辑把class属性用正则通配让两种状态的按钮都能被找到然后在无限循环里取它的class属性判断是否退出。这套逻辑我在好几个后台都用过直接抄就行。数据处理写入Excel与数据清洗采回来的数据先放进影刀RPA的【数据表格】指令里暂存它是流程内部的内存表格读写速度快还能配合【循环数据表格内容】做二次处理。整场流程跑完再用【打开/新建Excel】指令打开目标工作簿用【写入内容至Excel工作表】把数据表格一次性写入最后【保存/另存Excel】加【关闭Excel】收尾。写入时有几个坑要提前防日期时间写入Excel会少8个小时是时区问题写入前先加8小时或转成文本字符串长订单号会被Excel转成科学计数法先在单元格格式里设为文本或写入时拼一个不可见字符金额数字带¥符号的先用文本替换指令清掉再转数字不然求和全是0Excel打开状态下流程写入会报错流程开头加个IF判断文件是否被占用数据清洗的通用做法是把原始数据列和清洗后数据列分开Excel里留一个原始sheet存采回来的毛数据另一个sheet放公式或Pandas处理后的结果。这样哪天清洗逻辑错了原始数据还在不用重新跑采集。鼠标键盘与图像自动化兜底手段后台页面九成操作用元素定位就能覆盖剩下几成靠图像和键盘。比如某些后台的浮层按钮捕获不到元素就用图像方式影刀RPA里用【等待图像】指令等按钮图片出现配合点击操作处理。截图时注意把按钮完整截下来背景尽量少带识别率会高很多。键盘操作主要用在登录后的验证环节和翻页快捷键上。影刀的键盘输入有模拟输入和驱动输入两种模式模拟输入快但有些后台输入框不响应这时候切到驱动模式虚拟键盘就能打进去。这是我踩过半天才想明白的坑同一个输入框模拟模式打不上字换成驱动模式秒过。进阶技能网页监听与HTTP请求订单页的数据有些是页面渲染后再异步请求接口拿的这类数据用元素抓慢可以直接监听接口。影刀RPA的监听三件套【开始监听网页请求】→ 触发页面刷新或翻页 → 【获取网页监听结果】拿到接口返回的JSON → 【停止监听网页请求】。JSON数据用JSON解析指令转成对象字段直接按key取比解析DOM稳定得多。如果后台有独立的接口且鉴权方式简单也可以直接用【HTTP 请求】指令带GET方法去拉数据响应内容里状态码、内容类型都有。但接口鉴权复杂的别硬刚网页监听方案更省事。系统联动定时任务与飞书通知定时执行在影刀RPA客户端右上角点计划任务图标新建计划选择每天固定时间执行对应流程。订单数据一般凌晨跑最稳网络空闲、自己也不用电脑。有个坑计划任务执行时如果电脑睡眠会直接失败Windows电源设置里要把睡眠关掉官方文档专门有一篇讲计划任务Windows电源设置问题。跑完的结果推送用【飞书群通知】指令飞书群里添加自定义机器人拿到webhook地址填进指令的机器人地址参数消息格式选文本类型。我把通知内容做成三段本次采集店铺数、订单条数、耗时。流程一旦异常Catch块里也发一条到群里内容带报错信息。这样我人在外面手机上看一眼飞书就知道今天的数据跑没跑成。工程化规范子流程与命名单店铺采集逻辑做成一个子流程主流程里循环店铺列表逐个调用。子流程的输入参数是店铺名称和访问地址输出参数是采集到的数据列表这样加新店铺时主流程一行都不用改。影刀RPA的子流程在左侧流程树里右键新建子流程创建参数在子流程属性面板里配置。命名规范我自己的三条规定流程文件名带版本号v1、v2变量名带类型前缀子流程命名用模块名_动作格式比如订单页_抓取列表、“Excel_写入结果”。三个月后回来看流程这些名字就是注释。调试技巧分享一个最实用的在可疑指令上右键添加断点单步执行一边跑一边看变量面板里每个变量的实时值。我排查抓到的骑手姓名全是空这个问题时就是靠单步执行发现元素编辑里多勾了一个会变的节点校验位置全偏了。易错速查表报错/现象原因解决方法获取网页失败浏览器插件没装或路径不对重装插件高级选项里指定Chrome路径未找到元素页面没加载完或元素属性变了加【等待元素(web)】元素编辑重新校验匹配到多个元素无法唯一定位元素限制条件太宽关联父元素或在元素编辑补充限制节点Excel写入日期少8小时时区问题转文本或写入前加8小时定时任务没执行电脑睡眠了关闭Windows自动睡眠学习资源与延伸阅读新手建议先把影刀官方文档里网页弹窗处理网页数据获取时需要翻页或下拉这两篇通读一遍本文翻页和弹窗的方案都源自那里讲得比我细。完整流程源码我放在代码仓库 home.linyan.cloud可以直接参考改造把店铺名和字段名换成你自己的就能跑。另外官方课程里网页自动化专题值得花一个小时过一遍比看十篇教程都省时间。#影刀RPA #RPA自动化 #数据采集 #网页自动化 #饿了么作者林焱
返回列表