一种基于智能化爬虫的信息订阅方法

文档序号:1952902 发布日期:2021-12-10 浏览:16次 >En<

阅读说明:本技术 一种基于智能化爬虫的信息订阅方法 (Information subscription method based on intelligent crawler ) 是由 也鹏 董佳霖 刘佳浩 郑羽辰 陈楚翘 王锐璇 于 2021-09-29 设计创作,主要内容包括:本发明属于计算机WEB技术领域和信息抓取技术领域,具体涉及一种基于智能化爬虫的信息订阅方法。具体包括步骤如下:步骤1、获得用户期望监控的网址、用户指定的关键词,并显示目标网页;步骤2、获得用户监控的具体方式,包括监控的网页区域、检查网页的时间间隔、监控到用户要求的关键词后的通知方式;步骤3、使用爬虫定时爬取目标网页;步骤4、每次爬取目标网页之后检查用户所选区域中是否出现用户指定关键词,如果没有出现等待一段用户指定的时间间隔再次检查重复步骤3,如果出现用户指定的关键词,则使用用户选定的通知方式向用户发送通知。(The invention belongs to the technical field of computer WEB and the technical field of information capture, and particularly relates to an information subscription method based on intelligent crawlers. The method specifically comprises the following steps: step 1, acquiring a website which a user desires to monitor and keywords appointed by the user, and displaying a target webpage; step 2, acquiring specific modes of user monitoring, including a monitored webpage area, a time interval for checking the webpage, and a notification mode after monitoring keywords required by the user; step 3, crawling a target webpage by using a crawler at regular time; and 4, checking whether the user-specified keywords appear in the area selected by the user after the target webpage is crawled each time, checking again and repeating the step 3 if the user-specified keywords do not appear and wait for a period of time interval specified by the user, and sending a notification to the user by using a notification mode selected by the user if the user-specified keywords appear.)

一种基于智能化爬虫的信息订阅方法

技术领域

本发明属于计算机WEB

技术领域

和信息抓取技术领域,具体涉及一种基于智能化爬虫的信息订阅方法。

背景技术

随着越来越多的信息涌入人们的生活,及时获得精确有效的信息变得更加困难。在这个“信息爆炸”的时代,想要精确获得个人感兴趣的教育、购物、新闻等多方面信息变得越来越困难。

尽管随着时代的发展,搜索引擎功能和数量越来越丰富,但相比于成千上万信息的快速涌入,搜索引擎无法做到快速监测某一信息是否出现,并在信息出现时及时通知用户。而在这个数据量成指数级增长的社会环境中,作为一个普通用户,如果想及时获取信息,就不得不每隔一段时间重复地打开某一网站并检查相关信息是否出现,不仅费时费力,对用户非工作学习效率产生很大影响,还可能因疏忽出现遗漏而造成不可逆的损失。

目前,国内外有一些帮助用户获取信息的应用,但他们或多或少不能完全满足用户的需要。如国内的网页监控软件OpenWebMonitor,他可以帮助用户监控网页某一位置的变化,但不能检查网页是否出现指定信息,且该软件需要下载安装,并要求主机保持开机状态才能进行网页监控,较为不便。国外的网页监控软件URLyWarning,也可帮助用户了解网页变化的内容,但该软件官网为境外地址,国内无法访问,难以获得正版软件。名为PageMonitor的网页监视器是Chrome浏览器的一个插件,它可以设置独立的检查时间间隔,可以自定义声音提醒,但是其插件的本质就一定程度上限制它的功能。

与以上提到的现有技术相比,“基于智能化爬虫的信息订阅系统”基于多种网络爬虫手段,充分与用户操作相结合。该系统可以检查网页是否出现某一特定信息,同时系统以web应用的形式呈现,无需下载安装,也不需要保持主机开机以保证监控任务顺利进行,用户只要在网页上正确设置任务即可在网页出现指定关键词时收到系统通知,帮助用户提升工作效率、提高正确率,节省信息搜集消耗的资源和成本。

发明内容

针对以上问题,本发明提出一种基于智能化爬虫的信息订阅方法,该方法能够帮助用户更加便捷、可靠地获取关注的信息。

为实现上述目的,本发明采用如下技术方案:

一种基于智能化爬虫的信息订阅方法,具体包括步骤如下:

步骤1、获得用户期望监控的网址、用户指定的关键词,并显示目标网页;

步骤2、获得用户监控的具体方式,包括监控的网页区域、检查网页的时间间隔、监控到用户要求的关键词后的通知方式;

步骤3、使用爬虫定时爬取目标网页获取网页html;

