影刀RPA新手教程:网站元素变化监控实战——页面更新自动检测与通知
影刀RPA新手教程网站元素变化监控实战——页面更新自动检测与通知一、认识影刀元素监控与hash对比原理网站元素变化监控的核心是「抓取→hash→对比→报警」用影刀的「获取元素信息」指令抓元素的outerHTML或textContent然后用Python的hashlib计算MD5两次hash不一样说明页面变了。为什么用hash不用直接比字符串hash是固定长度32位MD5存起来省空间而且对比速度快直接存整个HTML文本几千次监控后你的Excel能撑到几百MB。监控频率用影刀的「计划任务」设置竞品价格页面每30分钟抓一次库存页面每5分钟抓一次频率太高会被封IP太低漏掉变化30分钟是平衡点。影刀流程的逻辑打开网页→等待元素加载→抓取元素内容→计算hash→和上次hash对比→不一样就截图发通知更新hash记录顺序不能乱乱了会漏掉变化或误报。home.linyan.cloud 上有元素监控的完整示例代码包括hash计算函数和变化检测逻辑直接复制改URL就能用。二、元素定位精准抓取监控目标区域监控价格或库存要定位到具体元素不能用整个页面HTML页面底部有个「访问量统计」组件每次都变整个页面hash永远不一样要用XPath定位到价格所在的div。XPath用contains(class,price)模糊匹配不要精确匹配class全名电商网站经常改class名一改你的脚本就挂了模糊匹配能保证网站小改版脚本还能用。动态加载的内容比如「剩余库存XX件」要用「等待元素出现」指令等文本出现再抓不等直接抓拿到的是「加载中…」hash对比永远和上次不一样误报到死。iframe里的元素要用「切换到iframe」指令切换进去再抓不切换抓到的是空的hash是空字符串的MD5d41d8cd98f00b204e9800998ecf8427e每次都一样永远不报警。元素定位的筛选感同一个页面先抓大区域整个商品信息区做hash如果有变化再抓小区域价格、库存、标题逐个对比确定是哪块内容变了通知里写清楚变化的区域。三、变量与数据类型组织hash记录与变化历史上次的hash值存「字典」变量key是URL或元素XPathvalue是上次抓到的hash字符串每次对比完更新这个字典存到本地JSON文件做持久化流程重启后hash记录不丢。变化历史存Excel字段包括检测时间、URL、元素XPath、上次hash、本次hash、是否变化、截图路径用「打开Excel」指令写入每次检测完追加一行不要覆盖。截图路径用「字符串格式化」指令生成C:/监控截图/{日期}/{URL简称}_{时间}.pngURL简称用「字符串替换」把特殊字符?*换成下划线不替换Windows不允许做文件名。变化次数计数器用「数字」变量每次检测到变化就1累计变化超过5次说明该页面最近频繁更新发一条「高频更新预警」通知提醒自己去看是不是有大促活动。变量类型的坑hash值是字符串对比时用「条件判断」指令的字符串对比不要用数字对比虽然看起来都是数字和字母但类型是字符串用数字对比永远不等。四、流程控制变化检测与分级通知变化检测用「条件判断」指令对比两个hash值不相等→变化了→走变化处理流程相等→没变化→写日志后结束本次检测不要变化了还走没变化的逻辑。变化处理流程先「截图」保存证据→再「发送飞书消息」通知→最后「更新hash记录」→如果截图或发通知失败用「尝试捕获」捕获异常捕获到异常后写入「异常日志」Sheet不要硬跑硬跑漏掉了变化你不知道。分级通知价格下降→发「紧急」通知红框截图 发邮件给采购库存变化→发「普通」通知正常截图页面结构变化元素抓不到了→发「异常」通知报元素定位失效三个级别用不同的消息模板。流程控制里加「频率限制」同一个页面10分钟内只发一次通知防止短时间内页面频繁变化刷屏比如秒杀开始前库存数字每秒都变频率限制用「日期时间差值」指令判断上次通知时间。真实踩坑页面加载不完全时抓到的hash和加载完的hash不一样要用「等待元素出现」等关键点出现再抓关键点选价格或库存文本不要选页面顶部的logologo一直存在等它没意义。五、网页自动化打开页面与等待加载完成打开监控页面用「打开网页」指令超时设10秒超时就关闭标签页重试重试3次还打不开发「页面无法访问」通知可能是网站挂了或你的网络挂了。等待页面加载用「等待元素出现」指令等待目标元素价格文本出现等待时间设5秒5秒内没出现说明页面结构可能变了抓不到元素要发「元素定位失效」通知。JavaScript渲染的页面React/Vue写的要用「执行JavaScript」指令等渲染完成await new Promise(r setTimeout(r, 2000))等2秒让JS渲染完再抓不等抓到的是初始HTML不是渲染后的。分页监控用「获取元素属性」指令读「下一页」按钮的href有href就点进去继续监控没有就说明到尾页了这个比「元素是否存在」准因为下一页按钮一直存在只是变灰。网页自动化的坑电商网站有反爬频繁访问会跳验证码用「条件判断」检测是否出现验证码出现了截图发通知给自己人工处理不要假设验证码会自动消失。六、数据处理计算hash与变化分析计算MD5 hash用「执行Python代码」指令代码这么写真实可用不是demoimporthashlibdefcalc_md5(text):returnhashlib.md5(text.encode(utf-8)).hexdigest()调用时把抓取到的元素内容字符串传进去返回32位MD5值存到变量里和上次对比。变化分析hash变了但内容可能只是多了一个空格或换行要用「字符串替换」把空格、换行、制表符都去掉再算hash去掉空白字符后再对比真正的 content change 才会触发通知。变化历史统计用「Excel读取」指令读历史记录用「列表筛选」指令筛选出最近7天的变化记录统计变化频率频率高的页面说明竞品在频繁调价要重点关注。数据处理真实细节抓取到的文本可能有编码问题中文变成\uXXXX用Python的text.encode(utf-8).decode(utf-8)规范化后再算hash不规范化同样的文本算出来的hash不一样。数据处理的筛选感变化记录按「变化类型」筛选价格变化/库存变化/页面结构变化不同类型的通知发给不同的人价格变化发采购页面结构变化发技术。七、鼠标键盘图像自动化截图与标注变化区域变化检测成功后用「截图指定区域」指令截变化区域的图区域坐标用「获取元素位置」指令动态获取不要写死坐标写死坐标换分辨率就截歪了。截图后标注变化区域用「图像操作」指令在截图上的变化区域画红框红框的位置用元素的坐标算(x, y, xwidth, yheight)标注完的图片发通知时附上一看就知道哪里变了。批量监控多个页面时用「For循环」遍历URL列表每个URL截图存到不同文件文件名带URL简称和时间不混在一起后面复盘哪个页面变了好找截图。截图失败比如元素突然消失了用「条件判断」检测截图文件是否生成没生成就用「全屏截图」指令截整个页面至少有个全屏的图完全没图后面复盘不知道发生了什么。鼠标操作的坑标注红框用Python的PIL库from PIL import ImageDraw影刀的「图像操作」指令功能有限画复杂图形要用PILPIL要先pip install pillow。八、进阶技能outerHTML vs textContent的选择策略outerHTML包含元素的所有HTML标签适合监控「页面结构是否变化」比如竞品改版了价格从span classprice99/span变成了div classnew-price¥99/div结构变了但价格数字可能没变。textContent只包含文本内容适合监控「价格/库存数字是否变化」不包含HTML标签页面改版但价格数字没变时不误报改版误报是最常见的问题用textContent能避掉80%。选择策略先监控textContent价格/库存数字如果textContent没变但你觉得页面可能改版了再监控outerHTML做二次确认两个都监控会收到双倍通知烦死。获取outerHTML用「在元素上执行JavaScript」指令代码写function(element) { return element.outerHTML; }获取textContent写function(element) { return element.textContent; }两个函数都返回字符串。进阶技巧监控SPA单页应用用MutationObserver监听DOM变化但影刀不支持直接跑MutationObserver变通方案是定时抓→对比间隔设短一点10秒短间隔textContent对比能把误报压到最低。九、平台实战竞品价格监控飞书通知完整流程实战场景每30分钟监控3个竞品的价格页面价格变化超过5%发飞书紧急通知截图附上变化前后的对比图价格变化记录写入Excel历史表。第一步打开页面抓价格用「打开网页」指令打开竞品页面→用「等待元素出现」等价格元素加载完→用「获取元素信息」抓价格文本的textContent→存到变量current_text。第二步计算hash对比用「执行Python代码」计算current_text的MD5→和Excel里存的last_hash对比→不一样说明价格变了→进入变化处理流程。第三步变化处理用「截图」指令截价格区域的图→存到C:/监控截图/→用「发送飞书消息」发通知附截图→用「写入Excel」更新last_hash和变化历史记录。第四步飞书消息格式消息写【价格变化】竞品XX的YY商品价格从ZZ变为WW变化幅度X%截图见附件价格、变化幅度用「字符串格式化」填进去不要发裸消息不写结论。两个平台网页监控飞书通知打通后竞品调价你5分钟内就能知道手动刷页面可能一天才发现信息差就是利润差。十、系统联动Excel历史记录与邮件通知的协同变化历史Excel用「数据透视表」统计每个竞品的变化频率每周五用「发送邮件」指令把统计报告发给采购总监报告里写「本周XX竞品调价X次建议跟进调整」不要只发数据不发结论。截图文件定期清理用「For循环」遍历C:/监控截图/文件夹用「日期时间差值」判断文件创建时间超过30天的用「删除文件」指令删掉不清理C盘迟早爆满。邮件通知用HTML格式勾选「HTML格式」选项HTML里嵌截图用Base64编码用「Base64编码文件」指令把截图转成Base64字符串嵌到HTML的img srcdata:image/png;base64,...里收件人不用下载附件就能看到图。系统联动的坑Base64编码后的字符串很长一张截图约200KB→Base64约267KB邮件服务器对邮件大小有限制一般10MB一次附超过37张图邮件发不出去附最新的3张就够了。跨系统联调时先测截图→再测hash计算→再测Excel写入→最后测通知发送四个环节逐个验证一口气写完所有逻辑调试时不知道哪段错了。十一、工程化与规范监控项目的可维护性监控的URL列表、元素XPath、通知阈值变化超过X%才通知存到「配置表」Excel文件主流程里用「读取Excel」加载配置不要硬编码竞品URL变了你改Excel不用改流程。异常日志用「写入日志」指令记录到Excel的「异常日志」Sheet记录字段时间、URL、异常类型、异常描述、处理状态元素定位连续失败3次可能是页面改版了要人工介入。监控脚本用「计划任务」配置每30分钟跑一次运行结果用「发送飞书消息」通知自己「今日监控完成共检测X次发现Y次变化」不用每天手动点运行也不用每天看日志。工程化细节hash记录存JSON文件C:/监控数据/hash_record.json每次检测前用「读取JSON文件」加载检测后用「写入JSON文件」保存JSON比Excel读写快而且结构是字典按URL查hash是O(1)。版本管理每次改了监控逻辑比如从监控textContent改成监控outerHTML在影刀的「版本备注」里写清楚比如「改用outerHTML监控捕捉页面改版」出问题能快速定位是哪次改动引入的。十二、速查表与常见报错问题原因解决办法每次检测都报「发生变化」页面有动态内容时间戳/访问量只用价格/库存所在的小区域算hash不用整个页面元素抓不到报「超时」页面结构变了或元素XPath失效用F12重新抓元素改用contains模糊匹配截图是黑的或空白页面没加载完就截图了用「等待元素出现」等关键点出现再截图hash对比永远相等抓取到的文本是空字符串检查元素定位是否正确空字符串的MD5是固定的飞书消息发送失败Webhook地址错了或机器人被移出群重新获取Webhook地址检查机器人是否在群里Excel写入失败报「文件被占用」Excel文件被其他程序打开先关掉Excel再运行或用「强制关闭Excel进程」截图文件无法保存文件路径含非法字符?*用「字符串替换」把非法字符换成下划线Python代码执行失败没装hashlib实际上Python内置检查Python环境是否正确用「执行Python文件」方式调用通知刷屏短时间内发多条没做频率限制用「日期时间差值」判断上次通知时间10分钟内只发一次监控脚本跑着跑着停了遇到异常没捕获脚本中断用「尝试捕获」包裹整个检测流程捕获异常后记录并继续内容标签影刀RPA、网站监控、元素变化检测、hash对比、竞品分析、自动化通知作者林焱。到此为止

