[发明专利]爬虫程序工作状态的判断方法和装置有效
申请号: | 201410779531.5 | 申请日: | 2014-12-15 |
公开(公告)号: | CN104408195B | 公开(公告)日: | 2017-12-19 |
发明(设计)人: | 何恺铎 | 申请(专利权)人: | 北京国双科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F9/44 |
代理公司: | 北京康信知识产权代理有限责任公司11240 | 代理人: | 吴贵明,张永明 |
地址: | 100086 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 爬虫 程序 工作 状态 判断 方法 装置 | ||
技术领域
本发明涉及互联网领域,具体而言,涉及一种爬虫程序工作状态的判断方法和装置。
背景技术
爬虫程序是构建互联网搜索引擎的基本组件,具备自动分析并爬取网站上所有页面的功能。其核心步骤是,首先爬取一个或多个给定的初始页面,随后对返回的页面进行链接分析,生成新的页面爬取请求,如此循环往复,直至不再有新的页面爬取请求生成为止。
一般来说,可以将爬虫程序分为链接分析模块与页面爬取模块,这两个模块是互相依赖的,既是对方资源的生产者,也是对方资源的消费者,这种相互依赖关系导致了爬取结束的判定比较困难,因为理论上链接分析的结束需要等待页面爬取模块的结束,页面爬取模块的结束也需要等待链接分析模块的结束,而在多线程时需要考虑线程的相关性,使得对爬虫程序的结束的判定更为困难。
传统的爬虫程序,在判断爬虫程序是否结束时,需要始终追踪页面爬取模块中待爬取请求的数量和正在执行的爬取请求的数量。仅当该两个数量同时为零时,才能判定爬虫结束。
现有技术方案在多线程环境下具有较高的技术难度,并存在竞争条件风险。在多线程环境下,首先,获取和追踪这队列请求数量和正在进行的爬取任务数量必须分别使用线程安全的数据结构;其次,判断两个数量同时为零具有较高的技术难度,因为作此判定需要进行两个条件判断,而这两个条件判断作为一个整体不具备原子性。而在两个条件判断的间隙,状态可能发生了变化,导致判定结果错误。
针对现有技术中判断爬虫程序是否结束的准确性差的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种爬虫程序工作状态的判断方法和装置,以解决现有技术中判断爬虫程序是否结束的准确性差的问题。
为了实现上述目的,根据本发明实施例的一个方面,提供了一种爬虫程序工作状态的判断方法。根据本发明的爬虫程序工作状态的判断方法包括:判断爬虫程序的链接分析模块接收到的第一结果数据是否为第一爬取请求所产生的数据,其中,第一爬取请求为链接分析模块发出的最后一个请求;若链接分析模块接收到的第一结果数据为第一爬取请求所产生的数据,则判断第一结果数据是否产生第二爬取请求,其中,第二爬取请求为解析第一结果数据产生的请求;若第一结果数据未产生第二爬取请求,则判断出爬虫程序的工作状态为结束爬取;若第一结果数据产生第二爬取请求,则判断出爬虫程序的工作状态为正在爬取。
进一步地,判断第一结果数据是否产生第二爬取请求包括:若链接分析模块接收到的第一结果数据为第一爬取请求所产生的数据,则开启计时器计时;在预设时间段内判断链接分析模块是否输出第二爬取请求;若链接分析模块输出第二爬取请求,则判断出第一结果数据产生第二爬取请求,停止并重置计时器;若链接分析模块未输出第二爬取请求,则判断出第一结果数据未产生第二爬取请求。
进一步地,在判断爬虫程序的链接分析模块接收到的第一结果数据是否为第一爬取请求所产生的数据之前,判断方法还包括:设置链接分析模块输出的各个第三爬取请求的第一标签;设置执行第三爬取请求得到第一结果数据的第二标签;建立第一标签与第二标签的映射关系,其中,第三爬取请求包括第一爬取请求;判断爬虫程序的链接分析模块接收到的第一结果数据是否为第一爬取请求所产生的数据包括:通过第一标签和第二标签的映射关系判断第一结果数据是否为第一爬取请求所产生的数据。
进一步地,在设置链接分析模块输出的各个第三爬取请求的第一标签的同时,判断方法还包括:保存第一标签,停止并重置计时器的计时。
进一步地,在判断出爬虫程序的工作状态为结束爬取之后,判断方法还包括:关闭爬虫程序的链接分析模块和页面爬取模块。
为了实现上述目的,根据本发明实施例的另一方面,提供了一种爬虫程序工作状态的判断装置。
根据本发明的爬虫程序工作状态的判断装置包括:第一判断模块,用于判断爬虫程序的链接分析模块接收到的第一结果数据是否为第一爬取请求所产生的数据,其中,第一爬取请求为链接分析模块发出的最后一个请求;第二判断模块,用于若链接分析模块接收到的第一结果数据为第一爬取请求所产生的数据,则判断第一结果数据是否产生第二爬取请求,其中,第二爬取请求为解析第一结果数据产生的请求;第一确定模块,用于若第一结果数据未产生第二爬取请求,则判断出爬虫程序的工作状态为结束爬取;第二确定模块,用于若第一结果数据产生第二爬取请求,则判断出爬虫程序的工作状态为正在爬取。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京国双科技有限公司,未经北京国双科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410779531.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种管道减振的优化方法
- 下一篇:网络搜索关键词的检测方法及装置