webmonitor是用于网页和RSS监控的开源程序,使用python编写,简单易用。
安装
webmonitor的github地址是:github.com
由于其是python程序,因而只要电脑上安装了python,从github上clone程序源码后并安装依赖库后,理论上应该是可以运行的,但我使用这种方法安装时,总是由于出错导至某些依赖库库无法安装。好在docker hub上已有image,因而我直接从docker hub上拉取镜像:
docker pull logicjake/webmonitor
然后生成容器运行,此处我本地的持久化数据卷位置是D:/SOFT/webmonitor,对外开放的访问端口是8096,用户名是admin,密码是123456
docker run -d --name webmonitor -v /D/SOFT/webmonitor:/app/db -p 8096:8000 -e PORT=8000 -e USERNAME=admin -e PASSWORD=123456 logicjake/webmonitor
之后再设置容器自启动
docker run --restart=always webmonitor
使用
现在访问主机的8096端口便可看到登录界面。
输入创建容器时输入的用户名和密码后,进入可以看到如下界面。
配置网页监控
webmonitor可以进行RSS监控和网页监控,我只有进行网页监控的需求,因而此时应点击左侧任务管理下的网页监控管理(点击快捷操作中的网页监控管理也是一样的),界面如下。
在这个界面中填写上任务名称(随意),监控的网页地址。在元素选择器中应填写页面的xpath,可以在需要监控的页面上使用开发者工具中的选择元素后可以使用右键菜单中的“复制xpath路径”来得到xpath。这个程序里面对于xpath的处理如下面的python代码,最终得到的数据是下面的res[0],可以先行测试一下,如果没问题将其填入元素选择器中即可。
from scrapy.selector import Selector
import requests
url = 监控的网页地址
xpath_ext = xpath路径
html = requests.get(url).text
res = Selector(text=html).xpath(xpath_ext).extract()
print(res[0])
之后是设置通知方式,选择一个已经设置过的通知方式(如何设置通知方式见以下)后保存就大功告成了,后续如果指定的网页元素有变化就会发送通知。
通知方式设置
通知方式是在“系统管理”的“通知方式”中定义的,设置名称(随意)。
通知方式有多种可以选择,我用的是wxpusher来通过微信进行提醒,通知方式需要选择custom,并在下面的框里填写如下内容即可。这里填写的其实就是调用wxpusher API的post请求(格式要求见WxPusher微信推送服务 (zjiecode.com))。
https://wxpusher.zjiecode.com/api/send/message{data={"appToken":wxpusher给的,"content":{content},"summary":{header},"contentType":2,"uids":[在wxpusher里查出来的用户ID]}}
在程序中对于这个自定义通知方式的处理是用以下python代码完成的。如果使用其它的接口,可以先用下面的代码测试一下,能成功发出就可以填写到上面的通知方式中了。
to = 在上面通知方式中填写的内容
loc = to.find("{data=")
url = to[:loc]
data = to[loc + 6:to.rfind("}")].replace('{header}',"thisisheader").replace('{content}', "thisiscontent")
r = requests.post(url, json=json.loads(data))