相关新闻

PLSQL Developer免Oracle客户端实战:OCI动态加载与版本隔离

PLSQL Developer免Oracle客户端实战:OCI动态加载与版本隔离

简介:PLSQL Developer(免Oracle客户端)是一款面向Oracle数据库开发者的轻量级集成开发环境,专为简化PL/SQL代码编写、调试与数据库对象管理而设计,特别适合不希望安装庞大Oracle客户端的中初级开发人员及测试工程师。资…

2026/10/9 16:23:33 阅读更多 →
生产线级PDF解析:从版面还原到结构化输出的完整实践

生产线级PDF解析:从版面还原到结构化输出的完整实践

简介:KittyDoc 是一款面向开发者、文档管理人员与数据工程师的一站式开源解析工具,专注于将 PDF 文档高效转换为 Markdown 与 JSON 两种结构化格式,解决生产线级文档难以编辑、数据不易提取的核心痛点。资源压缩包共 201 个文件、约 14.41MB&…

2026/10/9 16:23:33 阅读更多 →
UE架构实战:模块化设计、GC与网络同步深度解析

UE架构实战:模块化设计、GC与网络同步深度解析

这个系列写到第五篇,终于到了我最想聊的一块:UE实战里的架构问题。前面几篇我把坐标系、渲染管线、资源打包这些地基过了一遍,如果你是从头读下来的,这会儿应该有了“引擎由哪些部件拼起来”的宏观印象。今天不一样,今…

