影刀RPA新手教程:第一个采集流程的完整拆解——从打开网页到导出Excel
很多人装好影刀RPA之后,看着指令面板里几百个指令,不知道第一个采集流程从哪里下手。我两年前第一次做采集也是这样,光是把网页数据存进Excel这一步,就反复折腾了一个晚上。
这篇就把"从打开网页到导出Excel"这条最短路径完整拆开讲,每一步用什么指令、参数怎么填、哪里容易卡住,全部落实到按钮和参数上。你跟着做完,手里就有一个能跑的采集流程了。
案例主线我选了最典型的场景:采集一个商品列表页的标题和价格,循环翻页,最后写入Excel。这套骨架学会,换成任何列表页都一样套用。
下载安装与浏览器插件:跑通流程的前置条件
影刀RPA官网下载客户端,双击安装包一路默认即可,安装完用手机号注册登录。社区版免费,个人学习完全够用。
装完客户端别急着写流程,先装浏览器插件。点击客户端左上角"新建应用",随便拖一个网页指令进去点运行,如果报"浏览器插件未安装",点报错提示里的安装按钮,选择你常用的浏览器(Chrome或Edge)装上,装完重启浏览器。
插件是网页自动化的桥梁,没有它,"打开网页"指令能打开页面,但所有元素定位都会失败。这是我踩的第一个坑,当时以为是流程写错了,排查半天才发现是插件没装。
元素定位四合一:采集流程的地基
影刀RPA定位网页元素有四种方法:捕获元素、XPath、CSS选择器、正则表达式。前两个用得最多,CSS在某些场景更灵活,正则主要配合文本提取用。
捕获元素是默认方式:点击指令里的"捕获元素"按钮,浏览器会自动跳转,鼠标移到目标上出现橙色边框后点击确认。它背后会自动生成一段XPath,大多数静态页面直接能用。
动态页面或者捕获不到的时候,就要手写XPath。下面是我采集列表页常用的几段写法:
# 捕获元素:商品列表里的所有商品卡片(父容器下所有子项) //*[@class="item-list"]//li # 捕获元素:每个商品卡片内的标题(相对定位到卡片内部) //*[@class="item-list"]//li//*[@class="title"] # 模糊匹配:class带动态后缀时用contains,比如"price-2024"这类 //*[contains(@class,"price")] # 参照物定位:通过"价格"文本反查它旁边的数字元素 //*[contains(text(),'价格')]/following-sibling::*[1]CSS选择器和XPath是并列关系,不是二选一。简单对比:
| 对比项 | XPath | CSS选择器 |
|---|---|---|
| 写法 | //div[@class=“title”] | div.title |
| 文本匹配 | 支持 | 不支持 |
| 向上找父级 | 支持(…) | 不支持 |
| 上手难度 | 稍陡 | 较平缓 |
我的选型习惯:要按文本找元素、要往上找父级,用XPath;纯样式类定位,CSS写起来更短。装个XPath Helper浏览器插件,写完能实时验证,强烈推荐。
变量与数据类型:采集来的数据放在哪
影刀RPA的变量有四种常用类型:数字、字符串、列表、字典。采集流程里最常用的是列表。
"获取相似元素列表(web)"指令返回的就是一个列表变量,每一项对应页面上一个相似元素。理解这一点,循环采集的逻辑就通了:先拿到列表,再循环取每一项的文本。
字符串的两个操作要熟:索引(取第几个字符)和拼接(用&或加号连接)。字典在存"标题-价格"这种键值对时好用,取不存在的键有两种方案,一是先用"判断元素是否存在"式的逻辑判断键在不在,二是用get方式给默认值,避免直接取值报错。
JSON类型主要出现在HTTP接口返回的数据里,流程是:HTTP请求拿到文本 → 转JSON对象 → 按键取值 → 需要写表格时转回文本。第一篇先知道有这回事就行。
流程控制三件套:循环、判断、异常
采集流程的核心骨架就是循环加判断。影刀RPA有四种循环,第一篇只用两种:
- For次数循环:已知要循环几次时用,比如翻10页
- 相似元素循环:页面上有一排相似元素时用,自动逐个处理
- ForEach列表循环:遍历列表变量时用,后面篇目细讲
- While条件循环:不确定次数、按条件停,翻页逻辑里常用
If条件判断在采集里最常见的用法是配合"判断元素是否存在"指令:先判断"下一页"按钮存在不存在,存在就点击翻页,不存在就结束循环。
Try-Catch异常处理建议从第一个流程就养成习惯。把整个循环体拖进Try块,Catch块里放一个"打印日志"指令记录报错信息,这样流程半夜跑挂了你至少知道挂在哪一行。我第一个流程没加这个,跑了一夜第二天发现第二页就断了,等于白跑。
网页自动化五步拆解:从打开网页到导出Excel
现在把主流程一步步搭出来。整个流程在影刀RPA编辑器里从上往下拖指令,每条指令的参数在右侧指令详情面板里填。
第一步,打开网页。左侧指令面板搜索"打开网页",拖入流程首行。URL参数填目标页面地址,打开方式下拉选"新建标签页"。如果页面加载慢,后面接一条"等待元素出现"指令,等待对象选列表容器的元素,超时时间设10秒。
第二步,获取相似元素列表。搜索"获取相似元素列表(web)",点击指令里的捕获按钮去页面上点一下任意一个商品标题,影刀RPA会自动识别出整组相似元素。输出变量命名成标题列表。
第三步,循环取文本。拖入"相似元素循环",循环体里放"获取元素属性"指令,属性选innerText(元素文本内容),把每一条标题追加到结果列表里。价格同理再抓一组。
# 影刀RPA采集流程的等价逻辑(伪代码,帮助理解执行顺序)标题列表=web.find_all('商品标题元素组')# 获取相似元素列表(web)价格列表=web.find_all('价格元素组')# 获取相似元素列表(web)foriinrange(len(标题列表)):# 相似元素循环row=[标题列表[i].text,价格列表[i].text]# 获取元素属性 innerTextexcel.append_row(row)# 写入行数据到表格第四步,翻页循环。在外层再套一个循环,循环体末尾加"判断元素是否存在"检查"下一页"按钮,存在就"点击元素(web)"点击它,再接"等待元素出现"等新内容加载出来,然后继续抓取。不确定总页数时,用While循环判断"下一页按钮的disabled属性"来决定停不停。
第五步,写入Excel。搜索"打开Excel工作表"(或"新建Excel"),路径填好,循环里每抓到一条就用"写入行数据到表格"追加一行。也可以先把所有数据攒在一个二维列表里,最后一次性写完再关文件,效率高很多,这是我后来才改过来的习惯——逐行写入几百次打开关闭文件,跑一次流程慢一半。
数据处理:采集完的第一道清洗
抓下来的数据往往带着杂质,直接用会被嫌弃。最常见的是价格带"¥"符号和空格,用"替换文本"指令把¥删掉,再用"去除空格"清理,必要时用"文本转数字"统一类型。
如果要用正则提取,配合Python节点写一段最稳:
# 输入:raw_price(如 "¥1,299.00 起拍")# 输出:clean_price(如 1299.00)importredefmain(args):raw=args['raw_price']m=re.search(r'[\d,]+\.?\d*',raw)# 提取数字部分ifm:returnround(float(m.group().replace(',','')),2)return0# 提取不到时给默认值,避免流程中断去重用"列表去重"指令即可,重复采集翻页边界的数据时很管用。
鼠标键盘与图像:网页搞不定时才出手
绝大多数网页采集用不到鼠标键盘和图像识别,但要留个印象。模拟模式靠系统消息点击,驱动模式直接驱动硬件层,网页里被拦截的点击换驱动模式往往能过。
图像识别是对付没有元素结构的场景:点击指令选图像模式,截一张目标按钮的小图当模板,运行时影刀RPA在屏幕上找这张图再点击。给目标区域起名后可以用等待图片出现、点击图像这类指令。能定位到元素就不要用图像,图像对分辨率和缩放敏感,屏幕一变就失灵。
平台实战差异:电商页面的额外注意点
把这套骨架搬到淘宝、拼多多这类平台,多出几个问题。一是登录态,打开页面可能跳登录,流程开头加"判断元素是否存在"检查登录后的标志性元素,不存在就先停下来等你手动登录一次,Cookie会保持一段时间。二是动态加载,滚动到底部才加载更多内容,循环里要加"滚动网页"指令再等待。三是反爬限制,抓太快会被弹验证码,循环里加500到1000毫秒的延时指令,宁可慢一点跑完整。
系统联动与进阶:采完自动通知
数据导出后可以接一条"发送飞书消息"或邮件指令,把文件路径和条数发给自己,跑完没跑完一眼便知。进阶玩法是HTTP请求直接调接口拿JSON数据,绕过页面渲染,速度快一个量级,不过需要会看浏览器开发者工具的网络面板,第一篇不展开。
工程化规范:从第一个流程就要养成的习惯
调试用打断点:在指令行号上右键添加断点,点运行会停在断点处,用单步执行一行行走,变量面板里能看到每个变量的实时值,比猜快十倍。我第一次翻页采集数据错位,就是靠断点一步步走发现的——等待时间不够,页面还没刷新完就抓了旧数据。
命名要规范:应用名写清平台和用途,比如"淘宝-商品列表采集",变量名用中文或清晰英文,别满屏的a1、b2。流程稳定后可以拆子流程,把"采集一页"封装成子流程,翻页主流程反复调用它。
版本选择上,社区版每天有30分钟运行时长限制,调试够用;要挂机跑长任务,得考虑创业版或企业版,这个话题第4篇专门讲。
易错速查表
| 报错现象 | 常见原因 | 解决方法 |
|---|---|---|
| 元素定位失败 | 插件未安装或未重启浏览器 | 重装插件后重启浏览器 |
| 相似元素只抓到1个 | 捕获时点到了容器而非列表项 | 重新捕获,选子元素层级 |
| 数据错位或重复 | 翻页后没等新内容加载完 | 点击后接等待元素出现 |
| Excel写入报错 | 文件被Excel软件打开占用 | 关闭Excel再运行流程 |
| 循环抓不到内容 | 页面懒加载,底部未触发 | 先滚动到底再等待再抓取 |
学习资源
官方文档和社区里能查到所有指令的详细参数说明,遇到报错先去搜报错关键词,大部分坑前人都踩过。完整流程源码我放在代码仓库 home.linyan.cloud,可以直接参考改造,对着示例改URL和元素,比自己从零搭快得多。
#影刀RPA #RPA自动化 #数据采集 #网页自动化 #Excel
作者:林焱