CN107784036A - 网络爬虫系统和基于网络爬虫系统的数据处理方法 - Google Patents
网络爬虫系统和基于网络爬虫系统的数据处理方法 Download PDFInfo
- Publication number
- CN107784036A CN107784036A CN201610798817.7A CN201610798817A CN107784036A CN 107784036 A CN107784036 A CN 107784036A CN 201610798817 A CN201610798817 A CN 201610798817A CN 107784036 A CN107784036 A CN 107784036A
- Authority
- CN
- China
- Prior art keywords
- task
- module
- functional module
- web page
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000012545 processing Methods 0.000 claims description 107
- 238000000034 method Methods 0.000 claims description 24
- 238000000605 extraction Methods 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 15
- 238000012216 screening Methods 0.000 claims description 9
- 230000009471 action Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 38
- 230000005540 biological transmission Effects 0.000 description 10
- 230000009193 crawling Effects 0.000 description 7
- 241000270322 Lepidosauria Species 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 241000239290 Araneae Species 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种网络爬虫系统和基于网络爬虫系统的数据处理方法。该网络爬虫系统包括:多个功能模块,其中,每个功能模块之间能够相互进行通信;多个功能模块中的任一功能模块在接收到任务后,根据任务对应的流转信息,确定执行任务的功能模块以及任务的执行顺序,并将任务发送给相应的功能模块,以使功能模块按照执行顺序执行任务。解决了现有技术中网络爬虫的多个组件部署在同一台机器,或部署于多个机器但各个组件之间关系紧密,导致不易于拓展和维护的技术问题。
Description
技术领域
本发明涉及互联网技术领域,具体而言,涉及一种网络爬虫系统和基于网络爬虫系统的数据处理方法。
背景技术
当前互联网上拥有海量的信息,人们想要获取这些信息,就需要用到网络爬虫。传统的网络爬虫分为单机式以及集群式两种。
单机爬虫将爬取、处理、存储等组件都部署在同一台机器上,或者直接编写在同一个程序中。这种方法的优点是易于部署、迁移、维护,成本低,不足点是性能依赖于单机性能,不易于扩展,遇到性能瓶颈时不能自动调整。
集群式爬虫将所有的程序部署到一个机器集群中,集群中每台机器可以单独负责某一职责,也可以负责多个职责。这种方法的优点是性能可配置,能最大化利用系统资源,爬虫的配置可以弹性伸缩,比单机版的效率要高。缺点是部署复杂,组建之间依赖关系紧密,架构封闭性强,不易于扩展以及维护,架设成本比较高。
针对现有技术中网络爬虫的多个组件部署在同一台机器,或部署于多个机器但各个组件之间关系紧密,导致不易于拓展和维护的技术问题的,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种网络爬虫系统和基于网络爬虫系统的数据处理方法,以至少解决现有技术中网络爬虫的多个组件部署在同一台机器,或部署于多个机器但各个组件之间关系紧密,导致不易于拓展和维护的技术问题。
根据本发明实施例的一个方面,提供了一种网络爬虫系统,包括:多个功能模块,其中,每个功能模块之间能够相互进行通信;多个功能模块中的任一功能模块在接收到任务后,根据任务对应的流转信息,确定执行任务的功能模块以及任务的执行顺序,并将任务发送给相应的功能模块,以使功能模块按照执行顺序执行任务。
进一步地,多个功能模块至少包括:网页爬取模块,用于根据有效链接地址,从互联网上获取有效链接地址对应的网页内容;结果处理模块,用于将任务的执行结果存储于相应的存储区域,并结束本次任务;或者,在任务的执行结果出现错误或接收到预设指令后,生成新的待执行任务。
进一步地,多个功能模块还包括:链接抽取模块,用于从网页内容中抽取有效链接;和/或网页处理模块,用于对网页内容进行第一预设处理,其中,第一预设处理包括:网页筛选和/或链接筛选;和/或链接处理模块,用于对有效链接进行第二预设处理,其中,第二预设处理包括:变形、删除和/或添加。
进一步地,其特征在于,系统还包括:中央模块,用于保存每个功能模块的注册地址,并且能够与每个功能模块进行通信。
进一步地,每个功能模块包括:地址获取单元,用于根据执行顺序获取目标功能模块的注册地址,目标功能模块为接收当前功能模块任务执行结果的功能模块;接收单元,用于接收任务;处理单元,用于执行任务;发送单元,用于将任务的执行结果发送给目标功能模块。
进一步地,每个功能模块还包括:第一资源调整单元,用于在任务的等待时间超过预设时间的情况下,增加处理单元的数量;第二资源调整单元,用于在执行任务的资源消耗超过预设阈值的情况下,减少处理单元的数量。
根据本发明实施例的一个方面,提供了一种基于网络爬虫系统的数据处理方法,其中,网络爬虫系统为上述实施例中任意一种网络爬虫系统,方法包括:多个功能模块中的任一功能模块在接收到任务后,根据任务对应的流转信息,确定执行任务的功能模块以及任务的执行顺序;将任务发送给相应的功能模块,以使功能模块按照执行顺序执行任务。
进一步地,上述方法还包括:根据有效链接地址,从互联网上获取有效链接地址对应的网页内容;将任务的执行结果存储于相应的存储区域,并结束本次任务;或者,在任务的执行结果出现错误或接收到预设指令后,生成新的待执行任务;和/或从网页内容中抽取有效链接;和/或对网页内容进行第一预设处理,其中,第一预设处理包括:网页筛选和/或链接筛选;和/或对有效链接进行第二预设处理,其中,第二预设处理包括:变形、删除和/或添加。
进一步地,将任务发送给相应的功能模块,包括:获取相应的功能模块的注册地址;根据注册地址将所述任务发送给相应的功能模块。
进一步地,在任务的等待时间超过预设时间的情况下,增加处理单元的数量;在执行任务的资源消耗超过预设阈值的情况下,减少处理单元的数量。
在本发明实施例中,本申请上述方案中的网络爬虫模块包括多个功能模块,任一功能模块在接收到任务后,根据任务对应的流转信息,确定执行任务的功能模块以及任务的执行顺序,并将任务发送给相应的功能模块,以使所述功能模块按照执行顺序执行任务。上述方案通过将网络爬虫系统划分为多个功能模块,使得多个功能模块之间没有必然的耦合关系,从而解决了现有技术中网络爬虫的多个组件部署在同一台机器,或部署于与多个机器但各个组件之间关系紧密,导致不易于拓展和维护的技术问题的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种网络爬虫系统的结构示意图;
图2是根据本发明实施例的一种可选的网络爬虫系统的结构示意图;
图3是根据本申请实施例的一种网络爬虫系统处理任务的结构示意图;以及
图4是根据本发明实施例的基于网络爬虫系统的数据处理方法的流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
本发明提供了一种网络爬虫系统,图1是根据本发明实施例的一种网络爬虫系统的结构示意图,如图1所示,该系统包括:多个功能模块,其中,每个功能模块之间能够相互进行通信;
多个功能模块中的任一功能模块在接收到任务后,根据任务对应的流转信息,确定执行任务的功能模块以及任务的执行顺序,并将任务发送给相应的功能模块,以使功能模块按照执行顺序执行任务。
具体的,上述每个功能模块可以包括多个可拆分的模块,其中,每个功能模块之间没有依赖关系,而且每个模块都自己是无状态的处理单元,即在接收任务或执行任务之后不会返回相应的返回值,从而使得爬虫系统的调试与部署更加简单。上述流转信息用于表征多个功能模块执行任务时的执行顺序;相应的功能模块即为在流转信息中保存的当前功能模块的下一个执行任务的功能模块。
在一种可选的实施例中,以多个功能模块具有编号A、B、C、D、E作为示例,流转信息中可以按照多个功能模块的执行顺序来保存编号,例如,系统接受到的任务的执行顺序是:A、C、E、D、B,那么流转信息中可以按照A、C、E、D、B的顺序保存多个功能模块的编号,那么在该示例中,由A模块来接收任务,A模块执行任务后将任务转发至C模块,由C模块执行,依次转发,直至流转信息中的所有模块执行完接收到的任务。
此处还需要说明的是,在网络爬虫系统执行任务时,网络爬虫系统中的多个功能模块并不一定需要全部执行任务,仍以多个功能模块具有编号A、B、C、D、E作为示例,如果任务对应的流转信息中保存的信息为A、C、D、B,则在系统执行该任务时,编号为E的功能模块并没有执行该任务,也就是说,多个功能模块中的每个模块是否参与任务的执行以及执行任务时的顺序,取决于任务对应的流转信息。
在一种可选的实施例中,每个功能模块间的通信可以通过通讯协议来交互,用于每个功能模块通讯的通讯协议包括但不限于常见的HTTP协议或者TCP协议等。每个功能模块之间的通讯可以是无状态的通讯,即不需要对返回值做处理,从而可以提高网络爬虫系统对任务的处理效率。
由于所有的模块通讯都是基于IP来做的,所以我们可以通过一个中心模块来管理所有通讯地址,并按照类别分类。在每个模块启动时会做通过一个自检步骤,在这个步骤中需要向中心模块注册自己的访问地址,并取回所有有效的下一步地址。这样做可以确保当前模块部署正确,并且在运行过程中去中心化。
在另一种可选的实施例中,由于外部引入的任务的不确定性,可以对任务进行多发处理,即每个功能模块在接收输入后都会确保发送多份请求给下一个功能模块。这样可以确保最终结果不会丢失,发送数量可以根据实际需要进行预设配置。
值得注意的是,本发明上述实施例将网络爬虫系统进行细分,将整个爬取流程分为多个可拆分的模块,每个模块按照任务预设的处理顺序来执行任务,因此每个模块之间没有依赖关系,而且模块是无状态的处理单元。这样可以使得整个系统的调试与部署更加简单,在模块细分后,每个模块间的通信可以通过通讯协议来交互,通讯协议包括但不限于常见的HTTP协议或者TCP协议,上述通讯都为无状态的通讯,即不需要对返回值做处理,可以极大地加快处理效率。
由上可知,本申请上述方案中的网络爬虫模块包括多个功能模块,多个功能模块中的任一功能模块在接收到任务后,根据任务对应的流转信息,确定执行任务的功能模块以及任务的执行顺序,并将任务发送给相应的功能模块,以使功能模块按照执行顺序执行任务。上述方案通过将网络爬虫系统划分为多个功能模块,由于多个功能模块之间没有必然的耦合关系,从而解决了现有技术中网络爬虫的多个组件部署在同一台机器,或部署于多个机器但各个组件之间关系紧密,导致不易于拓展和维护的技术问题的技术问题。
可选的,根据本申请上述实施例,如图2所示,多个功能模块至少包括:
网页爬取模块,用于根据有效链接地址,从互联网上获取有效链接地址对应的网页内容。
具体的,其中,上述输入的有效url地址可以是任务中携带的URL地址,也可以是通过其他功能模块获取到的URL地址。
在上述系统中,网页爬取模块的作用是根据输入的有效URL(Uniform ResoureLocator,统一资源定位符)地址去获取该地址对应的网页页面,并返回的页面内容。在一种可选的实施例中网页爬取模块内部使用输入的任务信息(URL),向网络站点发送HTTP请求,将请求返回的内容经过包装,作为输出发送到其他模块。
需要说明的是,该模块是网络爬虫系统的核心模块,是获取互联网信息的唯一组件。
结果处理模块,用于将任务的执行结果存储于相应的存储区域,并结束本次任务;或者,在任务的执行结果出现错误或接收到预设指令后,生成新的待执行任务。
结果处理模块是网络爬虫系统的出口,主要作用是将系统爬取到的最终结果保存起来,并根据输入的任务,将结果内容存储到相应的存储介质中。
此处需要说明的是,结果处理模块不对结果进行修改或转化,只负责将结果存储起来。在爬虫系统中,该模块是整个系统的唯一出口,所有任务在经过该模块处理之后,通常都不会再生成新的任务发送到系统中,然而在某些特殊的情况下,比如系统执行任务发生出现错误,或接收到预设指令,结果处理模块可以生成新的处理任务并发送到系统中来。
由上可知,本申请上述系统通过网页爬取模块根据有效链接地址,从互联网上获取有效链接地址对应的网页内容,通过结果处理模块将任务的执行结果存储于相应的存储区域,并结束本次任务;或者,在任务的执行结果出现错误或接收到预设指令后,生成新的待执行任务。上述方案通过将网络爬虫系统加分为相互独立的功能模块,解决了现有技术中网络爬虫的多个组件部署在同一台机器,或部署与多个机器但各个组件之间关系紧密,导致不易于拓展和维护的技术问题。
可选的,根据本申请上述实施例,上述多个功能模块还可以包括:
链接抽取模块,用于从网页内容中抽取有效链接;和/或
在上述系统中,链接抽取模块的作用是从爬取获得的网页内容中将有效链接抽取出来,链接中包含了需要去获取的网页的URL的地址以及一些HTTP请求需要包含的参数。
在一种可选的实施例中,抽取链接模块在抽取到这些链接之后,可以对抽取出的有效连接进行包装,并将包装有效链接构成的任务发送到其他模块,链接抽取模块是爬虫系统的核心模块,爬虫系统的基础就是链接,网络中的页面就是通过链接的方式联系起来的。
网页处理模块,用于对网页内容进行第一预设处理,其中,第一预设处理包括:网页筛选和/或链接筛选;和/或
具体的,上述对网页内容进行网页筛选处理可以是根据任务筛选有用的网页内容和/或链接。
例如,网页爬取模块爬取得到的网页内容中包括大量的信息,其中,以网页内容中的网页为例,包括需要的有用网页内容和不需要的无用网页,网页中的广告内容即为无用网页,经过网页处理模块的网页筛选,可以从大量的信息筛选得到需要的有用网页,去除例如广告信息等无效网页;再以网页内容中的链接为例,网页内容中的链接可以分为有效链接和无效链接,有效链接还可以分为有用链接和无用链接,系统所需要的仅仅为有效链接中的有用链接,因此可以通过网页处理模块对网页内容中的链接进行筛选,筛选出有用的链接,包装后转发至下一个功能模块进行处理。
此处需要说明的是,由于网页处理模块是对网页内容进行第一预设处理,因此通常情况下,如果执行任务的功能模块包括网页处理模块,则网页处理模块的顺序位于网页爬取模块之后。
链接处理模块,用于对有效链接进行第二预设处理,其中,第二预设处理包括:变形、删除和/或添加。
具体的,链接处理模块的作用是对抽取出来的链接进行处理,并生成新的爬取任务。
值得注意的是,链接处理模块和链接抽取对链接的处理角度不同,链接预处理模块可以对链接进行变形,删除,添加等操作,接收的输入可以是一个链接,也可以是一组链接的集合,在经过该模块的处理之后,产生的会是页面爬取模块所需的任务。链接处理模块能够根据链接内容来有效地减少无用链接的数量,从而提高爬虫的爬取效率,降低整个爬虫系统的负载量。
由上可知,本申请上述网页爬虫系统通过链接抽取模块、网页处理模块以及链接处理模块,在解决了现有技术中网络爬虫的多个组件部署在同一台机器,或部署于多个机器但各个组件之间关系紧密,导致不易于拓展和维护的技术问题的基础上,达到了提高系统爬取效率的技术效果。
图3是根据本申请实施例的一种网络爬虫系统处理任务的结构示意图,下面结合图3所示的示例,对上述网络爬虫系统执行任务的一种实施例进行描述。
在一种可选的实施例中,结合图3所示的示例,流转信息记录的功能模块执行任务的处理顺序为链接处理模块、网页爬取模块、网页处理模块、链接抽取模块多次循环执行任务,然后将最终的结果发送至结果处理模块。
此处需要说明是,在上述示例中,网页爬虫系统可以包括上述实施例中的全部功能模块,也可以仅包含上述实施例中的部分功能模块,但至少包括:网页爬取模块和结果处理模块。以下说明两种可选的网络爬虫系统构架方式作为示例:
方式一,网络爬虫系统包括:链接处理模块、网页爬取模块、页面处理模块、链接抽取模块以及结果处理模块。
在网络爬虫系统为上述方式一的构架方式的情况下,任务对应的流转信息可以包含全部的功能模块,也可以仅包含部分功能模块。
方式二,网络爬虫系统包括:网页爬取模块、链接抽取模块以及结果处理模块。
在网络爬虫系统为上述方式二的构架方式的情况下,任务的执行按照任务对应的流转信息进行处理。
其中,以上两种方式仅作为示例,不包含本发明保护的全部网络爬虫系统。
此处还需要说明的是,网络爬虫系统在获取到任务的同时,还可以获取到任务运行中所需的信息,比如:爬取层数、爬取采用的标头信息和爬取时采用的爬取策略等。
下面以一种可选的实施例来介绍网络爬虫系统根据流转信息处理任务的方式。
流转信息可以为存储有多个功能模块的标识的表格,在上述多个功能模块包括:网页爬取模块、结果处理模块、链接抽取模块、网页处理模块以及链接处理模块的示例中,如果上述多个功能模块所具有的标识信息分别为:01A、02B、03C、04D和05E,如果流转信息中包含的信息为:03C、05E、04D和02B,则网络爬虫系统处理上述流转信息对应的任务时的处理顺序应该为:链接抽取模块、链接处理模块、网页处理模块以及结果处理模块。
可选的,根据本申请上述实施例,上述系统还包括:
中央模块,用于保存每个功能模块的注册地址,并且能够与每个功能模块进行通信。
在任务对应的流转信息不包括功能模块的注册地址的情况下,可以通过一个中央模块来管理所有功能模块的注册地址,并按照类别分类。在一种可选的实施例中,每个功能模块启动会做通过一个自检步骤,在这个步骤中需要向中心模块注册自己的访问地址,并取回所有有效的下一步地址。这样做可以确保当前模块部署正确,并且在运行过程中去中心化;每个功能模块只有在获取到至少一个下一功能模块地址时才会启动。否则将一直向中央模块进行请求。每个功能模块在接收任务时的输入是结构化的信息,可以但不限于使用Json、Xml等格式的信息。
在一种可选的实施例中,网络爬虫系统包括:链接处理模块、网页爬取模块、页面处理模块、链接抽取模块、结果处理模块以及中央模块,中央模块保存有功能模块的注册地址,功能模块可以通过向中央模块获取任务的流转信息中,下一个功能模块的地址,来传输任务处理结果,因此各个功能模块之间都是可以通过获取注册地址来通讯的。在上述网络爬虫系统任务之前,需要进行初始化过程,即中央模块获取每个功能模块的注册地址,通过将任务注入任意一个功能模块来启动网络爬虫系统执行任务,在每个模块执行任务得到结果后,会从中央模块获取任务的流转信息中下一个功能模块的注册地址,将处理结果发送至下一个功能模块。
图2是根据本发明实施例的一种可选网络爬虫系统的结构示意图,在一种可选的实施例中,网络爬虫系统包括网页爬取模块、结果处理模块、链接抽取模块、页面处理模块、链接处理模块以及中央模块,中央模块的功能不限于保存多个功能模块的注册地址外,还能够用于对网络爬虫系统的监控、调度以及健康检查等,是技术人员了解网络爬虫系统运行状态的渠道。
可选的,根据本申请上述实施例,每个功能模块包括:
地址获取单元,用于根据执行顺序获取目标功能模块的注册地址,目标功能模块为接收当前功能模块任务执行结果的功能模块。
具体的,上述目标功能模块即为流转信息中的任务执行顺序所指示的当前功能模块对应的下一个模块,用于接收当前功能模块执行任务输出的结果。
此处需要说明的是,在流转信息包括每个功能模块的注册地址的情况下,地址获取单元可以从流转信息中获取目标功能模块的注册地址,在流转信息不包括每个功能模块的注册地址的情况下,地址获取单元在从流转信息中得到目标功能模块后,可以从中央模块中获取目标功能模块的注册地址。
接收单元,用于接收任务。
具体的,上述接收单元用于接收外部传入的任务,并根据传入的任务调用处理单元。
处理单元,用于执行任务。
具体的,上述处理单元用于执行接收单元接收的任务,并将处理结果传输给发送单元。
发送单元,用于将任务的执行结果发送给目标功能模块。
具体的,上述发送单元根据地址获取单元获取的目标功能模块的注册地址,将处理结果发送至目标功能模块。
可选的,功能模块还可以包括初始化单元,用于在发送单元向所有功能模块发送任务的执行结果失败时,初始化功能模块,以请求目标功能模块的新的注册地址。
在一种可选的实施例中,在发送模块向所有的发送地址发送都失败的情况下,功能模块会暂停当前对任务的接收并启动初始化单元,向中央模块发送所有失效的地址,并请求新的地址,中央模块接受到请求后会更新自身的地址列表并向每个功能模块返回最新列表。
可选的,根据本申请上述实施例,每个功能模块还包括:
第一资源调整单元,用于在任务的等待时间超过预设时间的情况下,增加处理单元的数量。
当任务的等待时间超过预设时间的情况下,任务功能模块中的处理单元的负载过大,在功能模块的负载过大的情况下,一种可选的方式是增加功能模块中的处理单元,新增的处理单元可以直接启动,并自动添加到功能模块中,以减轻每个处理单元的负载,以提高数据处理效率。
第二资源调整单元,用于在执行任务的资源消耗超过预设阈值的情况下,减少处理单元的数量。
在执行任务的资源消耗超过预设阈值的情况下,可以认为功能模块无需当前数量的处理单元即可处理当前的任务,因此可以减少功能模块中的处理单元,以减少资源的消耗。
由上可知,本申请上述系统通过第一资源调整单元和第二资源调整单元实现功能模块的网络爬虫系统的动态拓容。
实施例2
根据本发明实施例,提供了一种网络爬虫系统的数据处理的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图4是根据本发明实施例的基于网络爬虫系统的数据处理方法的流程图,上述网络爬虫系统包括实施例1中的任意一种网络爬虫系统,如图4所示,上述数据处理方法包括:
步骤S402,在多个功能模块中的任一功能模块在接收到任务后,根据任务对应的流转信息,确定执行任务的功能模块以及任务的执行顺序。
步骤S404,将任务发送给相应的功能模块,以使功能模块按照执行顺序执行任务。
具体的,上述多个功能模块可以为多个可拆分的模块,其中,每个功能模块之间没有依赖关系,而且每个模块都自己是无状态的处理单元,即在接收任务或执行任务之后不会返回相应的返回值,从而使得爬虫系统的调试与部署更加简单。上述流转信息用于表征多个功能模块执行任务时的执行顺序;相应的功能模块即为在流转信息中保存的当功能模块的下一个执行任务的功能模块。
在一种可选的实施例中,结合图3所示的示例,流转信息记录的功能模块执行任务的处理顺序为链接处理模块、网页爬取模块、页面处理模块、链接抽取模块多次循环执行任务,然后将最终的结果发送至结果处理模块。
此处需要说明是,在上述示例中,网页爬虫系统可以包括上述实施例中的全部功能模块,也可以仅包含上述实施例中的部分功能模块,但至少包括:爬取网页模块、抽取链接模块以及结果处理模块。以下说明两种可选的网络爬虫系统构架方式作为示例:
方式一,网络爬虫系统包括:连接预处理模块、网页爬取模块、页面处理模块、链接抽取模块以及结果处理模块。
在网络爬虫系统为上述方式一的构架方式的情况下,任务对应的流转信息可以包含全部的功能模块,也可以仅包含部分功能模块。
方式二,网络爬虫系统包括:爬取网页模块、抽取链接模块以及结果处理模块。
在网络爬虫系统为上述方式二的构架方式的情况下,任务的执行按照任务对应的流转信息进行处理。
其中,以上两种方式仅作为示例,不包含本发明保护的全部有的网络爬虫系统。
此处还需要说明的是,网络爬虫系统在获取到任务的同时,还可以获取到任务运行中所需的信息,比如:爬取层数、爬取采用的标头信息和爬取时采用的爬取策略等。
下面以一种可选的实施例来介绍网络爬虫系统根据流转信息处理任务的方式。
流转信息可以为存储有多个功能模块的标识的表格,在上述多个功能模块包括:网页爬取模块、结果处理模块、链接抽取模块、网页处理模块以及链接处理模块的示例中,如果上述多个功能模块所具有的标识信息分别为:01A、02B、03C、04D和05E,如果流转信息中包含的信息为:03C、05E、04D和02B,则网络爬虫系统处理上述流转信息对应的任务时的处理顺序应该为使:链接抽取模块、链接处理模块、网页处理模块以及结果处理模块。
此处需要说明的是,上述网络爬虫系统中的所有模块都是无状态的,所以理论上向任何一个模块注入任务都可以启动任务,即任意一个功能模块都能够作为初始功能模块,但是通常情况下,开始爬取信息都是由一个网页链接开始的,所以通常情况下的初始功能模块为链接预处理程序。在注入一个链接的同时,也可以添加上任务运行中所需要的信息,比如爬取层级,爬取采用的标头信息,爬取时采用的策略等。每个模块都可以启动多个实例,所以注入可以随机注入到任一任务处理模块中,也可以注入到多个处理模块中。任务的去处由模块组合内部来处理。
此处还需要说明的是,在上述多个功能模块中,每个功能模块都可以包括由多个处理单元,因此在向功能模块注入任务时,可以将任务注入至功能模块的一个处理单元,也可以将任务注入至功能模块内的多个单元,将任务注入多份,可以确保任务一定会被功能模块执行。
由上可知,本申请上述方案中的网络爬虫模块包括多个功能模块,网络爬虫系统在执行任务时,获取任务对应的流转信息,然后网络爬虫系统中的多个功能模块根据流转信息中包括的处理顺序执行任务。上述方案通过将网络爬虫系统划分为多个功能模块,使得多个功能模块之间没有必然的耦合关系,从而解决了现有技术中网络爬虫的多个组件部署在同一台机器,或部署于多个机器但各个组件之间关系紧密,导致不易于拓展和维护的技术问题的技术问题。
在一个实施例中,上述基于网络爬虫系统的数据处理方法,在数据处理过程中,可以包括以下步骤:
根据有效链接地址,从互联网上获取有效链接地址对应的网页内容;
将任务的执行结果存储于相应的存储区域,并结束本次任务;或者,在任务的执行结果出现错误或接收到预设指令后,生成新的待执行任务;和/或
从网页内容中抽取有效链接;和/或
对网页内容进行第一预设处理,其中,第一预设处理包括:网页筛选和/或链接筛选;和/或
对有效链接进行第二预设处理,其中,第二预设处理包括:变形、删除和/或添加。
可选的,根据本申请上述实施例,将任务发送给相应的功能模块,包括:
步骤S4041,获取相应的功能模块的注册地址。
步骤S4043,根据注册地址将任务发送给至相应的功能模块。
在上述步骤中,在流转信息包括每个功能模块的注册地址的情况下,可以从流转信息中获取目标功能模块的注册地址,在流转信息不包括每个功能模块的注册地址的情况下,在从流转信息中得到目标功能模块后,可以从中央模块中获取目标功能模块的注册地址。
可选的,根据本申请上述实施例,功能模块执行任务,包括:
步骤S4045,接收并执行任务。
步骤S4047,将任务的执行结果发送给目标功能模块,目标功能模块为接收当前功能模块任务执行结果的功能模块。
具体的,上述将任务的执行结果发送给目标功能模块为将执行结果发送至目标功能模块的注册地址。
可选的,功能模块还可以在发送单元向所有功能模块发送任务的执行结果失败时,进行初始化,以请求目标功能模块的新的注册地址。
在一种可选的实施例中,在向所有的发送地址发送都失败的情况下,功能模块会暂停当前对任务的接收并启动初始化单元,向中央模块发送所有失效的地址,并请求新的地址,中央模块接收到请求后会更新自身的地址列表并向每个功能模块返回最新列表。
在一种可选的实施例中,在功能模块处理完成之后调可以使用发送接口将处理结果发送出去。发送地址为从中央模块中获取到的地址。当向所有的发送地址发送都失败的时候,功能模块可以暂停当前对任务的接收,并向中央模块发送所有失效的地址,请求新的地址,中央模块接受到请求后会更新自身的地址列表并返回最新列表。
此处需要说明的是,在任务的流转信息中包括功能模块的注册地址的情况下,第以功能模块直接从流转信息中获取第二功能模块的注册地址,如果在这种情况下第一功能模块根据所述第二功能模块的注册地址将所述处理结果发送至所述第二功能模块失败,则可以更新任务的流转信息,并获取更新后的流转信息。
可选的,根据本申请上述实施例,上述方法还包括:
在任务的等待时间超过预设时间的情况下,增加处理单元的数量。
当任务的等待时间超过预设时间的情况下,任务功能模块中的处理单元的负载过大,在功能模块的负载过大的情况下,一种可选的方式是增加功能模块中的处理单元,新增的处理单元可以直接启动,并自动添加到功能模块中,以减轻每个处理单元的负载,提高爬取效率。
在执行任务的资源消耗超过预设阈值的情况下,减少处理单元的数量。
在执行任务的资源消耗超过预设阈值的情况下,可以认为功能模块无需当前数量的处理单元即可处理当前的任务,因此可以减少功能模块中的处理单元,以减少资源的消耗。
由上可知,本申请上述方法通过根据功能模块中处理单元的负载情况来灵活的增减处理单元的数量,从而实现功能模块的网络爬虫系统的动态拓容。
所述基于网络爬虫系统的多个功能模块中还包括处理器和存储器,处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来将网络爬虫划分为多个功能模块,从而解决现有技术中网络爬虫的多个组件部署在同一台机器,或部署于多个机器但各个组件之间关系紧密,导致不易于拓展和维护的技术问题的技术问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:在所述多个功能模块中的任一功能模块在接收到任务后,根据所述任务对应的流转信息,确定执行所述任务的功能模块以及所述任务的执行顺序;将所述任务发送给相应的功能模块,以使所述功能模块按照所述执行顺序执行所述任务。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种网络爬虫系统,其特征在于,包括:多个功能模块,其中,每个所述功能模块之间能够相互进行通信;
所述多个功能模块中的任一功能模块在接收到任务后,根据所述任务对应的流转信息,确定执行所述任务的功能模块以及所述任务的执行顺序,并将所述任务发送给相应的功能模块,以使所述功能模块按照所述执行顺序执行所述任务。
2.根据权利要求1所述的系统,其特征在于,所述多个功能模块至少包括:
网页爬取模块,用于根据有效链接地址,从互联网上获取所述有效链接地址对应的网页内容;
结果处理模块,用于将所述任务的执行结果存储于相应的存储区域,并结束本次任务;或者,在所述任务的执行结果出现错误或接收到预设指令后,生成新的待执行任务。
3.根据权利要求2所述的系统,其特征在于,所述多个功能模块还包括:
链接抽取模块,用于从所述网页内容中抽取有效链接;和/或
网页处理模块,用于对所述网页内容进行第一预设处理,其中,所述第一预设处理包括:网页筛选和/或链接筛选;和/或
链接处理模块,用于对所述有效链接进行第二预设处理,其中,所述第二预设处理包括:变形、删除和/或添加。
4.根据权利要求1至3任一项所述的系统,其特征在于,所述系统还包括:
中央模块,用于保存每个所述功能模块的注册地址,并且能够与每个所述功能模块进行通信。
5.根据权利要求4所述的系统,其特征在于,每个所述功能模块包括:
地址获取单元,用于根据所述执行顺序获取目标功能模块的注册地址,所述目标功能模块为接收当前功能模块任务执行结果的功能模块;
接收单元,用于接收所述任务;
处理单元,用于执行所述任务;
发送单元,用于将所述任务的执行结果发送给所述目标功能模块。
6.根据权利要求5所述的系统,其特征在于,每个所述功能模块还包括:
第一资源调整单元,用于在所述任务的等待时间超过预设时间的情况下,增加所述处理单元的数量;
第二资源调整单元,用于在执行所述任务的资源消耗超过预设阈值的情况下,减少所述处理单元的数量。
7.一种基于网络爬虫系统的数据处理方法,其特征在于,所述网络爬虫系统为权利要求1至6中任一项所述的网络爬虫系统,所述方法包括:
所述多个功能模块中的任一功能模块在接收到任务后,根据所述任务对应的流转信息,确定执行所述任务的功能模块以及所述任务的执行顺序;
将所述任务发送给相应的功能模块,以使所述功能模块按照所述执行顺序执行所述任务。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
根据有效链接地址,从互联网上获取所述有效链接地址对应的网页内容;
将所述任务的执行结果存储于相应的存储区域,并结束本次任务;或者,在所述任务的执行结果出现错误或接收到预设指令后,生成新的待执行任务;和/或
从所述网页内容中抽取有效链接;和/或
对所述网页内容进行第一预设处理,其中,所述第一预设处理包括:网页筛选和/或链接筛选;和/或
对所述有效链接进行第二预设处理,其中,所述第二预设处理包括:变形、删除和/或添加。
9.根据权利要求7或8所述的方法,其特征在于,所述将所述任务发送给相应的功能模块,包括:
获取所述相应的功能模块的注册地址;
根据所述注册地址将所述任务发送给所述相应的功能模块。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在所述任务的等待时间超过预设时间的情况下,增加处理单元的数量;
在执行所述任务的资源消耗超过预设阈值的情况下,减少所述处理单元的数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610798817.7A CN107784036A (zh) | 2016-08-31 | 2016-08-31 | 网络爬虫系统和基于网络爬虫系统的数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610798817.7A CN107784036A (zh) | 2016-08-31 | 2016-08-31 | 网络爬虫系统和基于网络爬虫系统的数据处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107784036A true CN107784036A (zh) | 2018-03-09 |
Family
ID=61451578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610798817.7A Pending CN107784036A (zh) | 2016-08-31 | 2016-08-31 | 网络爬虫系统和基于网络爬虫系统的数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107784036A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109951739A (zh) * | 2019-03-27 | 2019-06-28 | 北京市博汇科技股份有限公司 | 视频业务处理方法、装置及电子设备 |
CN110377680A (zh) * | 2019-07-11 | 2019-10-25 | 中国水利水电科学研究院 | 基于网络爬虫和语义识别的山洪灾害数据库构建及更新的方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1967488A (zh) * | 2005-11-15 | 2007-05-23 | 索尼计算机娱乐公司 | 任务分配方法和任务分配装置 |
US20080104113A1 (en) * | 2006-10-26 | 2008-05-01 | Microsoft Corporation | Uniform resource locator scoring for targeted web crawling |
US8255385B1 (en) * | 2011-03-22 | 2012-08-28 | Microsoft Corporation | Adaptive crawl rates based on publication frequency |
CN102999549A (zh) * | 2012-09-25 | 2013-03-27 | 金博 | 一种实现网络爬虫任务的方法 |
CN103761279A (zh) * | 2014-01-09 | 2014-04-30 | 北京京东尚科信息技术有限公司 | 一种基于关键词检索的网络爬虫调度方法及系统 |
CN103970788A (zh) * | 2013-02-01 | 2014-08-06 | 北京英富森信息技术有限公司 | 一种基于网页爬取的爬虫技术 |
CN104182462A (zh) * | 2014-07-21 | 2014-12-03 | 安徽华贞信息科技有限公司 | 一种用于房库网的网络爬虫服务系统 |
CN104536814A (zh) * | 2015-01-16 | 2015-04-22 | 北京京东尚科信息技术有限公司 | 一种处理工作流的方法和系统 |
CN105260405A (zh) * | 2015-09-22 | 2016-01-20 | 北京云知声信息技术有限公司 | 一种网络爬虫方法及装置 |
CN105677918A (zh) * | 2016-03-03 | 2016-06-15 | 浪潮软件股份有限公司 | 一种基于Kafka和Quartz的分布式爬虫架构及其实现方法 |
-
2016
- 2016-08-31 CN CN201610798817.7A patent/CN107784036A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1967488A (zh) * | 2005-11-15 | 2007-05-23 | 索尼计算机娱乐公司 | 任务分配方法和任务分配装置 |
US20080104113A1 (en) * | 2006-10-26 | 2008-05-01 | Microsoft Corporation | Uniform resource locator scoring for targeted web crawling |
US8255385B1 (en) * | 2011-03-22 | 2012-08-28 | Microsoft Corporation | Adaptive crawl rates based on publication frequency |
CN102999549A (zh) * | 2012-09-25 | 2013-03-27 | 金博 | 一种实现网络爬虫任务的方法 |
CN103970788A (zh) * | 2013-02-01 | 2014-08-06 | 北京英富森信息技术有限公司 | 一种基于网页爬取的爬虫技术 |
CN103761279A (zh) * | 2014-01-09 | 2014-04-30 | 北京京东尚科信息技术有限公司 | 一种基于关键词检索的网络爬虫调度方法及系统 |
CN104182462A (zh) * | 2014-07-21 | 2014-12-03 | 安徽华贞信息科技有限公司 | 一种用于房库网的网络爬虫服务系统 |
CN104536814A (zh) * | 2015-01-16 | 2015-04-22 | 北京京东尚科信息技术有限公司 | 一种处理工作流的方法和系统 |
CN105260405A (zh) * | 2015-09-22 | 2016-01-20 | 北京云知声信息技术有限公司 | 一种网络爬虫方法及装置 |
CN105677918A (zh) * | 2016-03-03 | 2016-06-15 | 浪潮软件股份有限公司 | 一种基于Kafka和Quartz的分布式爬虫架构及其实现方法 |
Non-Patent Citations (3)
Title |
---|
白鹤 等: ""分布式多主题网络爬虫系统的研究与实现"", 《计算机工程》 * |
韩璞: "《OpenStack技术原理与实战》", 1 April 2016 * |
黄宇鹏 等: ""一种分布式的舆情分析系统架构"", 《电信科学》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109951739A (zh) * | 2019-03-27 | 2019-06-28 | 北京市博汇科技股份有限公司 | 视频业务处理方法、装置及电子设备 |
CN109951739B (zh) * | 2019-03-27 | 2021-06-08 | 北京市博汇科技股份有限公司 | 视频业务处理方法、装置及电子设备 |
CN110377680A (zh) * | 2019-07-11 | 2019-10-25 | 中国水利水电科学研究院 | 基于网络爬虫和语义识别的山洪灾害数据库构建及更新的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103778254B (zh) | 页面访问数据的处理方法、装置及系统 | |
CN108090091A (zh) | 网页爬取方法和装置 | |
DE102018210537A1 (de) | Mikrodienste-Architektur | |
CN106648861A (zh) | 后台服务进程的保活方法及装置 | |
CN103970788A (zh) | 一种基于网页爬取的爬虫技术 | |
CN106888218A (zh) | 消息处理方法、装置、客户端及服务端 | |
CN107784036A (zh) | 网络爬虫系统和基于网络爬虫系统的数据处理方法 | |
CN107809383A (zh) | 一种基于mvc的路径映射方法及装置 | |
CN110020043B (zh) | 页面爬取方法、装置、存储介质及处理器 | |
CN106897217A (zh) | 测试方法和测试装置 | |
CN109684590A (zh) | 一种浏览器网页数据共享方法及装置 | |
CN107104924A (zh) | 网站后门文件的验证方法及装置 | |
CN102307219A (zh) | 一种文件存取系统及文件上传方法和文件下载方法 | |
CN106020891A (zh) | 页面加载的方法和装置 | |
CN107015801A (zh) | 一种网页展示方法及应用终端 | |
CN106649371A (zh) | 用于爬虫的数据处理方法及装置 | |
CN104486458B (zh) | 跨域会话的数据处理方法和装置 | |
CN106033448A (zh) | Html页面压缩方法及装置 | |
CN107045507A (zh) | 网页爬取方法及装置 | |
CN106649357A (zh) | 用于爬虫程序的数据处理方法及装置 | |
CN106648445A (zh) | 用于爬虫的数据存储方法及装置 | |
CN106790653A (zh) | 文件传输处理方法及装置 | |
CN101645021A (zh) | Java应用服务器下多系统的单点登录整合方法 | |
US10225358B2 (en) | Page push method, device, server and system | |
CN105099738B (zh) | 数据获取方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180309 |
|
RJ01 | Rejection of invention patent application after publication |