首页> 中国专利> 一种基于Heritrix爬虫的分布式采集方法及系统

一种基于Heritrix爬虫的分布式采集方法及系统

摘要

本发明公开了一种基于Heritrix爬虫的分布式采集方法及系统,包括以下步骤:设置一个管理服务模块以及多个发布的Heritrix节点,管理服务模块监听到Heriteix节点信息后自动加入该节点并进行管理,初始种子以及节点任务,分配任务并生成配置文件;管理服务模块获取实际种子,Heritrix从实际种子的配置文件中获取实际种子,并从实际种子采集实际种子对应网页上生成的链接以及该链接对应的附加信息,Heritrix自动判别并抽取出满足条件的链接生成初始种子队列,Heritrix节点从初始种子获得实际种子信息,并解析其附加信息实施本发明的有益效果是,本申请有效实现了Heritrix的分布式采集,有效提高了系统工作系能。

著录项

  • 公开/公告号CN105515815A

    专利类型发明专利

  • 公开/公告日2016-04-20

    原文格式PDF

  • 申请/专利权人 任子行网络技术股份有限公司;

    申请/专利号CN201410555223.4

  • 申请日2014-10-17

  • 分类号H04L12/24;H04L12/26;

  • 代理机构深圳市顺天达专利商标代理有限公司;

  • 代理人郭伟刚

  • 地址 518057 广东省深圳市高新区科技中二路软件园2号楼6层

  • 入库时间 2023-12-18 15:37:44

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-11-06

    授权

    授权

  • 2016-05-18

    实质审查的生效 IPC(主分类):H04L12/24 申请日:20141017

    实质审查的生效

  • 2016-04-20

    公开

    公开

说明书

技术领域

本发明属于计算机互联网方面,涉及互联网网页式爬虫采集及监控领域, 尤其涉及一种基于Heritrix爬虫的分布式采集方法及系统。

背景技术

目前互联网搜索引擎存在广告、垃圾网站和死链接过多问题,如搜索网页 链接打开后却标示着“该链接已被删除”的信息或“请尝试其他链接”等提示。 其次,中文网站检索的更新频率慢,一般每隔两至四周才由“蜘蛛”程序重新 爬取;其自身系统数据库庞大,也造成数据的更新速度无法大幅度提高,从而 影响检索性能的时效性。另外,互联网搜索引擎不能根据用户个性化需求进行 定制功能;比如:只检索某个网站前三层URL(互联网上标准资源的地址) 中的新闻视频信息,视频数据不能包含电影、电视剧等。

究其原因,是由于网络结构系统性能过低。目前各类开源网络爬虫大多都 采用集中式网络结构设计:在一台服务器上给定初始URLURL集合,通过爬 虫主体程序多个线程分别获取URLURL,将URL对应的html页面获取到 本地进行分析,页面内容提取模块将提取可供检索的信息,URL提取模块提 取新的指向其他页面的链接,经过一系统处理并保存供后续继续爬取。当系统 数据规模到达一定程度(如网页数达到亿级别)时,这种架构模式的单机服务器 硬件性能问题就突显出来了。

为了缓解上述问题,互联网档案馆和北欧国家图书馆联合开发出了 Heritrix。是一个由java开发的、开源的网络爬虫,用户可以使用它来从网 上抓取想要的资源。Heritrix它的执行是递归进行的,主要包括以下几个步骤: (1)获取预设的一个URL;(2)获取该URL的采集地址集;(3)解析采集 地址集,并进行归档;(4)从中选择出相关的URL,并加入预设URL队列。 Heritrix由一些核心类与可插件模块构成,核心类可以配置,满足实际配置需 求,插件模块可任由第三方模块取代,可以不断的被其感兴趣的第三方改进, 已成为一个比较成熟的开源爬虫,并被广泛使用。

在面向监管类系统中,一般的爬虫在设计上功能显得都比较臃肿。在监管 系统中,爬取的范围是明确的,爬取的内容是明确的,爬取的频率基本是固定 的。同样基于链的发现,而不需要遵循正常爬虫的协议,无需给出链的分值、 无需建立内容索引,但需要对目标页面进行结构化抽取,并存入指定的数据库、 索引库、分布式文件系统等持久化环境中。这种近乎镜像全站的爬取方法, Heritrix有着得天独厚的优越性条件,但Heritrix目前无法完好支持分布式采 集与调度。

发明内容

本发明要解决的技术问题在于,针对现有技术的上述Heritrix目前无法完 好支持分布式采集与调度缺陷,本发明对插件模块进行了改进,提供一种基于 Heritrix爬虫的分布式采集方法及其系统。

根据本发明的第一方面,本发明提供了一种基于Heritrix爬虫的分布式采 集方法,包括以下步骤:设置一个管理服务模块,并设置多个发布的Heritrix节 点,所述管理服务模块为一个Heritrix节点管理的网页系统;通过UDP协议 将所述的多个Heriteix节点广播到获取的初始种子所在的网段,管理服务模块 监听到Heriteix节点信息后自动加入该节点并进行管理,管理服务模块获取初 始种子以及节点任务,所述的种子为预置或者是来自于初始种子队列;管理服 务模块获取节点任务,指定将任务建立到具体节点或者是全部节点上,管理服 务模块通过调用Heritrix的应用程序编程接口API在发布的Heritrix节点上 生成配置节点和任务信息的配置文件管理服务模块根据Heritrix节点任务生 成并获取管理服务模块获取的初始种子对应网页上的实际种子;Heritrix节点 从初始种子获得实际种子信息,并解析实际种子的附加信息;Heritrix从实际 种子的配置文件中获取实际种子,并采集实际种子对应网页上生成的链接以及 该链接对应的附加信息,Heritrix自动判别并抽取出满足条件的链接生成初始 种子队列,所述附加信息包括采集层次、采集周期、节点分布、是否动态代理、 子域名数量限定、正则配置。

在本发明所述的方法中,采集实际种子对应网页上生成的链接以及该链接 对应的附加信息步骤,包括:对实际种子是否使用动态代理进行判别后下载网 页,若为动态代理,则从管理服务模块获取动态代理地址信息,并动态随机设 定一个代理地址,将采集到的信息进行字段抽取,根据种子设定的正则信息进 行抽取,所述正则信息包括作者、标题、内容、来源、发布时间。

在本发明所述的方法中,还通过扩展Heritrix采集过程的生命周期监听, 将监听到的状态进行判断,若采集结束,则自动重启任务,并且管理服务模块 从Heritrix获取本轮采集状况,该任务重启后,管理服务模块将从初始种子队 列获取下一轮初始种子进行采集,所述的采集情况包括:采集各种子的开始时 间、结束时间、扫描网页数量、持久化数量、下载字节数。

在本发明所述的方法中,还监控Heritrix的运行状态,并提供Heritrix运 行状态信息。

进一步的,在本发明所述的方法中,通过检查节点的心跳是否超时,若超 时,在重置分配到该节点的种子,使其分配到正常工作的节点上。

根据本发明的第二方面,本发明提供一种基于Heritrix爬虫的分布式采集 系统,还包括管理服务模块以及节点广播模块,所述的结点广播模块用于将多 个发布的Heritrix节点通过UDP协议将所述的多个Heriteix节点广播到获取的 初始种子所在的网段,所述的管理服务模块为一个Heritrix节点管理的网页系 统,包括:节点处理单元:用于获取初始种子,并在监听到结点广播模块广播 的多个发布的Heriteix节点信息后自动加入该节点并进行管理;任务配置单元: 用于获取节点任务并将任务指定到将任务建立到具体节点或者是全部节点上, 通过调用Heritrix的应用程序编程接口API在发布的Heritrix节点上生成配 置节点和任务信息的配置文件;生成获取单元:用于根据Heritrix节点任务 对管理服务模块获取的初始种子对应网页上生成链接,并获取此链接,还用于 控制Heritrix节点从初始种子获得实际种子信息,并解析实际种子的附加信息。

在本发明所述的系统中,管理服务模块还包括动态代理单元,所述的动态 代理单元随机生成动态代理地址,并提供给Heritrix,并对实际种子是否使用 动态代理进行判别后下载网页,若是,则从管理服务模块获取动态代理地址信 息,并动态随机设定一个代理地址,将采集到的信息进行字段抽取,根据种子 设定的正则信息进行抽取,所述动态代理地址为管理服务模块随机生成,所述 正则信息包括作者、标题、内容、来源、发布时间。

在本发明所述的系统中,还包括任务重启模块,所述任务重启模块用于扩 展Heritrix采集过程的生命周期监听,将监听到的状态进行判断,若采集结 束,则自动重启任务,并且管理服务模块从Heritrix获取本轮采集状况,该任务 重启后,管理服务模块将从初始种子队列获取下一轮初始种子进行采集。

在本发明所述的系统中,还包括实时监控模块,所述实时监控模块用于监 控Heritrix的运行状态,并提供Heritrix运行状态信息。

在本发明所述的系统中,还包括节点监听模块,所述的节点监听模块用于 检测节点的心跳,当心跳超时,则重新分配到该节点的种子,使其分配到正常 的节点上。

实施本发明具有以下有益效果:

通过增加一个Heritrix节点管理的网页系统,并设置多个发布的Heritrix 节点,通过UDP协议将所述的多个Heriteix节点广播到获取的初始种子所在 的网段,管理服务模块监听到后加入所述的多个Heritrix节点并进行管理,使 Heritrix扩展为分布式方式,有效的提高了系统的性能。

通过检查节点的心跳是否超时,若超时,在重置分配到该节点的种子,使 其分配到正常工作的节点上,避免了种子分配到无法正常工作的节点上而无法 完成爬取,进一步提高了系统的性能。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为基于本发明采集方法的实施例的采集过程基本交互流程图;

图2为基于本发明采集方法的实施例的实时监控与节点监听示意图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详 细说明本发明的具体实施方式。

如图1所示,在本发明的一种基于Heritrix爬虫的分布式采集方法及系统 第一实施例中,系统包括Heritrix、管理服务模块、节点广播模块以及任务重 启模块15。在图1中,两条虚线的中间部分为Heritrix的处理流程,虚线的左 边为任务重启模块及其处理流程,虚线的右边为任务管理模块及其主要处理流 程。管理服务模块为一个Heritrix节点管理的网页系统,用于对Heritrix进 行设置与管理。节点广播模块(图1中未给出)于将多个发布的Heritrix节点 通过UDP协议将所述的多个Heriteix节点广播到获取的初始种子所在的网段。 由于Heritrix本身完成一个任务后并不会自动进行下一个任务,此处设置任务 重启模块,通过扩展Heritrix采集过程的生命周期监听,将监听到的状态进 行判断,若本轮任务采集结束,则向管理服务模块报告本轮采集状况,并自动 重启任务。任务重启后,管理服务模块将从初始种子队列获取下一个初始种子 重新开始采集。

上述的管理服务模块包括:节点处理单元11、任务配置单元12、生成获取 单元13、动态代理单元14。节点处理单元用于获取初始种子,Heriterix程序 刚运行时,需要手动设置初始种子,设置的位置可以是管理服务器上,也可以 是在Heritrix程序中,再次进行任务的种子直接从初始种子队列中获取,而无 需手动设置,初始种子队列在程序执行任务过程中产生。本发明中程序会加入 设置多个发布的Heritrix节点并通过UDP协议将所述的多个Heritrix节点广播 到获取的初始种子所在的网段后,管理服务器能够监听到添加的Heritrix节点 信息,自动加入Heritrix节点到管理服务单元并进行管理,Heritrix节点的数 量至少为2个。当该系统接收到节点任务指令后,任务配置单元用于获取节点 任务并将任务指定到将任务建立到具体节点或者是全部节点上,通过调用 Heritrix的应用程序编程接口API在发布的Heritrix节点上生成配置节点和 任务信息的配置文件。这里关键是在配置文件中固定初始种子为管理服务上的 动态生成种子链接Restful地址,并在初始种子参数上配置节点与任务信息。 Restful地址是指满足约束条件和原则的地址。生成获取单元是根据 Heritrix节点任务对管理服务模块获取的初始种子对应网页上生成链接,并 获取此链接,此链接即为实际种子。生成获取单元还控制Heritrix节点从初始 种子获得实际种子信息,并解析实际种子的附加信息。Heritrix原本的工作流 程是:获取预设的一个URL(初始中子);获取该URL的采集地址集;解析采集 地址集,并进行归档;从中选择出相关的URL,并加入预设URL队列,通过本发 明,在上述步骤的基础上将获取的该URL的采集地址集作为实际种子,Heritrix 在实际种子的基础上进行采集,相当于在原来的步骤上增加了一个步骤。动态 代理单元随机生成动态代理地址,并提供给Heritrix。Heiritrix本身可以设 置代理地址,而其设置数量仅仅为一个,此处通过动态代理单元随机生成一批 代理地址,提供给Heritrix使用,使Heirtrix摆脱了只有一个代理地址的限制。

该系统的具体工作流程包括:

S1、设置一个管理服务模块,并设置多个发布的Heritrix节点,所述管 理服务模块为一个Heritrix节点管理的网页系统,节点的数量至少为两个;

S2、通过UDP协议将所述的多个Heriteix节点广播到获取的初始种子所 在的网段,此过程的完成有节点广播模块完成,管理服务模块监听到Heriteix 节点信息后自动加入该节点并进行管理,管理服务模块获取初始种子,所述的 种子为预置或者是来自于初始种子队列;

S3、通过在管理服务器上增加节点任务,管理服务器指定将任务建立到部 分节点或者是全部节点上,同时管理服务模块通过调用Heritrix的应用程序 编程接口API在发布的Heritrix节点上生成配置节点和任务信息的配置文件, 任务建立后,管理服务模块可以自由调度这些任务的启停。

S4、管理服务模块根据Heritrix节点任务生成并获取管理服务模块获取 的初始种子对应网页上链接,此链接即为实际种子;

S5、Heritrix节点从初始种子获得实际种子信息,并解析实际种子的附 加信息;

S6、Heritrix从实际种子的配置文件中获取实际种子,并采集实际种子 对应网页上生成的链接以及该链接对应的附加信息,对该种子是否使用动态代 理进行判别后下载网页,若为动态代理,则从管理服务模块获取动态代理地址 信息,并动态随机设定一个代理地址,将采集到的信息进行字段抽取,根据该 种子设定的正则信息进行抽取,抽取的工作由Heritrix规则引擎完成, Heritrix自动判别并抽取出满足条件的链接生成初始种子队列,所述的附加 信息包括采集层次、采集周期、节点分布、是否动态代理、子域名数量限定、 正则配置;

S7、将抽取后的数据进行保存,保存的位置包括数据库、索引库、NoSQL、 分布式文件系统等持久化环境。数据保存后,本轮采集任务;

S8、一轮采集任务结束后,Heritrix任务本身不会自动重启,提供过扩展 Heritrix采集过程的生命周期监听,将监听到的状态进行判断,若采集结束, 自动重启任务,并且管理服务模块从Heritrix获取本轮采集状况,该任务重启 后,管理服务模块将从初始种子队列获取下一轮初始种子进行采集,所述的采 集情况包括:采集各种子的开始时间、结束时间、扫描网页数量、持久化数量、 下载字节数。任务重启后,管理服务模块将从初始种子队列获取下一个初始种 子重新开始采集。

在图2示出的本发明的一种基于Heritrix爬虫的分布式采集方法及系统 第二实施例中,其与图1中所述的系统的区别仅在于图2中系统包含实时监控 模块21和节点监听模块22。其中,实时监控模块用于监控Heritrix的运行 状态,并提供Heritrix运行状态信息,这些运行信息可能包括:Heritrix任 务进度、Heritrix完成任务所需时间、Heritrix程序本身参数的设置情况以 及文件访问中所产生的任何错误代码等信息,用户可以通过此模块实时了解 Heritrix运行状况。节点监听模块用于检测Heritrix节点的心跳,当检测到 节点的心跳超时时,则重新分配到该节点的种子,使其分配到其它正常的节点 上,提高任务的完成效率,从而提高系统性能。

本系统的工作步骤与图1所述系统相似,其区别仅在于还包括:

S9、监控Heritrix的运行状态信息,并提供Heritrix运行状态信息,这 些状态信息包括:Heritrix任务进度、Heritrix完成任务所需时间、Heritrix 程序本身参数的设置情况以及文件访问中所产生的任何错误代码。Heritrix 的运行状态信息显示在管理服务模块,用户可以在服务管理模块支持查看这些 信息。Heritrix的运行状态信息也可以用弹窗的形式提供,用户需要查看这 些信息时,只需要点击查看的功能按钮即可通过弹窗查看。

S10、检测Heritrix节点的心跳,当检测到节点的心跳超时时,则重新分 配到该节点的种子,使其分配到正常的节点上。保证任务不会因为

在一实施例中,管理服务模块不包含动态处理单元,Heritrix运行时只使 用预设的唯一代理地址。此时,步骤S5中不需要对该种子是否使用动态代理进 行判别,系统直接下载该网页并进行后续的处理。

在另一实施例中,管理服务模块中不包含任务重启单元,Heritrix本轮采 集结束后,任务不会自动重启,管理服务模块从Heritrix获取本轮采集状况。 此时若需要进行下一个任务,则需要在Heritrxi的操作页面中进行操作,从而 进行下一个任务。

在上述实施例中,管理服务模块、实时监控模块、状态监听模块等模块均 只设置了一组,在其他实施例中,可以还可以设置备用的模块,在主模块不能 正常工作时,系统能够使用备用模块保证系统的正常工作。

Heritrix原本的工作流程包括:获取预设的一个URL;获取该URL的采集地 址集;解析采集地址集,并进行归档;从中选择出相关的URL,并加入预设URL 队列,通过本发明,在上述步骤的基础上

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述 的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本 领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保 护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号