网站监控网页内容监测(使用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中~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线