影刀RPA定时截图监控:自动记录网页变化完全指南
作者:林焱
定时截图是很多监控场景的基础工具——监控竞品价格变化、监控服务器状态页面、定期保存网页内容快照……配好流程,每隔一段时间自动截图保存,不用盯着屏幕。
一、使用场景
- 竞品价格监控:每小时截一次竞品商品页面,留存价格变化记录
- 网站可用性监控:每5分钟截图,出现异常页面时触发报警
- 舆情留证:对某条评论/帖子定时截图,防止内容被删除
- 数据看板记录:公司内部数据看板每天定时截图存档
二、基础截图操作
影刀有两种截图方式:
方式一:网页截图(推荐用于网页监控)
操作路径:指令库 → 网页操作 → 网页截图
拼多多店群自动化上架方案
打开浏览器(目标URL) 等待页面加载 截图路径 = "D:\截图存档\" + 格式化当前时间("yyyyMMdd_HHmmss") + ".png" 网页截图(截图路径) 记录日志("截图已保存:" + 截图路径)方式二:屏幕截图(通用,不限于网页)
操作路径:指令库 → 系统操作 → 截取屏幕
截图路径 = "D:\截图\" + 格式化当前时间("yyyyMMdd_HHmmss") + ".png" 截取屏幕(截图路径)可以指定区域截图(比如只截右上角的数据区域):
截取屏幕区域( 截图路径 = 截图路径, 左 = 100, // 距屏幕左边100像素 上 = 50, // 距屏幕上边50像素 宽 = 600, 高 = 300 )三、定时截图主流程
// 定时触发(如每小时) 目标网址 = "https://example.com/price-page" 保存目录 = "D:\价格监控截图\" // 确保目录存在 如果 非 文件夹是否存在(保存目录): 新建文件夹(保存目录) // 截图并保存 打开浏览器(目标网址) 等待页面加载完毕(5秒) 时间戳 = 格式化当前时间("yyyyMMdd_HHmmss") 截图文件名 = 时间戳 + ".png" 截图完整路径 = 保存目录 + 截图文件名 网页截图(截图完整路径) // 验证截图成功 如果 文件是否存在(截图完整路径) 且 获取文件大小(截图完整路径) > 0: 记录日志("截图成功:" + 截图文件名) 否则: 记录日志("截图失败,文件未生成或为空") 发送企微消息("截图任务失败,请检查") 关闭浏览器四、截图对比变化检测(进阶)
不只是截图保存,还要判断"有没有变化"——用 OCR 或文本提取来比较关键数据。
方案一:文本提取比对(更准确)
// 每次截图前先提取关键数据 打开浏览器(价格页面URL) 等待页面加载 当前价格 = 获取元素文本(.price-tag) // 提取价格文字 // 读取上次价格 上次价格 = 获取全局变量("last_price") 如果 当前价格 != 上次价格 且 上次价格 != "": // 有变化!截图并发通知 截图保存() 通知内容 = "价格变化!\n原价:" + 上次价格 + "\n现价:" + 当前价格 发送企微消息(通知内容) // 更新价格记录 设置全局变量("last_price", 当前价格)方案二:截图 + OCR 比对(适用于无法提取DOM的场景)
// 截图 截图路径 = 截取指定区域(价格区域坐标) // OCR识别 价格文本 = OCR识别文字(截图路径) // 比对逻辑同方案一五、按时间整理截图文件夹
长期运行后,截图文件会积累很多。按日期整理:
截图根目录 = "D:\截图存档\" // 获取所有截图 文件列表 = 获取文件夹文件列表(截图根目录, "*.png") ForEach 文件 in 文件列表: 文件名 = 获取文件名(文件) // 文件名格式:yyyyMMdd_HHmmss.png 日期部分 = 截取文本(文件名, 1, 8) // 20240625 // 构建目标子目录 目标目录 = 截图根目录 + 日期部分 + "\" 如果 非 文件夹是否存在(目标目录): 新建文件夹(目标目录) // 移动文件 移动文件(文件, 目标目录 + 文件名)TEMU店群如何管理运营?
六、截图存储策略
截图占存储空间,要定期清理旧截图:
// 保留最近30天,删除更早的 30天前 = 当前时间 - 30天 文件列表 = 获取文件夹所有文件(截图根目录, "*.png") ForEach 文件 in 文件列表: 文件修改时间 = 获取文件修改时间(文件) 如果 文件修改时间 < 30天前: 删除文件(文件) 记录日志("已删除旧截图:" + 文件)七、截图发送到企微/钉钉
有时候截图变化了,想把图片直接发到群里:
// 企业微信机器人支持图片消息 // 需要先把图片转为base64 Python代码 = """ import base64 with open(r'截图路径', 'rb') as f: data = base64.b64encode(f.read()).decode() # 计算MD5 import hashlib with open(r'截图路径', 'rb') as f: md5 = hashlib.md5(f.read()).hexdigest() print(data + '|' + md5) """ 结果 = 执行Python代码(Python代码) // 解析base64和md5,发送到企微八、踩坑速查
| 问题 | 原因 | 解法 |
|---|---|---|
| 截图是空白 | 页面未完全加载就截图 | 增加等待时间,改用等待元素出现再截图 |
| 截图只有部分内容 | 页面高度超过屏幕 | 用"网页截图"(会截完整页面),而非屏幕截图 |
| 截图文件大小为0 | 保存路径没有写权限 | 确认目录存在且有写权限 |
| 同名文件被覆盖 | 时间戳精度不够 | 用到毫秒的时间戳命名 |
定时截图是最直观的自动监控方式。结合变化检测和通知推送,一旦有异常你就能第一时间知道。
作者:林焱