影刀RPA进阶教程网页截图与页面变化监控方案有些场景不需要采集数据只需要盯着页面看有没有变化。比如竞品商品下架了没有、活动页面上线了没有、自己的商品排名变了没有。与其每天手动打开网页看一眼不如让影刀每小时帮你截图有变化了就通知你。一、三种截图场景场景用什么截图频率全页面截图截图指令每天/每小时指定区域截图“截取元素截图”按需| 滚动长截图 | 多次截图后拼接Python | 按需 |影刀的截图指令截的是当前浏览器可视区域不是整个页面。如果需要截取首屏以下的内容需要先滚动再截图。拼多多店群自动化上架方案二、基础版定点截图存档# 每小时截图一次带时间戳命名打开网页(https://item.jd.com/xxx.html)等待元素出现(商品详情区域,8秒)# 生成带时间戳的文件名Python代码:fromdatetimeimportdatetime timestampdatetime.now().strftime(%Y%m%d_%H%M%S)filenamefD:\\截图监控\\京东商品_{timestamp}.png变量_截图路径filename 截图(D:\截图监控\{时间戳}.png)输出日志(f截图已保存:{时间戳}.png)配置定时任务每小时执行一次一天就有 24 张截图。三、进阶版页面变化检测光截图还不够最好能自动判断页面变了没有。思路对比两张截图的像素差异。Python代码:importosfromdatetimeimportdatetimefromPILimportImageimportnumpyasnp screenshot_dirrD:\截图监控todaydatetime.now().strftime(%Y%m%d)# 找到最近两张截图filessorted([fforfinos.listdir(screenshot_dir)iff.startswith(京东商品_)])iflen(files)2:print(截图不足两张跳过对比)else:img1Image.open(os.path.join(screenshot_dir,files[-2]))img2Image.open(os.path.join(screenshot_dir,files[-1]))# 转为numpy数组对比arr1np.array(img1.resize((800,600)))arr2np.array(img2.resize((800,600)))# 计算像素差异比例diffnp.mean(np.abs(arr1.astype(float)-arr2.astype(float)))/255ifdiff0.05:# 差异超过5%msgf⚠️ 页面发生变化差异度:{diff*100:.1f}%print(msg)# 触发通知变量_变化通知msgelse:print(f页面无变化差异度:{diff*100:.1f}%)关键参数diff 0.05这个阈值需要根据实际情况调。太小了误报多太大了漏报多。建议先跑几天看看正常波动范围再设。四、高级版只监控关键区域全页面对比太容易误报了——页面上的随机推荐、广告、时间戳都会导致变化。更实用的做法只对比你真正关心的区域。Python代码:fromPILimportImage# 截取页面上价格区域的元素截图# 先用影刀截取元素截图截出关键区域# 对比两次的价格区域截图price1Image.open(rD:\截图监控\价格区域_上次.png)price2Image.open(rD:\截图监控\价格区域_本次.png)# 转为灰度后再对比忽略颜色差异只关注内容importnumpyasnp arr1np.array(price1.convert(L))arr2np.array(price2.convert(L))diffnp.mean(np.abs(arr1.astype(float)-arr2.astype(float)))/255ifdiff0.02:print(f⚠️ 价格区域发生变化差异度:{diff*100:.1f}%)else:print(价格无变化)五、实战商品排名监控# 商品排名监控 # 场景监控某个关键词下自己商品在第几位关键词蓝牙耳机目标店铺名你的店铺名目标URLfhttps://search.jd.com/Search?keyword{关键词}打开网页(目标URL)等待元素出现(商品列表,8秒)# 循环找目标店铺获取相似元素列表(商品卡片)-商品列表 排名-1遍历列表(商品列表,商品元素,idx):店铺名获取元素文本(商品元素//店铺名称区域)如果 店铺名 包含 目标店铺名:[video(video-fyopkBSh-1781113760847)(type-csdn)(url-https://live.csdn.net/v/embed/524993)(image-https://v-![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8c6b19565bf04cd79da06e64a19f22c9.png#pic_center)blog.csdnimg.cn/asset/a547123d88ad712dccba346c9217e237/cover/Cover0.jpg)(title-TEMU店群如何管理运营)]排名idx1输出日志(f找到目标商品第{排名}位)跳出循环 如果 排名-1:输出日志(f当前关键词未找到目标商品可能不在前几页)排名未上榜# 记录排名到Excel读取Excel(D:\排名监控\排名记录.xlsx)-排名表 写入行数据(排名表,[当前时间,关键词,排名])保存Excel(排名表,D:\排名监控\排名记录.xlsx)# 如果排名下降超过5位发通知如果 排名 是 数字 且 排名历史排名5:发送飞书通知(f 排名下降{关键词}从第{历史排名}位降至第{排名}位)六、避免被检测高频截图可能触发网站的反爬机制。降低风险的策略频率不要太高每小时一次足够了每分钟一次不是监控是骚扰间隔随机化不要精确整点执行加上 ±5 分钟的随机偏移用正常浏览器不要用 headless 模式正常的 Chrome 窗口行为更自然Referer 和 User-Agent 保持一致别让服务器觉得这个访问很奇怪七、截图文件管理一天 24 张截图一周就是 168 张一个月 700 张。不做管理很快就乱。# 自动清理旧截图Python代码:importos,timefromdatetimeimportdatetime,timedelta screenshot_dirrD:\截图监控cutoffdatetime.now()-timedelta(days30)# 保留30天forfinos.listdir(screenshot_dir):fpathos.path.join(screenshot_dir,f)ifos.path.getmtime(fpath)cutoff.timestamp():os.remove(fpath)print(f已删除过期截图:{f})print(f清理完成保留最近30天截图)作者林焱本文为《影刀RPA学习手册》系列文章之一内容源于实操经验的整理与分享。