步骤4、每次爬取目标网页之后检查用户所选区域中是否出现用户指定关键词,如果没有出现等待一段用户指定的时间间隔再次检查重复步骤3,如果出现用户指定的关键词,则使用用户选定的通知方式向用户发送通知。

本技术方案进一步的优化,所述步骤1通过form表单获取用户输入,并使用iframe在本网页中嵌入用户输入网址对应的网页。

本技术方案进一步的优化,所述步骤2中获得监控的网页区域方法为通过爬虫爬取用户输入网址的html代码,并通过js注入的方式在原网页中添加鼠标事件。

本技术方案更进一步的优化,所述鼠标事件具体包括鼠标移入、移出、点击事件,对于鼠标移入事件,为该元素添加绿色的css样式边框;对于移出事件,判断该元素是否处于选中状态,否的话将该元素的绿色边框删除,是的话什么也不做;对于鼠标点击事件,首先判断该元素在原html中是否有id属性,如果有记录该id,否则为该元素生成一个随机的id,之后判断该元素是否处于选中状态,是将该元素设置为未选中状态并删除其蓝色边框,是的话将元素置为选中状态并为加上蓝色边框,之后使用ajax动态加载,将该元素的id显示到网页的选中元素列表中。

本技术方案更进一步的优化,所述步骤2中js注入的具体方法是在爬取下来的html网页的最后部分添加注入的js文件的路径。

本技术方案进一步的优化,所述步骤2中使用form表单获得用户通过点击选中的网页位置、用户输入的检查网页的时间间隔、监控到用户要求的关键词后的通知方式。

本技术方案更进一步的优化,所述步骤2用户选中监控的网页区域后,使用python的lxml库根据网页html建立DOM树,遍历DOM树,找到拥有与用户选中区域对应的id的节点,获取这些节点的xpath并记录,从而实现对用户选择的区域的获取。

本技术方案进一步的优化,所述步骤3中定时爬取网页的html的实现方法为使用python的apscheduler包提供的定时任务功能,对每一个由用户设置的网页监控任务,定时调用爬虫模块爬取该网页html。

本技术方案进一步的优化,所述步骤4具体包括:

步骤4.1、使用步骤3中获得的网页html建立DOM树;

步骤4.2、获得用户选中的网页块的xpath所对应DOM树中的节点;

步骤4.3、检查以这些节点为根的子DOM树中是否出现关键词;

步骤4.4、如果没有出现正常返回;

步骤4.5、如果出现调用用户通知模块,根据用户选择通知方式向用户发送通知,之后将本次监控任务设置为已完成状态;

步骤4.6、如果在建立的DOM树中没有找到xpath对应的节点说明网页结构出现变化,该任务无法进行,将该任务置为失败状态并通知用户。

本技术方案进一步的优化,所述通知方式为:邮箱、微信、短信。

区别于现有技术,上述技术方案有益成果为:

本发明基于用户的实际需求,能满足用户对于互联网信息如新闻、通知等内容的监控与采集的需求。本发明采用智能化的人机交互技术以及爬虫技术实现了以用户指定方式对特定网页的监控,同时在采集到的指定信息后可以采用多种方式通知用户。

这种方法相比于当前的部分信息订阅方法而言,用户友好性更强,即用户不需要任何专业知识,即可使用智能化爬虫及时便捷地获取网页信息;同时用户选择区域操作十分简便,只需简单点击网页中的特定区域即可实现选择。

附图说明

图1为基于智能化爬虫的信息订阅方法流程图;

图2为原始网页注入js后的效果。

具体实施方式

为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。

请参阅图1所示,为基于智能化爬虫的信息订阅方法流程图,该方法具体包括以下步骤:

步骤1、获得用户希望监控的网址,并显示目标网页。

首先在任务设置页面1中使用html的form表单获取用户输入的网页,在后台通过request.form.get获得表单内容,之后跳转到任务设置页面2,在页面2中使用html的iframe标签嵌入用户输入的网址对应的网页。

步骤2、获得用户监控的具体方式,包括监控的网页区域、检查网页的时间间隔、检测关键词、监控到用户要求的关键词后的通知方式

获得用户指定的检查网页时间间隔、关键词仍使用与步骤一中相同的方式,获得监控的网页区域则是本发明的关键步骤之一,具体如下:

