☰
影刀RPA完全指南:竞品价格周报系统——从采集到邮件一气呵成
2026/9/28 18:39:47 网站建设 项目流程

影刀RPA完全指南:竞品价格周报系统——从采集到邮件一气呵成

竞品价格周报这件事,最耗人的不是分析,而是每周固定抄一遍价格:开五个竞品页面,逐个记价格、记库存、记活动标签,抄完填进Excel,再发邮件给老板。我用影刀RPA把这条链路完整跑通了,现在每周一早上九点,邮箱里自动躺着一封带Excel附件的周报,全程没人碰电脑。

这篇是完整指南,从采集写到邮件发送,中间的Excel落表、价格清洗、异常兜底全部展开。我自己是非技术出身,做电商运营的,影刀RPA用了两年多,这套周报系统是踩了无数坑之后稳定下来的版本,每个步骤我都会把指令名称和参数精确写出来,你照着搭就能用。

环境准备与安装确认

开始之前确认三件事:影刀客户端已安装、浏览器插件已装、能正常新建应用。安装本身不复杂,去官网下载安装包,双击安装后首次启动会提示安装浏览器插件,把Chrome或Edge的插件装上,否则后面的网页自动化指令全部抓不到元素。

装好后打开影刀,界面分三块:左侧是应用列表,中间是画布流程区,右侧是指令面板。所有指令都是从这个右侧面板里搜索拖出来的,比如搜"打开网页",拖到画布上就能用。

新手先建一个社区版权益账号就够练了,社区版每天有30分钟执行时长,做周报这种跑一次几分钟的流程完全够。真要天天定时跑、跑得久,再考虑创业版。

整体流程设计:先拆子流程再动手

我第一次做周报时把所有逻辑堆在一个流程里,200多步,后来改个发送逻辑整个文件翻半天。现在的做法是先拆子流程,每个子流程只干一件事。

子流程名职责关键指令
01_采集竞品数据逐个打开竞品页抓价格打开网页、获取元素文本
02_清洗价格去符号转数字文本替换、设置变量
03_写入Excel落表带日期打开/新建Excel、写入内容至Excel工作表
04_对比上周算涨跌幅标颜色读取区域、If条件判断
05_发送邮件附件+正文发送邮件

命名我用的编号前缀法,主流程里五个子流程从上到下排开,一眼就能看懂数据流向。子流程之间传数据用流程参数,比如01采集完把二维列表输出,03接收后写表。在主流程里选中子流程指令,右侧详情面板有"输入参数""输出参数"两个区域,填变量名就行。

元素定位四合一:价格字段怎么抓才稳

采集的核心是元素定位,影刀RPA里有四种武器:元素捕获、XPath、CSS选择器、正则表达式,我按使用频率排个序。

元素捕获最常用:点击顶部工具栏的"捕获元素"按钮,浏览器自动跳转,鼠标移到价格上出现橙色边框,点击确认。但捕获出来的默认属性经常带一串动态数字,换个活动页就失效。

这时候要手写XPath。我抓竞品价格用的定位思路是这样的:

# 捕获元素:商品详情页主价格(class含price的元素,排除小数部分) //div[contains(@class,'price') and not(contains(@class,'price-tag'))] # 捕获元素:促销活动标签(用文本模糊匹配,比class稳定) //*[contains(text(),'限时') or contains(text(),'满减')] # 捕获元素:参照物定位——通过"到手价"文字找它右边的价格数字 //*[contains(text(),'到手价')]/following-sibling::*[1]

CSS选择器适合简单场景,写起来短:div.price > span这种层级写法在价格这种结构清晰的页面上很稳。两者怎么选,我的经验是:结构浅、class干净用CSS;需要按文本找、或者要往前找兄弟元素,XPath是唯一解。

正则表达式用得少但要会:有些页面的价格藏在长文本里,比如"券后价199.00元",用正则提取数字比截取字符串靠谱。

网页自动化:等待、翻页、弹窗三道坎

三个子流程01里最费劲的就是这三件事。

第一道坎是等待。页面没加载完就抓,抓到的是空值。影刀RPA的等待指令有好几种,我固定用【等待元素】而不是固定等待:设置等待"价格元素"出现,超时10秒,元素出现才往下走。固定等待3秒这种写法,网络一抖就翻车。

