影刀RPA完全指南:舆情监控系统——关键词全网巡检与告警
品牌被人在网上说了坏话,等老板拿着截图来找你,事情已经发酵半天了。人工盯微博、盯新闻站、盯贴吧,三个人轮班都盯不过来,这是我带过的一个运营团队最真实的痛点。后来我用影刀RPA搭了一套关键词舆情巡检系统,每30分钟自动扫一遍全网关键词,发现新内容直接推飞书群告警,全程没人值守。
这篇是影刀RPA完全指南风格的一篇,我把舆情监控这个案例从头到尾拆给你看:关键词怎么配置、搜索结果怎么翻页采集、怎么判断"这条是新出现的"、告警怎么发到群里。跟着做完,你能得到一个每天早上自动汇报、全天定时巡检的可用系统。
我也是非技术出身,做这件事之前连XPath是什么都不知道,实操两年下来,这类流程的关键难点其实就三个:定位、去重、通知。下面按顺序讲。
认识影刀RPA与安装准备:十分钟搭好巡检环境
去影刀官网下载客户端,双击安装包一路下一步,装完后用手机号注册登录。社区版免费,每天可运行30分钟,跑这种定时巡检任务基本够用;如果你要全天高频巡检,创业版没有时长限制,按需升级。
装完第一件事是装浏览器插件。点客户端右上角的"设置",进入"浏览器插件",把Chrome或Edge插件装上并启用,网页自动化全靠它。装完在浏览器右上角能看到影刀的图标就算成功。
元素定位四合一:搜索结果列表怎么抓得又准又稳
舆情巡检的核心动作,是在搜索页把每条结果的标题、链接、发布时间抓下来。这里必须讲清楚元素定位的四种手段,因为不同网站结构不一样,你得会换工具。
元素捕获是最基础的:点击影刀顶部工具栏的"捕获元素"按钮,浏览器里鼠标移过去出现橙色边框,点一下确认。但搜索结果列表里的条目长得一模一样,单点捕获只能抓到第一条,这时候要用相似元素的思路。
XPath是最常用的定位语言,下面是舆情场景里最实用的几种写法:
# 捕获元素:搜索结果列表里每一条结果的标题(取所有,不是第一条) //div[@class="result-list"]//a # 模糊匹配:标题里包含"涨价"这个关键词的条目 //*[contains(text(),'涨价')] # 参照物定位:通过"发布时间"文本定位它的父级容器,再找里面的链接 //*[contains(text(),'发布于')]/ancestor::div[1]//a # 属性部分匹配:class是动态的,只匹配前缀稳定的部分 //div[starts-with(@class,'card_')]//h3CSS选择器和XPath是并列关系,不是谁取代谁。简单场景CSS更短,比如div.result-list a等价于上面第一行;但要往上找父级、按文本匹配,CSS做不到,只能XPath。我的选型经验:固定结构用CSS,带文本判断或层级跳转用XPath。
第三种是正则表达式,用在从杂乱文本里抠内容,比如从"3小时前发布于北京"里提取"3小时前"。第四种是图像定位,舆情场景里偶尔处理验证码弹窗才用得上,后面讲。
变量与数据类型:去重的关键在字典
巡检系统最容易翻车的地方是同一条舆情反复告警。解决办法是用一个字典变量记录"已经见过的链接"。
影刀里常用四种数据:数字、字符串、列表、字典。关键词清单用列表存;"链接 → 首次发现时间"这种对应关系用字典存,新增行记录前先判断字典里有没有这个键,键不存在时影刀不会报错,返回空值,你拿这个特性判断即可。网页接口返回的JSON数据,用"将JSON字符串转换为Python对象"这类指令转成对象再操作。
我第一次做的时候用列表存链接去重,跑了一晚上列表越攒越长,每次判断都要从头比一遍,越跑越慢。换成字典之后,判断是否存在是常数时间,这个坑记住。
流程控制:三层循环骨架与Try-Catch保命
舆情巡检的流程骨架是三层:外层ForEach列表循环遍历关键词,中层循环相似元素(web)遍历搜索结果,内层IF条件判断这条是不是新的。
具体做法:用"打开网页"指令打开搜索页,URL参数直接拼关键词;用"循环相似元素(web)"指令圈住结果列表,循环体里用"提取文本"指令拿标题和时间;用IF条件判断"IF 网页包含"某些负面词,命中才进入告警分支。
所有网络操作都要包进Try-Catch。把可能出错的指令拖进Try块,Catch块里放"输出日志"记录报错信息和当前关键词,Finally块放关闭弹窗和关闭网页的清理动作。这样某个关键词搜索页挂了,流程不会整体崩掉,继续巡下一个。
网页自动化三个硬骨头:等待、翻页、动态加载
等待策略:三种等待的区别与选择
影刀里有三类等待,选错就是踩坑的开始。固定等待(等待几秒)最不推荐,网络一慢就抓空;"等待元素(web)"指令可以等元素出现或消失,超时后自动往下走并返回True/False,这是巡检场景的主力;"打开网页"指令自带的"等待网页加载完成"参数管页面整体加载,建议超时设20秒。
翻页:不确定总页数怎么办
舆情搜索结果经常翻到很多页,你不知道总页数。通用做法是While条件循环:每页抓完数据后,用IF 元素可见(web)判断"下一页"按钮是否处于可点击状态。很多网站翻到底后按钮的class里会出现disabled,用XPath//a[contains(@class,"next") and not(contains(@class,"disabled"))]判断,抓不到这个元素就说明到头了,跳出循环。
懒加载与滚动
部分站点下拉才加载更多,用"滚动鼠标滚轮"指令滚到底部,再用"等待元素(web)"等新内容出现,配合index去重:把已抓到的条数记下来,新加载的从上次的位置继续取。
数据处理:Excel落表与文本清洗
抓下来的数据先写进Excel。用"写入内容至Excel工作表"指令,配合行号变量逐行追加;如果数据量大,先攒进数据表格,最后一次性"写入表格数据"到工作表,速度比逐行写快很多。
清洗主要靠文本指令和Python。发布时间经常是"3小时前"“昨天 18:22"这种相对时间,用"从文本中提取内容"或"截取一段文本"初步切分,复杂的交给"插入代码段(Python)”:
# 输入:网页抓到的相对时间字符串(变量 t 的值,如 "3小时前")# 输出:标准化后的小时数 hours_agoimportre t=t.strip()# 去掉两端空格,网页抓取常带隐藏换行符m=re.search(r'(\d+)\s*分钟前',t)ifm:hours_ago=round(int(m.group(1))/60,2)# 分钟转小时else:m=re.search(r'(\d+)\s*小时前',t)hours_ago=int(m.group(1))ifmelse24# "昨天"按24小时算超过预警阈值(比如6小时内的新内容)就标记为"紧急",进入告警分支。
鼠标键盘与图像自动化:登录态和验证码兜底
多数舆情站点需要登录,Cookie过期时页面会跳到登录页。流程开头用IF 元素可见(web)判断登录框是否存在,存在就先走登录子流程。
遇到滑块或点选验证码,元素定位基本无效,这时候用图像自动化:用"等待图像"指令等验证码弹窗出现,再用"点击图像"按图像匹配去点。影刀的图像指令支持锚点九宫格位置加偏移量,滑块场景常用"从元素中心偏移X像素"的方式拖拽。验证码识别率不高的平台,更稳妥的做法是流程开头检测到验证码时直接发消息通知人来处理,别硬刚。
进阶技能:网页监听与HTTP请求,比页面抓取更稳
有的站点前端做了反爬混淆,页面上抓文本很费劲,但数据其实是一次接口请求返回的JSON。影刀的"开始监听网页请求"指令可以指定监听某个接口地址,触发搜索后用"使用网页监听指令获取数据"拿到原始JSON响应,再用Python解析字段。这条路绕过了页面渲染,稳定性比抓页面高一个档次。
对于完全公开的数据源,也可以直接用HTTP类指令发GET请求拿JSON,省掉打开浏览器的开销。两种方式我都用过,结论是:优先监听,次选页面抓取,最后才考虑纯HTTP,因为纯HTTP要自己处理Cookie和签名。
系统联动:飞书群告警与定时触发器
告警推送用"飞书群通知"指令:在飞书群里添加自定义机器人拿到webhook地址,填进指令的"机器人地址"参数;如果机器人开了签名校验,把密钥填到"签名校验"参数。消息格式选文本类型,支持用<at user_id="all">所有人</at>@全员,紧急舆情用得上。
# 飞书告警消息模板(拼接后传入"飞书群通知"指令) 【舆情告警】关键词:{关键词} 标题:{标题} 链接:{链接} 发现时间:{当前时间}定时巡检用定时触发器:支持每日触发、每周触发、自定义间隔和Cron表达式,还可以设置跳过法定节假日。我的配置是工作时段每30分钟一次巡检,每天早上9点额外跑一次全量汇总。触发器要生效,记得确保高级任务计划已启用,这台机器不能关机休眠——Windows电源设置里把睡眠关掉,我就因为电脑自动休眠漏报过一晚上舆情。
企业版调度中心还有"任务监控"页面,可以配置告警邮箱和钉钉群,计划任务执行异常时自动收到提醒,人不在电脑前也知道流程挂没挂。
工程化规范:子流程拆分让系统可维护
别把所有逻辑堆在一个主流程里。我的拆法是五个子流程:登录保活、单关键词巡检、数据落表、去重判断、飞书告警,主流程只负责循环调度。每个子流程用编号命名,比如"02_单关键词巡检",参数用输入输出变量传递,告警子流程以后换个业务场景直接复用。
调试时善用断点:在指令上右键添加断点,单步执行,配合变量面板看每一步的值。命名规范也重要,变量统一用小写下划线,比如 last_check_time,三个月后回来看流程不费劲。
易错速查表:我踩过的坑都在这
| 现象 | 原因 | 解决办法 |
|---|---|---|
| 相同舆情反复告警 | 没有持久化去重,字典每次运行清空 | 链接存Excel或数据库,启动时先读入字典 |
| 翻页翻到第二页就报错 | 下一页按钮disabled后仍尝试点击 | 用IF 元素可见(web)判断可点击状态再翻 |
| 定时任务半夜没跑 | 电脑休眠或插件被浏览器禁用 | 关闭系统睡眠,插件设为允许始终运行 |
| 抓到的文本带换行和空格 | 网页节点里有隐藏字符 | 写入前统一strip,或用删除文本两端空格类指令 |
| 飞书消息发不出去 | webhook填错或签名校验没配密钥 | 重新复制机器人webhook,核对签名密钥 |
学习资源与延伸阅读
官方文档和影刀学院的视频课程建议先过一遍网页自动化和异常处理两个专题,比我这篇讲得系统。这套舆情巡检系统的完整流程源码我放在代码仓库 home.linyan.cloud,可以直接参考改造,把关键词表和飞书机器人换成你自己的就能跑。
#影刀RPA #RPA自动化 #舆情监控 #数据采集 #定时任务 #飞书通知
作者:林焱