首先使用爬虫技术爬取目标网站的html代码,爬取方法与步骤三中的方法相同,之后处理目标代码,在html代码的最后添加一个脚本文件路径进行js注入,注入的js文件功能为在页面初始化时遍历特定类型的标签元素,如div、a等。首先对这些元素添加css边框样式用于占位,防止之后显示时出现排版问题;之后为每一个元素添加鼠标事件,分别是鼠标移入、移出、点击事件,对于鼠标移入事件,为该元素添加绿色的css样式边框,对于移出事件,判断该元素是否处于选中状态(即被点击次数为单数),否的话将该元素的绿色边框删除,是的话什么也不做,对于鼠标点击事件,首先判断该元素在原html中是否有id属性,如果有记录该id,否则为该元素生成一个随机的id,之后判断该元素是否处于选中状态,未处于选中状态将该元素设置为未选中状态并删除其蓝色边框,处于选中状态将元素置为选中状态并为加上蓝色边框,之后使用ajax动态加载,将该元素的id显示到网页的选中元素列表中。用户指定网页注入js后的效果如图2所示。

用户选中目标区域后,使用python的lxml库根据网页html建立DOM树,遍历DOM树,找到拥有与用户选中区域对应的id的节点,获取这些节点的xpath并记录,从而实现对用户选择的区域的获取。

步骤3、使用爬虫定时爬取目标网页获取网页html

该方法中使用的爬虫主要分为两种。对于简单的同步加载的网页使用python的requests库即可获取网页html,对于动态加载的网页需要使用selenium模拟点击的方法获取网页的完整html。

除获取html的功能外,还要实现定时调用爬虫模块的功能。该功能使用apscheduler定时调度库,该库基于quartz,可以定时执行任务,需要注意的是,使用apscheduler时最好设置将任务存入数据库,便于实现定时任务的持久化,使服务器重启后原有的任务不至于丢失,而是自动开始再次调度。

步骤4、每次爬取目标网页之后检查用户所选区域中是否出现用户指定关键词,如果没有出现等待一段用户指定的时间间隔再次检查,重复步骤3;如果出现用户指定的关键词或目标网页结构发生变化监控失败,则使用用户选定的通知方式向用户发送通知。

每次爬取目标网页之后,根据步骤2中的方法建立DOM树,步骤2中建立的DOM树用于获取用户指定的xpath,并检查步骤2中记录的xpath对应的节点中的文字内容,如果为找到对应节点,说明目标网页结构发生变化,监控失败,需要通知用户;如果记录的xpath对应的网页区域中没有出现关键词,监控继续,间隔一段用户指定的时间后执行步骤3;如果记录的xpath对应的网页区域中出现关键词,监控结束,通知用户。

步骤4.1、使用步骤3中获得的网页html建立DOM树;

步骤4.2、获得用户选中的网页块的xpath所对应DOM树中的节点;

步骤4.3、检查以这些节点为根的子DOM树中是否出现关键词;

步骤4.4、如果没有出现正常返回;

步骤4.5、如果出现调用用户通知模块,根据用户选择通知方式向用户发送通知,之后将本次监控任务设置为已完成状态;

步骤4.6、如果在建立的DOM树中没有找到xpath对应的节点说明网页结构出现变化,该任务无法进行,将该任务置为失败状态并通知用户。

通知方式有三种供用户选择:微信、邮件、短信,三种方法都使用其提供的API实现。

具体实例:

1.在任务设置页面1中,用户输入目标网址url:https://news.baidu.com/,并点击加载页面,网页获取用户输入并将使用iframe将该url对应的页面嵌入到网页中,同时显示任务名输入栏。

用户在任务名输入栏输入:疫情信息,并点击下一步按钮,之后本方法使用爬虫技术获得目标网址的html源代码,并在源代码最后添加<script src="../../js/djl.js"></script>进行js注入,并缓存在服务器中。

2.在任务设置页面2中,使用ifame将上一步缓存的html嵌入网页,用户通过点击选择监控区域,被选中的区域会被蓝色框框住,同时该区域对应的id会显示在左侧,如图三所示。

选择区域之后,用户输入监测关键词:核酸检测,刷新间隔(以小时计):3,通知方式:短信,并点击确认。

3.之后本方法使用python的lxml库建立目标网页html的DOM树,利用DOM树获取用户选中的区域的xpath并记录,同时使用apscheduler设置定时任务,执行间隔为用户指定刷新间隔,执行的函数功能为定时爬取目标网址的源代码,并重新建立DOM树,检查以记录的xpath对应的节点为根的子DOM树中的文字信息,当检查到出现用户指定关键词时以用户指定方式发送通知,如果某次检查中发现DOM树没有记录的xpath对应节点,向用户发送监控失败信息。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。

尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于多层注意力机制的跨模态检索模型的构建方法及应用

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!