首页> 中国专利> 一种网络爬虫系统及网络爬虫多任务执行和调度方法

一种网络爬虫系统及网络爬虫多任务执行和调度方法

摘要

本发明公开一种网络爬虫系统及网络爬虫多任务执行和调度方法,所述方法包括:A.根据不同的内容和网站特点,对爬取内容进行细粒度切分并分别制作各爬虫解析模板文件,设置网络爬虫分别结合各爬虫解析模板文件形成用于执行爬取任务的各采集模块;B.多个节点服务器上分别部署所述网络爬虫,每个节点服务器分别设置有用于调度爬取任务的调度器;C.所述调度器按照预先定义的调度策略调用关联的采集模块执行爬取任务进行数据采集。本发明通过对爬取内容进行细粒度切分,实现任务的高并发执行,采取负载均衡策略,充分利用了服务器资源,爬取效率得到明显提高,而且避免了单机故障造成的系统可靠性不高的问题,保障了系统高可靠性运行。

著录项

  • 公开/公告号CN103605764A

    专利类型发明专利

  • 公开/公告日2014-02-26

    原文格式PDF

  • 申请/专利权人 TCL集团股份有限公司;

    申请/专利号CN201310610659.4

  • 发明设计人 宋轲;刘世才;毛海涛;

    申请日2013-11-26

  • 分类号G06F17/30(20060101);G06F9/46(20060101);

  • 代理机构44268 深圳市君胜知识产权代理事务所;

  • 代理人王永文;刘文求

  • 地址 516001 广东省惠州市鹅岭南路6号TCL工业大厦8楼技术中心

  • 入库时间 2024-02-19 22:18:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-10-24

    授权

    授权

  • 2015-01-14

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20131126

    实质审查的生效

  • 2014-02-26

    公开

    公开

说明书

技术领域

本发明涉及搜索引擎技术领域,尤其涉及一种网络爬虫系统及网络爬虫多任务执行和调度方法。 

背景技术

随着互联网信息的爆炸式增长,传统的网络爬虫采集数据的方式已经逐渐显示出劣势。传统的网络爬虫采集数据时任务没有细粒度的切分,耗时比较长,服务器CPU、内存和网络带宽的限制,数据爬取效率比较低下,而且容易出现单点故障。

因此,现有技术还有待于改进和发展。

发明内容

鉴于上述现有技术的不足,本发明的目的在于提供一种网络爬虫系统及网络爬虫多任务执行和调度方法,旨在解决目前网络爬虫采集数据方法效率低,耗时长的问题。

本发明的技术方案如下:

一种网络爬虫多任务执行和调度方法,其中,所述方法包括:

A、根据不同的内容和网站特点,对待爬取内容进行细粒度切分并根据切分后内容分别制作各爬虫解析模板文件,设置网络爬虫分别结合各爬虫解析模板文件形成用于执行爬取任务的各采集模块;

B、多个节点服务器上分别部署所述网络爬虫,每个节点服务器分别设置有用于调度爬取任务的调度器;

C、所述调度器按照预先定义的调度策略调用关联的采集模块执行爬取任务进行数据采集。

所述的网络爬虫多任务执行和调度方法,其中,所述步骤A中根据不同的内容和网站特点,对待爬取内容进行细粒度切分具体为:

当所述待爬取内容包括多个类型相同的网站时,将多个类型相同的网站切分为单个网站;

或者,当单个网站包含多个内容不同的版块时,将单个网站切分为不同的版块;

或者,当单一板块中包含多个页面时,将单一板块切分为多个页面。

所述的网络爬虫多任务执行和调度方法,其中,所述切分后的内容之间无关联性,所述各采集模块分别对应关联各爬取任务。

所述的网络爬虫多任务执行和调度方法,其中,所述各爬取任务之间无关联性,每一爬取任务通过一独立线程完成。

所述的网络爬虫多任务执行和调度方法,其中,所述预先定义的调度策略包括:

指定所述爬取任务在一固定的节点服务器上执行;

按照所述节点服务器节点等比原则在多个节点服务器中随机分配爬取任务;