2026/10/9 16:22:32 阅读更多 →

最新新闻

基于卷积神经网络的海洋垃圾识别分类:从数据清洗到模型部署全流程

基于卷积神经网络的海洋垃圾识别分类:从数据清洗到模型部署全流程

简介:这是一套面向计算机相关专业学生的毕业设计资源,主题为基于卷积神经网络的海洋垃圾识别分类,适合正在准备毕设、课程设计或期末大作业的学习者,也可作为深度学习项目实战练习的参考。资源包共101个文件,约74.62MB…

2026/10/9 17:27:35 阅读更多 →
爆款复刻提示词怎么写?2026年爆款视频复刻,5款工具怎么选

爆款复刻提示词怎么写?2026年爆款视频复刻,5款工具怎么选

做短视频矩阵或技术型自媒体时,看到对标账号起量却来不及拆解,是常见痛点。爆款复刻提示词怎么写?本质是用结构化自然语言指令,将原视频的钩子、节奏与信息层转化为可执行的生成参数。鲸剪(WhaleClip)是一款…

2026/10/9 17:27:35 阅读更多 →
Claude Code 速查手册:命令、快捷键与高效工作流实战

Claude Code 速查手册:命令、快捷键与高效工作流实战

1. 为什么我要整理这份 Claude Code 速查手册 用 Claude Code 有一段时间了,从最初把它当成一个"能跑命令的聊天窗口",到后来真正把它嵌进日常开发流里,中间踩的坑不算少。最典型的一个场景是:明明知道有个命令能解决当…

