网站监控网页内容监测(使用Python实现的网站变化监测系统关于此系统实现方法和思路等可参考)
优采云 发布时间: 2022-01-17 05:07网站监控网页内容监测(使用Python实现的网站变化监测系统关于此系统实现方法和思路等可参考)
一个网站用Python实现的变更监控系统
这个系统的实现方法和思路可以参考我的博客文章:用Python实现网站Change Monitoring System
如何使用
Python版本:Python 3.4 & Python 3.5通过测试,不兼容Python 2.x
依赖包:requests、beautifulsoup4
运行前需要将微信的corpid和corpsecret写入wchat文件。该文件是一个文本文件。第一行是corpid,第二行是corpsecret。把这个文件放到根目录下,运行Spider.py文件就可以了。
当前程序中检测到的网站是根据我当前的需要添加的,可以根据需要进行修改。
添加新的网站
复制Template.py文件,在此模板的基础上进行修改。
1.把类名改成想要的名字
2.__init__(self, Name, DBName, AgentID, KeyWords)
子类的构造函数调用基类的构造函数。基类构造函数的参数说明如下:
# Name : 网站名称
# DBName : 数据库名称,不要包含后缀
# AgentID : 微信发布时需要用到的AgentID
# CheckContent : 是否需要打开URL检查内容,True or False
# KeyWords : 过滤用关键词List,如果不需要设置为[]
# KeyWordsThreshold : 关键词阈值,内容页包含的关键词个数超过这个值才认为符合要求
# encoding : 网站的编码格式,不设置的话默认为utf-8
__init__(self, Name, DBName, AgentID, CheckContent, KeyWords, KeyWordsThreshold, encoding = 'utf-8')
这个构造函数的入参根据具体的网站来确定。不能传入一个参数,全部固定,也可以添加一些其他需要的参数。
3.GetPageRange(self)
需要返回一个List,里面收录需要采集的子页面的信息,可以是一些固定的字符串,也可以是一个范围。如果只有一页,则在此处返回 range(1))。
4.GetMainPage(self, page)
返回要监控的页面,返回结果为requests.get()方法返回的响应对象。入参中的页面是GetPageRange(self)函数返回的List中的元素。当需要监控多个页面时,可以根据该参数返回对应的页面。
5.GetEnclose(自我,汤)
返回感兴趣的页面范围。入参soup是根据之前获取的页面创建的beautifulsoup对象,这里也返回了一个beautifulsoup对象。最常见的情况是选择原汤中的一个标签返回,如:
return soup.find('table')
如果不需要缩小范围,直接返回传入的soup即可。
6.GetTags(self, soup)
返回标签List,其中每个元素都是一个标签,对应一条消息记录。这个List一般是通过soup.find_all()方法获取的,但在某些情况下,也需要手动生成。可以通过soup.contents等方法遍历生成。
7.GetTitle(self, tag)
输入参数是一条消息记录对应的标签。需要找出标题信息并返回一个字符串。必须返回一个字符串。
8.GetURL(self, tag)
入参是一条消息记录对应的标签,需要找出URL信息并返回一个字符串,可以返回''。
9.GetPublishTime(self, tag)
入参为一条消息记录对应的标签,需要找出发布日期信息并返回一个字符串,可以返回''。
10.AdditionCheck(self, tag)
输入参数是一条消息记录对应的标签。可以对其执行一些额外的检查以确定该消息是否为必需消息。如果是必填消息,则返回 True,否则返回 False。如果不需要判断,则返回True。
11.GetBrief(self, tag, keywordstring)
输入参数是一条消息记录对应的标签,在关键词过滤结果关键字字符串之前。如果进行 关键词 过滤,则关键字字符串的格式类似于 *** 关键词: 关键词1; 关键词2;,如果不进行关键词过滤,则keywordstring为空。需要返回的是消息的摘要信息,如果没有,直接返回''即可。
如上添加网站子类后,在Spider.py文件中实例化一个对象,添加到WebList中~