根据所述多个节点服务器当前的资源信息,优先选择资源利用率低的节点服务器执行爬取任务。

所述的网络爬虫多任务执行和调度方法,其中,所述预先定义的调度策略具体设置为:

预先设置并存储一信息列表,所述信息列表中存储有所述节点服务器的IP、端口信息、爬取任务信息;读取所述信息列表获取爬取任务与节点服务器的对应关系,按照所述对应关系在相应的节点服务器上的执行爬取任务;

设置所述各节点服务器节点权重均为1,按照该等比原则在多个节点服务器中随机分配爬取任务;

定期获取所述多个节点服务器当前的CPU、内存资源信息,根据所获取的资源信息优先选择资源利用率低的节点服务器执行爬取任务,若存在资源利用率相同的节点服务器,则在该类节点服务器中随机分配爬取任务。

所述的网络爬虫多任务执行和调度方法,其中,所述方法还包括:设置一用于保存爬取任务信息的数据库,所述数据库分别与所述多个节点服务器相连接,所述节点服务器上的各调度器通过各自独立的线程定期检查所述数据库。

所述的网络爬虫多任务执行和调度方法,其中,所述步骤C中所述调度器按照预先定义的调度策略调用关联的采集模块之前还包括:

所述节点服务器第一次运行时,将所获取的爬取任务信息初始化到所述数据库。

所述的网络爬虫多任务执行和调度方法,其中,所述步骤C具体为:到爬取任务触发时间时,按照预先定义的调度策略,所述服务器节点的调度器触发自己的触发器获取数据库锁,获取所述数据库锁的调度器调用关联的采集模块,网络爬虫加载所述爬虫解析模板文件采集数据,同时更新爬取任务状态并持久化到所述数据库。

一种具有如上所述的网络爬虫多任务执行和调度的系统,其中,所述系统包括:

数据库:分别所述节点服务器连接用于保存爬取任务信息;

节点服务器,用于执行网络爬虫爬取任务;所述节点服务器包括:

采集模块,通过所述爬虫解析模板文件形成用于具体执行爬取任务并进行数据采集;

调度器,用于按照预先定义的调度策略调用关联的采集模块执行爬取任务。

有益效果:本发明提供一种网络爬虫系统及网络爬虫多任务执行和调度方法,通过对爬取内容进行细粒度切分,实现任务的高并发执行,采取负载均衡策略,充分利用了服务器资源,提高了爬取数据的速度,爬取效率得到明显提高,而且避免了单机故障造成的系统可靠性不高的问题,保障了系统高可靠性运行。 

附图说明

图1为本发明的网络爬虫多任务执行和调度方法较佳实施例的方法流程图。

图2为本发明的网络爬虫系统较佳实施例的逻辑架构图。

图3为图2的节点服务器爬虫结构示意图。

图4为图2的节点服务器节点调度结构示意图。

图5为图1中步骤S300的具体实施例的方法流程图。

具体实施方式

本发明提供一种网络爬虫系统及网络爬虫的多任务执行和调度方法,这里所述的网络爬虫也即不间断地执行某项任务的人工智能软件程序。为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示的一种网络爬虫多任务执行和调度方法的较佳实施例,其中,所述方法包括:

S100、根据不同的内容和网站特点,对待爬取内容进行细粒度切分并根据切分后内容分别制作各爬虫解析模板文件,设置网络爬虫分别结合各爬虫解析模板文件形成用于执行爬取任务的各采集模块。

其中,根据不同的内容和网站特点,对待爬取内容进行细粒度切分通俗的讲是将要爬取的比较大的内容分离为若干个小的内容,更为具体的:当所述待爬取内容包括类型相同的多个网站时,将类型相同的多个相同的网站切分为单个网站,例如优酷、爱奇艺、土豆网站都有电影,采集这3个网站的电影,将这3个网站的电影与相关信息进行分开采集;或者,当单个网站包含多个内容不同的版块时,将单个网站切分为不同的版块;或者,当单一板块中包含多个页面时,将单一板块切分为多个页面。例如某网站上有资讯,资讯又分为国际、国内、社会、娱乐等类别。可以将资讯这个大版块分为国际、国内、社会、娱乐等小版块进行独立采集。