2026/10/9 17:27:35 阅读更多 →
pc-lint plus 1.2 试用实战:C/C++ 静态分析工具集成与避坑指南

pc-lint plus 1.2 试用实战:C/C++ 静态分析工具集成与避坑指南

简介:pc-lint plus 1.2 是 Gimpel Software 于 2019 年 4 月发布的 C/C 静态代码分析工具版本,面向嵌入式开发、系统底层编程及对代码质量要求较高的工程师,用于在编译前发现潜在缺陷、类型不匹配、未定义行为与可移植性问题。压缩包为 zip 格…

2026/10/9 17:27:34 阅读更多 →
OpenWorkMate:用开源架构打造能干活的企业AI工作伙伴

OpenWorkMate:用开源架构打造能干活的企业AI工作伙伴

1. 从“只会聊天”到“真能干活”:企业AI工作伙伴的破局思路公司里那套AI工具,说实话,前两年就是个高级玩具。你问它“帮我写个周报”,它能洋洋洒洒给你整出八百字废话;你问它“上季度的客户投诉主要集中在哪些环节”&…

2026/10/9 17:27:34 阅读更多 →
AI编程IDE卡成PPT?低配电脑用TaoToken把Base URL改到统一通道的实测

AI编程IDE卡成PPT?低配电脑用TaoToken把Base URL改到统一通道的实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 17:26:33 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →