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

文档序号:9754284阅读:来源:国知局
eriteix节点广播到获取的初始种子所在的网段,管理服务模块监听到后加入所述的多个Heritrix节点并进行管理,使Heritrix扩展为分布式方式,有效的提高了系统的性能。
[0019]通过检查节点的心跳是否超时,若超时,在重置分配到该节点的种子,使其分配到正常工作的节点上,避免了种子分配到无法正常工作的节点上而无法完成爬取,进一步提高了系统的性能。
【附图说明】
[0020]下面将结合附图及实施例对本发明作进一步说明,附图中:
[0021]图1为基于本发明采集方法的实施例的采集过程基本交互流程图;
[0022]图2为基于本发明采集方法的实施例的实时监控与节点监听示意图。
【具体实施方式】
[0023]为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的【具体实施方式】。
[0024]如图1所示,在本发明的一种基于Heritrix爬虫的分布式采集方法及系统第一实施例中,系统包括Heritrix、管理服务模块、节点广播模块以及任务重启模块15。在图1中,两条虚线的中间部分为Heritrix的处理流程,虚线的左边为任务重启模块及其处理流程,虚线的右边为任务管理模块及其主要处理流程。管理服务模块为一个Heritrix节点管理的网页系统,用于对Heritrix进行设置与管理。节点广播模块(图1中未给出)于将多个发布的Heritrix节点通过UDP协议将所述的多个Heriteix节点广播到获取的初始种子所在的网段。由于Heritrix本身完成一个任务后并不会自动进行下一个任务,此处设置任务重启模块,通过扩展Heritrix采集过程的生命周期监听,将监听到的状态进行判断,若本轮任务采集结束,则向管理服务模块报告本轮采集状况,并自动重启任务。任务重启后,管理服务模块将从初始种子队列获取下一个初始种子重新开始采集。
[0025]上述的管理服务模块包括:节点处理单元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摆脱了只有一个代理地址的限制。
[0026]该系统的具体工作流程包括:
[0027]S1、设置一个管理服务模块,并设置多个发布的Heritrix节点,所述管理服务模块为一个Heritrix节点管理的网页系统,节点的数量至少为两个;
[0028]S2、通过UDP协议将所述的多个Heriteix节点广播到获取的初始种子所在的网段,此过程的完成有节点广播模块完成,管理服务模块监听到Heriteix节点信息后自动加入该节点并进行管理,管理服务模块获取初始种子,所述的种子为预置或者是来自于初始种子队列;
[0029]S3、通过在管理服务器上增加节点任务,管理服务器指定将任务建立到部分节点或者是全部节点上,同时管理服务模块通过调用Heritrix的应用程序编程接口 API在发布的Heritrix节点上生成配置节点和任务信息的配置文件,任务建立后,管理服务模块可以自由调度这些任务的启停。
[0030]S4、管理服务模块根据Heritrix节点任务生成并获取管理服务模块获取的初始种子对应网页上链接,此链接即为实际种子;
[0031]S5、Heritrix节点从初始种子获得实际种子信息,并解析实际种子的附加信息;
[0032]S6、Heritrix从实际种子的配置文件中获取实际种子,并采集实际种子对应网页上生成的链接以及该链接对应的附加信息,对该种子是否使用动态代理进行判别后下载网页,若为动态代理,则从管理服务模块获取动态代理地址信息,并动态随机设定一个代理地址,将采集到的信息进行字段抽取,根据该种子设定的正则信息进行抽取,抽取的工作由Heritrix规则引擎完成,Heritrix自动判别并抽取出满足条件的链接生成初始种子队列,所述的附加信息包括采集层次、采集周期、节点分布、是否动态代理、子域名数量限定、正则配置;
[0033]S7、将抽取后的数据进行保存,保存的位置包括数据库、索引库、NoSQL、分布式文件系统等持久化环境。数据保存后,本轮采集任务;
[0034]S8、一轮采集任务结束后,Heritrix任务本身不会自动重启,提供过扩展Heritrix采集过程的生命周期监听,将监听到的状态进行判断,若采集结束,自动重启任务,并且管理服务模块从Heritrix获取本轮采集状况,该任务重启后,管理服务模块将从初始种子队列获取下一轮初始种子进行采集,所述的采集情况包括:采集各种子的开始时间、结束时间、扫描网页数量、持久化数量、下载字节数。任务重启后,管理服务模块将从初始种子队列获取下一个初始种子重新开始采集。
[0035]在图2示出的本发明的一种基于Heritrix爬虫的分布式采集方法及系统第二实施例中,其与图1中所述的系统的区别仅在于图2中系统包含实时监控模块21和节点监听模块22。其中,实时监控模块用于监控Heritrix的运行状态,并提供Heritrix运行状态信息,这些运行信息可能包括=Heritrix任务进度、Heritrix完成任务所需时间、Heritrix程序本身参数的设置情况以及文件访问中所产生的任何错误代码等信息,用户可以通过此模块实时了解Heritrix运行状况。节点监听模块用于检测Heritrix节点的心跳,当检测到节点的心跳超时时,则重新分配到该节点的种子,使其分配到其它正常的节点上,提高任务的完成效率,从而提闻系统性能。
[0036]本系统的工作步骤与图1所述系统相似,其区别仅在于还包括:
[0037]S9、监控Heritrix的运行状态信息,并提供Heritrix运行状态信息,这些状态信息包括=Heritrix任务进度、Heritrix完成任务所需时间、Heritrix程序本身参数的设置情况以及文件访
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1