由于所述切分后的内容之间无关联性,且所述各采集模块分别对应关联各爬取任务,因而所要执行的各爬取任务之间也必然无关联性。按照上述的方法将爬取内容切分成细小内容后,由独立的任务进行爬取且设定每一爬取任务通过一独立线程完成,由于任务彼此之间无关联性,在调度器的调度下可以同时执行,即可具有并发执行的特点。

较佳的是,所述爬虫解析模板文件是一个xml文件,里面定义要爬取的内容,利用xpath、xquery对内容进行抽取。

<?xml version="1.0" encoding="utf-8"?>

<config charset="utf-8">

  <script>

       //脚本代码

  </script>

  <var-def   name="url">http:www.xxx.com</var-def>

  <var-def name="link">

  <xpath expression="//div[@class='maincol']/div[@class='catars']/div[@class='items']/ul[@class='star']/li[@class='name']/a/@href">

                        <html-to-xml>

                              <http  url="${url}" charset="utf-8"/>

                      </html-to-xml>

                 </xpath>

             </var-def>

    </config>

S200、多个节点服务器上分别部署所述网络爬虫,每个节点服务器分别设置有用于调度爬取任务的调度器;

另外,所述方法还包括:设置一用于保存爬取任务信息的数据库,所述数据库分别与所述多个节点服务器相连接,所述节点服务器上的各调度器通过各自独立的线程定期检查所述数据库。

每个节点服务器上部署相同的网络爬虫,每个节点服务器上的网络爬虫都有一个调度器,这些调度器之间不直接进行通信,它们之间通过独立的线程定期检查数据库获取其它任务的状态信息。当某个服务器节点宕机后,其它的调度器可以很快检测到。具体为:调度器设置有一个检测节点状态的线程,当一个节点正在执行,发生一个或多个任务失败的时候,失败的信息会即时记录在数据库中,其它节点的检测节点状态线程通过定期地查询数据库中的任务状态信息,可发现这些失败的任务,当发现任务执行失败之后可根据预先定义的调度策略,调度其它服务器节点上的任务。

S300、所述调度器按照预先定义的调度策略调用关联的采集模块执行爬取任务进行数据采集。

其中,所述预先定义的调度策略包括:

一、指定所述爬取任务在一固定的节点服务器上执行。具体为:预先设置并存储一信息列表,所述信息列表中存储有所述节点服务器的IP、端口信息、爬取任务信息;读取所述信息列表获取爬取任务与节点服务器的对应关系,按照所述对应关系在相应的节点服务器上的执行信息爬取任务;

二、按照所述节点服务器节点等比原则在多个节点服务器中随机分配爬取任务。任务随机分配的好处是:在服务器配置基本相同的情况下,采用随机分配,算法比较简单,实现比较容易,选择节点服务器所耗时间也比较少。其中设置所述各节点服务器节点权重均为1,当第一个任务要到达执行时间点时,随机选择某一台服务器上的任务执行,当第二个任务要到达执行时间点时,随机选择另一台服务器上的任务执行,这样各服务器上运行任务的个数几乎相等。

三、根据所述多个节点服务器当前的资源信息,优先选择资源利用率低的节点服务器执行爬取任务。其中,所述资源信息包括节点服务器当前的CPU、内存等资源信息,优先选择资源利用率低的节点服务器执行爬取任务,若资源利用率相同或相近,则采用随机分配。

较佳实施例中,所述步骤S300具体为:所述节点服务器第一次运行时,将所获取的爬取任务信息初始化到所述数据库,调度器通过专门的线程检查数据库的任务状态,当到爬取任务触发时间时,按照预先定义的调度策略,所述服务器节点的调度器触发自己的触发器获取数据库锁,获取所述数据库锁的调度器调用关联的采集模块,网络爬虫加载所述爬虫解析模板文件采集数据,同时更新爬取任务状态并持久化到所述数据库,即将任务的状态信息标识为运行状态并记录在数据库的表中。

任务结束时,将数据库表中任务的状态信息更新为等待状态,同时更新任务的下一次调度时间,等待下一次调度。