第二道坎是翻页。竞品列表页通常不知道总页数,官方文档里给的标准做法是判断"下一页"按钮的状态:点击前用【判断元素是否存在】检查下一页按钮,同时检查它的disabled属性。我用的循环逻辑:

  1. 【获取相似元素列表】抓当前页所有商品卡片
  2. 【相似元素循环】逐个提取商品名和价格
  3. 循环结束判断下一页按钮是否可点
  4. 可点就点击翻页,回到第1步;不可点就结束循环

第三道坎是弹窗。电商平台登录弹窗、优惠弹窗特别多,处理弹窗的标准流程是:在采集动作之前,用【判断元素是否存在】检查弹窗的关闭按钮,存在就点掉,不存在直接往下走,千万别把"点关闭按钮"写成必经步骤。

变量与数据类型:价格清洗的坑

抓到的价格从来不是干净的数字,可能是"¥1,299.00"或者"1.2k+"。这里全是变量类型的知识。

【获取元素文本】返回的是字符串,字符串要先过【文本替换】把逗号和货币符号替换成空,再转数字。影刀RPA里字符串转数字我直接在设置变量指令里用Python表达式:float(价格文本.replace('¥','').replace(',',''))。

列表和字典是周报系统的骨架。每个竞品我存成一个字典:{"店铺": "XX旗舰店", "商品": "XX面霜50g", "价格": 1299.0, "活动": "限时直降"},多个竞品装进列表,最后整体写入Excel。字典取值有个坑:键不存在会直接报错,两种方案,一是取值前用If判断键是否存在,二是用dict的get方法给默认值,活动 = 商品字典.get('活动','无'),取不到就给"无",流程不断。

JSON也顺带说一句,后面如果要对接API拿历史价格,返回的是JSON文本,用【字符串转JSON】指令转成字典再取字段,这是标准的HTTP转JSON、操作、再转文本的三步走。

流程控制:涨跌判断和异常兜底

流程控制就三样:循环、条件、异常。

循环上面翻页那段已经讲了。条件判断用【If】指令,周报里最典型的是"和上周比价":读取上周价格列,If本周价格 < 上周价格,就往备注列写"降价",Else写"持平"或"涨价"。多个条件组合用and/or连接,比如降价超过10%才标红:降幅 > 0.1 and 上周价格 > 0。

异常处理是这套系统能每周稳定跑的关键。整个采集子流程包在【Try-Catch】里,Catch块做两件事:用【打印日志】记录是哪个竞品哪一步挂了,再给这个竞品的价格填"采集失败"占位,保证Excel和邮件照常生成。Finally块放关闭浏览器和关闭Excel。我的原则是:单品失败不影响整期周报,宁可少一行数据,不能整个流程趴窝。

数据处理:Excel落表的精确写法

【打开/新建Excel】指令的参数有几个讲究:驱动方式我选office,兼容性最好;“是否可视化"我勾上,调试阶段能亲眼看到每一步写了什么;Excel对象保存为变量,后面所有写表指令都引用它。官方文档里明确提示这条指令要和【关闭Excel】配套使用,用完就关,不然Excel进程会残留,下次运行报"发生意外”。

【写入内容至Excel工作表】的写入方式选"追加一行",每采完一个竞品追加一次。写入内容传一维列表:[日期, 店铺, 商品名, 价格, 活动标签]。

这里有个我印象最深的坑:竞品ID和价格列一定要设置成文本格式。指令详情面板里有"格式设置为文本的列"这个配置项,填列号用英文逗号分隔。有一周竞品ID以0开头,被Excel自动转成数字,0全没了,回溯对账对了两小时。另外长数字串还会被转成科学计数法,同样是没设文本列的锅。

对比上周数据的读取用【读取区域】指令,把上周同列读成二维列表,在Python模式里逐行比对算降幅,结果再写回备注列。

鼠标键盘与图像:兜底手段

九成以上的动作都该用元素定位,鼠标键盘和图像识别是兜底。有些竞品页面的价格是Canvas画出来的图片,元素抓不到,这时候用图像识别:影刀的图像指令里wait_appear等待图片出现、click点击图像、锚点九位置加偏移量可以精确定位图片周围的区域。我的用法是图像识别只用来点,不用来读数——图片里的文字该走OCR,别硬猜。

键盘方面,批量输入搜索词用【模拟按键】组合,粘贴类操作统一Ctrl+V走剪贴板,别用逐字符模拟输入,慢还容易丢字符。