如图2所示的一种具有如上所述的网络爬虫多任务执行和调度的系统,其中,所述系统包括:

数据库100:用于保存爬取任务信息;

节点服务器201、202、203、204,用于执行网络爬虫爬取任务;所述节点服务器分别与数据库100连接并随时对数据库100进行读写操作,所有节点服务器均连接网络300

所述节点服务器201~204具有相同的爬虫结构,如图3所示,包括:

采集模块221~223,通过所述爬虫解析模板文件形成,用于具体执行爬取任务进行数据采集;具体的,采集模块由爬虫解析模板文件和加载、解析这种模板文件的程序构成。采集模块启动后,程序开始加载解析模板文件,再分析、解析这种模板文件,然后执行数据采集。

调度器210,用于按照预先定义的调度策略调用关联的采集模块执行爬取任务。每个节点服务器中均设置有调度器。

如图3所示,针对不同爬取任务1、2、3分别对应设置不同的采集模块221、222、223,在节点服务器中,调度器和设置的采集模块就形成了3个节点的服务器爬虫结构。当然,具体爬虫数量可根据爬取任务的多少进行设置。

如图4所示为本发明的节点服务器节点调度结构示意图,图中设置了3个服务器节点爬虫301、302、303,每个节点服务器中分别设置有调度器211(调度器1)、212(调度器2)、213(调度器3)。调度器之间不直接进行通信。

调度器通过调用采集模块执行相应爬取任务,各爬取任务之间无关联,设置多个采集模块并行处理多个爬取任务。

各节点服务器均连接同一个数据库100,调度器通过从数据库100中获取任务的信息来实现对任务的调度执行并将任务的信息改变更新到数据库100中。在数据库100中设置一个存放锁标识的数据表,里面存放各任务执行必须拥有的一个标识,当一个任务到达执行时间的时候,调度器就会从数据库100查询所述的标识,并将数据库表中这行记录锁定(可利用数据库自身的锁定机制),直到任务执行完后才释放琐。其它节点服务器的调度器因为这行记录被锁定而获取不到任务执行需要的标识,所以这个任务就不会在其它的节点上执行。节点上的调度器之间通过这种方式间接地通信。

例如,通过调度器1可依据定义的指定所述爬取任务在一固定的节点服务器上执行的调度策略调度采集模块224专门执行爬取任务1,而调度器2可依据随机分配爬取任务的调度策略调度采集模块225执行爬取任务2的同时,也调度采集模块226执行爬取任务6。调度器3可依据优先选择资源利用率低的节点服务器执行爬取任务调度采集模块227执行爬取任务3。充分利用服务器资源,提高了爬虫的效率。

如图5所示为本发明图1中步骤S300较佳实施例的方法流程图,具体步骤如下:

S1、调度器启动。

S2、启动成功/失败。检测各节点服务器的调度器启动情况,并进行反馈,若启动成功,则执行步骤S3,若启动失败,则执行步骤S9。

S3、获取任务状态信息调度任务。调度器通过独立线程从数据库获取任务状态信息进而安排调度任务。

S4、调度任务成功/失败。在调度器获取任务状态信息后检测其调度任务是否成功,若成功,则执行步骤S5,若失败,则返回执行步骤S3,调度器重新调度任务。

S5、采集模块执行任务。调度器按照预定义的策略调度采集模块执行相应爬取任务。

S6、任务成功/失败。判断检测爬取任务是否成功执行,若成功,则执行步骤S7,若失败,则执行步骤S3,调度器重新调度任务。

S7、数据入库,将爬取任务执行信息反馈至数据库中。

S8、更新任务状态信息,对数据库中的任务状态信息进行更新。

S9、结束

本发明提供一种网络爬虫系统及网络爬虫多任务执行和调度方法,通过对爬取内容进行细粒度切分,实现任务的高并发执行,采取负载均衡策略,充分利用了服务器资源,提高了爬取数据的速度,爬取效率得到明显提高,而且避免了单机故障造成的系统可靠性不高的问题,保障了系统高可靠性运行。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号