进阶技能:Python协同做清洗

字符串处理复杂了以后,我把清洗逻辑抽成了Python函数,用【运行代码】指令调用。影刀RPA里新建Python模块,写好def函数,其他模块能跨模块调用,一处修改全局生效:

# 输入:原始价格字符串,如"¥1,299.00"或"券后 999"# 输出:float价格;解析失败返回Nonedefclean_price(raw):ifrawisNone:returnNoneimportre# 正则提取第一串数字(含小数点)m=re.search(r'\d+(?:\.\d+)?',raw.replace(',',''))ifm:returnfloat(m.group())returnNone

清洗完在流程里接【打印日志】把结果打出来核一遍,这个习惯帮我拦掉过无数次脏数据。

平台实战:淘宝和拼多多的差异点

淘宝竞品页相对规范,价格元素class里基本都带price字样,XPath好写。要注意的是登录态:没登录只能看部分商品,我会先用影刀的浏览器管理把登录态保持住,Cookie在浏览器Profile里不动它。

拼多多是另一套思路,桌面网页端反爬严格,实操里更多用移动端页面配合手机自动化做,或者干脆采它的搜索结果页。价格经常带"万人团"“百亿补贴"等多种标签,我的字典里活动字段就用get方法兜底成"无”,前面讲过了。

抖音竞品如果你也要采,它是无限滚动加载,没有翻页按钮,逻辑改成:滚动到底部→判断商品列表元素数量是否增加→不增加就停。这个滚动判断加index去重的写法,处理懒加载页面通用。

系统联动:发邮件和定时任务

到了周报的最后一公里。【发送邮件】指令在右侧指令面板搜"发送邮件"就有,配置项照着填:

  1. 发件人填你的邮箱,发件人名称填"价格周报机器人"
  2. 收件人可填多个,邮箱之间用英文分号分隔
  3. 主题用Python表达式拼日期:“竞品价格周报”+当周周一的日期
  4. 正文写明本周降价明细,勾选"HTML格式"可以加粗标红降价商品
  5. 邮件附件选上周生成的那个xlsx文件

高级设置里SMTP服务器下拉直接选QQ/163/126邮箱,勾选"使用SSL"和"SMTP服务器需要身份验证"。密码那里填的不是邮箱登录密码,是授权码,我在QQ邮箱设置里开了SMTP服务拿到授权码才发出去,这一步卡过我半天。

定时执行在影刀客户端左下角"计划任务"里新建:选择已发布的周报应用,执行周期设每周一09:00。有个官方文档明确提过的坑:Windows电源设置会把定时任务卡死,进入系统设置→电源和睡眠,把屏幕和睡眠都改成"从不",否则电脑半夜休眠,周一早上任务压根不触发。企业版还可以用控制台的调度管理,新建常规任务时能写Crontab表达式配更复杂的周期。

工程化与调试规范

最后说几句能让你少返工的习惯。调试用断点:在可疑指令上右键添加断点,运行到那里会停住,配合变量面板逐个看变量的实际值,比来回跑整个流程快十倍。关键节点都加【打印日志】,出问题时日志文件就是破案现场。

版本方面,社区版练手,正式上线前留意执行时长限制,创业版不限时长还能多任务。流程每改一版,把子流程导出备份,文件名带日期,回滚就靠它。

易错速查表

报错/现象原因解决
Excel报"发生意外"多个Excel进程残留任务管理器结束Excel进程,流程首行加【终止程序】
发邮件报UnicodeDecodeError电脑名是中文改成英文计算机名后重启
定时任务不触发系统休眠锁屏电源和睡眠改成"从不"
写入长数字变科学计数法未设文本列写入指令里"格式设置为文本的列"填列号
邮件发送失败填了登录密码SMTP身份验证填授权码
采集到空价格页面未加载完改用【等待元素】替代固定等待

学习资源与延伸阅读

这套周报系统的完整流程源码我放在代码仓库 home.linyan.cloud,五个子流程的分步截图和XPath都在里面,可以直接参考改造。官方的邮件自动化和Excel自动化专题课程也值得过一遍,把指令吃透再动手,比边猜边试快得多。


#影刀RPA #RPA自动化 #数据采集 #竞品分析 #定时任务 #邮件自动化

作者:林焱

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询