CN106570011A - 一种分布式爬虫url种子分发方法、调度节点及抓取节点 - Google Patents
一种分布式爬虫url种子分发方法、调度节点及抓取节点 Download PDFInfo
- Publication number
- CN106570011A CN106570011A CN201510648748.7A CN201510648748A CN106570011A CN 106570011 A CN106570011 A CN 106570011A CN 201510648748 A CN201510648748 A CN 201510648748A CN 106570011 A CN106570011 A CN 106570011A
- Authority
- CN
- China
- Prior art keywords
- node
- seed
- crawl
- url
- crawl node
- 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.)
- Granted
Links
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 Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种分布式爬虫URL种子分发方法、调度节点及抓取节点,该方法包括:获取URL种子并将所述种子放入等待队列;向调度节点发送请求种子命令;接收所述请求种子命令并计算抓取节点的状态信息;根据所述抓取节点的状态信息,判断是否向所述抓取节点发送所述种子。通过本发明提供的调度节点的URL种子分发方法,能够使网络中的抓取节点不会因为处理速度慢而导致种子积压,也不会因为抓取节点处理速度过快而闲置,从而有利于所有抓取节点均保持最佳工作状态,节约并优化了网络资源配置。
Description
技术领域
本发明涉及网络技术,具体来说涉及一种分布式爬虫URL种子分发方法、调度节点及抓取节点。
背景技术
网络爬虫是一种获取整个互联网上所有或特定主题数据的程序。由于网络资源浩如烟海,单机爬虫根本不可能完成这样的任务,解决这一问题的直接办法是升级信息采集器的硬件,采用处理能力更强的计算机系统,然而这种方法的扩展性有限,性价比也不高。因而人们找了一个更好的选择,用分布式方式来进行网页信息采集,由于多个网络爬虫共同运行,肯定会涉及到各个节点因为网络质量和个体性能差异的问题,而这会导致不同抓取节点之间的工作效率即处理种子的能力不同,因此需要一种更为合理的网络资源分配方式,使所有抓取节点以各自最佳的工作状态运行。
发明内容
本发明提供一种优化的调度节点的URL种子分发方法、调度节点及抓取节点,使某些抓取节点不会因为信息处理速度慢而导致种子积压,也不会因为某些抓取节点处理速度过快而闲置,有利于所有抓取节点均保持最佳工作状态,节约并优化网络资源配置。
本发明的技术方案是提供一种分布式爬虫URL种子分发方法,该方法包括:获取URL种子并将所述种子放入等待队列;向调度节点发送请求种子命令;接收所述请求种子命令并计算抓取节点的状态信息;根据该抓取节点的状态信息,判断是否向该抓取节点发送种子。
可选的,种子是从种子仓库中获取的。
可选的,计算抓取节点的状态信息包括:
若该抓取节点的物理地址为空,则不发送种子;
若该抓取节点的物理地址不为空,则读取该抓取节点的状态信息。
可选的,该读取抓取节点的状态信息还包括:
若没有该抓取节点的状态数据,则建立该调度节点与该抓取节点的连接,并向该抓取节点发送特定数量的种子;
若有该抓取节点的状态数据,则判断该抓取节点的健康状态。
可选的,判断该抓取节点的健康状态还包括:
若该抓取节点是健康状态,则对该抓取节点进行饥渴度计算。
可选的,计算该抓取节点的饥渴度为计算种子积压时间和种子处理速度。
可选的,若种子处理速率小于阈值或者种子积压时间超过阈值,则不向所述抓取节点分发种子;若种子处理速率大于等于阈值或者种子积压时间不超过阈值,则执行质量度计算。
可选的,根据所述抓取节点的状态信息,判断是否向该抓取节点发送种子还包括:
若0≤质量度≤阈值A,则向该抓取节点发送特定数量N的种子;
若阈值A<质量度≤阈值B,则向该抓取节点发送N/2数量的种子;
若阈值B<质量度≤1,则不分发种子,同时预警通知用户。
本发明还提供一种用于分布式爬虫URL种子分发的调度节点,该调度节点包括:种子仓库,用于存放待分发的URL种子;种子分发中心,用于向抓取节点分发所述URL种子;计算模块,用于判断所述抓取节点的健康状态;状态管理器,用于获取所述抓取节点的状态信息。
本发明再一种用于分布式爬虫URL种子分发的抓取节点,该抓取节点包括:请求线程,用于向调度节点发送获取URL种子请求;网页下载器,用于下载所述URL种子相应网页;文档解析器,用于解析所述网页的文档信息;报告线程,用于将所述网页下载器和所述文档解析器的工作状态发送至调度节点。
通过本发明提供的调度节点的URL种子分发方法、调度节点及抓取节点,能够使网络中的抓取节点不会因为处理速度慢而导致种子积压,也不会因为抓取节点处理速度过快而闲置,从而有利于所有抓取节点均保持最佳工作状态,节约并优化了网络资源配置。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明提供的分布式爬虫URL种子分发方法总体流程图;
图2为本发明提供的分布式爬虫URL种子分发方法、调度节点及抓取节点的构成图;
图3为本发明提供的分布式爬虫URL种子分发方法详细流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
本发明提供一种分布式爬虫URL种子分发方法,总体来说,调度节点在分配种子之前,首先会对每个抓取节点的反馈信息进行分析判断,以此决定是否给抓取节点发送种子。若调度节点决定对抓取节点发送种子,则需要更加具体的分配方式。通过上述分配方式可使抓取节点处于负载均衡的状态,即不会因抓取节点处理种子速度慢而导致种子积压,也不会因抓取节点处理种子速度快而导致等待时间过长。
图1为本发明提供的分布式爬虫URL种子分发方法总体流程图。如图1所示,分布式爬虫URL种子分发方法如下:
S101:获取URL种子并将所述种子放入等待队列;
S102:向调度节点发送请求种子命令;
S103:接收所述请求种子命令并计算抓取节点的状态信息;
S104:根据所述抓取节点的状态信息,判断是否向所述抓取节点发送所述种子。
下面结合一个具体的实施例对本发明进行具体描述,然而值得注意的是该具体实施例仅是为了更好地描述本发明,并不构成对本发明的不当限定。
本发明的技术方案由调度节点和多个抓取节点组成,由于调度节点和一个抓取节点的交互过程与多个抓取节点交互原理相同,所以在此仅详细描述调度节点和一个抓取节点的交互过程。
图2为本发明提供的分布式爬虫URL种子分发方法的构成图。
如图2所示,调度节点1包括:种子分发中心2、计算模块3、状态管理器4和种子仓库5;
抓取节点6包括:请求线程7、网页下载器8、文档解析器9、报告线程10和数据存储器11。
图3为本发明提供的分布式爬虫URL种子分发方法详细流程图。
请结合图2和图3,该分布式爬虫URL种子分发方法如下:
S301:调度节点1从种子仓库5获取种子,并将种子放入种子等待队列,等待种子分发中心2取种子。抓取节点6通过请求线程7向调度节点1的种子分发中心2发送获取种子请求,请求获取种子。种子分发中心2随即得到抓取节点6的MAC地址(物理地址)。
S302:若MAC地址为空,则拒绝向该抓取节点6发送种子;
S303:若MAC地址不为空,通过状态管理器4读取抓取节点6的状态信息。
S304:若状态管理器4中没有存储该抓取节点6的状态数据,也就是说,该抓取节点6是第一次发送连接请求,则调度节点1立即建立与抓取节点6之间的连接,并从种子等待队列中将一定数量的种子发送给抓取节点6。特别的是,这里一定数量是人为定义的一个值。对于抓取节点第一次和调度节点建立连接或者调度节点没有抓取节点的状态信息两种情况下,调度节点都会发送一定数量的种子。
若状态管理器4有抓取节点6的数据,则执行如下操作。
S305:根据抓取节点6的状态数据,计算模块3会判断该抓取节点6的健康状态。具体判断标准是在过去的某段时间内,检测该抓取节点6曾经是否向调度节点1发送过请求。若在过去某一时间段内抓取节点6发送过请求信息,则判定该抓取节点6为健康状态。若在过去某一时间段内抓取节点6没有发送过请求信息,则判定该抓取节点6为死亡状态。然而,对于抓取节点6处于死亡状态还需进一步判断:一种情况是该抓取节点6确实为死亡状态,此时后台技术人员将确认该抓取节点6为真死亡状态;另一种情况是由于某种原因该抓取节点6在报告状态数据时发生报告失败的情形,则判定该抓取节点6为假死亡状态。
对于第一种情形,种子分发中心2直接为抓取节点6分发一定数量的种子;
对于第二种情形,同时在最近一段时间(半个小时)内该抓取节点6的状态数据未更新,种子分发中心2则会删除该抓取节点6的状态数据,然后向该抓取节点6发送一定数量的种子,同时向用户预警,告知用户节点6和调度节点1之间的网络可能存在问题。
S306:若抓取节点6是健康的,则进行饥渴度计算。饥渴度可以从种子积压时间和种子处理速度来衡量。
具体来说,种子处理速率指的是抓取节点每秒钟处理种子的数量,用公式表示为(上次请求剩余种子数-本次请求剩余种子数)/(上次请求时间-本次请求时间)。
种子积压时间指的是抓取节点处理完剩余种子所需要的时间,用公式表示为(本次请求剩余种子数/种子处理速率)。
如果种子处理速率小于阈值或者种子积压时间超过阈值时,那么种子分发中心2就不向抓取节点6分发种子。
S307:如果种子处理速率大于等于阈值或者种子积压时间不超过阈值时,则进行如下质量度计算。
质量度表示抓取节点6请求网页和解析网页的成功率。比如通过网页下载器8种子请求网页是否正常;文档解析器9解析文档的时候有没有出错等。这些信息都需要抓取节点6的报告线程10报告给调度端的状态管理器4。数据存储器11用来暂存文档解析器9解析的数据和URL地址信息,并通过发送线程分批发送到调度节点1的种子仓库5中,以供抓取节点6请求种子使用。
质量度的计算用公式表示为(上次请求和本次请求时间段内执行错误的种子数)/(上次请求剩余种子数-本次请求剩余种子数)。
若0≤质量度≤阈值A,则向抓取节点6发送特定数量N的种子;
若阈值A<质量度≤阈值B,则向抓取节点6发送N/2数量的种子;
若阈值B<质量度≤1,则不分发种子,同时预警通知用户。
在本发明一具体实施例中:阈值A可以定义为0.3;阈值B可以定义为0.7。也就是说,当0≤质量度≤0.3时,向抓取节点发送数量N的种子;当0.3<质量度≤0.7时,则向抓取节点发送数量N/2的种子;当0.7<质量度≤1,则不发送种子。
S308:抓取节点获取对应数量的种子后,开始执行种子并向种子分发中心报告自己的工作状态。
本发明的技术方案仅详细描述了调度节点和一个抓取节点的交互过程,由于调度节点和一个抓取节点的交互过程与多个抓取节点交互原理相同,故在此不再赘述。
本发明还提供一种用于分布式爬虫URL种子分发的调度节点,该调度节点包括:种子仓库,用于存放待分发的URL种子;种子分发中心,用于向抓取节点分发URL种子;计算模块,用于判断抓取节点的健康状态;状态管理器,用于获取抓取节点的状态信息。
本发明再一种用于分布式爬虫URL种子分发的抓取节点,该抓取节点包括:请求线程,用于向调度节点发送获取URL种子请求;网页下载器,用于下载URL种子相应网页;文档解析器,用于解析网页的文档信息;报告线程,用于将网页下载器和文档解析器的工作状态发送至调度节点。
通过本发明提供的优化的调度节点的URL种子分发方法、调度节点及抓取节点,能够对多个抓取节点反馈的状态信息进行分析判断,以具体解决是否给其中每一个抓取节点分配种子和分配多少种子的问题。通过这种分配策略以使抓取节点处于负载均衡的状态,不会因为抓取节点处理种子速度慢而导致种子积压,也不会因为抓取节点处理种子速度过快而闲置,合理优化了网络资源配置。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种分布式爬虫URL种子分发方法,其特征在于,所述方法包括:
获取URL种子并将所述种子放入等待队列;
向调度节点发送请求种子命令;
接收所述请求种子命令并计算抓取节点的状态信息;
根据所述抓取节点的状态信息,判断是否向所述抓取节点发送所述种子。
2.根据权利要求1所述的分布式爬虫URL种子分发方法,其特征在于,所述种子是从种子仓库中获取的。
3.根据权利要求1所述的分布式爬虫URL种子分发方法,其特征在于,计算抓取节点的状态信息包括:
若所述抓取节点的物理地址为空,则不发送所述种子;
若所述抓取节点的物理地址不为空,则读取所述抓取节点的状态信息。
4.根据权利要求3所述的分布式爬虫URL种子分发方法,其特征在于,读取所述抓取节点的状态信息还包括:
若没有所述抓取节点的状态数据,则建立所述调度节点与所述抓取节点的连接,并向所述抓取节点发送特定数量的所述种子;
若有所述抓取节点的状态数据,则判断所述抓取节点的健康状态。
5.根据权利要求4所述的分布式爬虫URL种子分发方法,其特征在于,判断所述抓取节点的健康状态还包括:
若所述抓取节点是健康状态,则对所述抓取节点进行饥渴度计算。
6.根据权利要求5所述的分布式爬虫URL种子分发方法,其特征在于,计算所述抓取节点的饥渴度为计算种子积压时间和种子处理速度。
7.根据权利要求6所述的分布式爬虫URL种子分发方法,其特征在于,
若种子处理速率小于阈值或者种子积压时间超过阈值,则不向所述抓取节点发送种子;
若种子处理速率大于等于阈值或者种子积压时间不超过阈值,则执行质量度计算。
8.根据权利要求1所述的分布式爬虫URL种子分发方法,其特征在于,根据所述抓取节点的状态信息,判断是否向所述抓取节点发送所述种子还包括:
若0≤质量度≤阈值A,则向所述抓取节点发送特定数量N的种子;
若阈值A<质量度≤阈值B,则向所述抓取节点发送N/2数量的种子;
若阈值B<质量度≤1,则不分发种子,同时预警通知用户。
9.一种用于分布式爬虫URL种子分发的调度节点,其特征在于,该调度节点包括:
种子仓库,用于存放待分发的URL种子;
种子分发中心,用于向抓取节点分发所述URL种子;
计算模块,用于判断所述抓取节点的健康状态;
状态管理器,用于获取所述抓取节点的状态信息。
10.一种用于分布式爬虫URL种子分发的抓取节点,其特征在于,该抓取节点包括:
请求线程,用于向调度节点发送获取URL种子请求;
网页下载器,用于下载所述URL种子相应网页;
文档解析器,用于解析所述网页的文档信息;
报告线程,用于将所述网页下载器和所述文档解析器的工作状态发送至调度节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510648748.7A CN106570011B (zh) | 2015-10-09 | 2015-10-09 | 一种分布式爬虫url种子分发方法、调度节点及抓取节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510648748.7A CN106570011B (zh) | 2015-10-09 | 2015-10-09 | 一种分布式爬虫url种子分发方法、调度节点及抓取节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106570011A true CN106570011A (zh) | 2017-04-19 |
CN106570011B CN106570011B (zh) | 2021-01-26 |
Family
ID=58506451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510648748.7A Active CN106570011B (zh) | 2015-10-09 | 2015-10-09 | 一种分布式爬虫url种子分发方法、调度节点及抓取节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106570011B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657053A (zh) * | 2017-10-17 | 2018-02-02 | 山东浪潮云服务信息科技有限公司 | 一种爬虫实现方法及装置 |
CN110209911A (zh) * | 2019-06-03 | 2019-09-06 | 桂林电子科技大学 | 一种基于请求成功率的自适应休眠时间调节方法 |
CN110442766A (zh) * | 2019-07-11 | 2019-11-12 | 新华三大数据技术有限公司 | 网页数据采集方法、装置、设备及存储介质 |
CN111104575A (zh) * | 2018-10-29 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 数据抓取方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103310012A (zh) * | 2013-07-02 | 2013-09-18 | 北京航空航天大学 | 一种分布式网络爬虫系统 |
CN103559219A (zh) * | 2013-10-18 | 2014-02-05 | 北京京东尚科信息技术有限公司 | 分布式网络爬虫抓取任务调度方法、调度端设备及抓取节点 |
CN103559083A (zh) * | 2013-10-11 | 2014-02-05 | 北京奇虎科技有限公司 | 网页爬取任务调度方法与任务调度器 |
CN104615486A (zh) * | 2014-12-26 | 2015-05-13 | 北京京东尚科信息技术有限公司 | 用于搜索推广平台的多任务调度和执行方法、装置和系统 |
-
2015
- 2015-10-09 CN CN201510648748.7A patent/CN106570011B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103310012A (zh) * | 2013-07-02 | 2013-09-18 | 北京航空航天大学 | 一种分布式网络爬虫系统 |
CN103559083A (zh) * | 2013-10-11 | 2014-02-05 | 北京奇虎科技有限公司 | 网页爬取任务调度方法与任务调度器 |
CN103559219A (zh) * | 2013-10-18 | 2014-02-05 | 北京京东尚科信息技术有限公司 | 分布式网络爬虫抓取任务调度方法、调度端设备及抓取节点 |
CN104615486A (zh) * | 2014-12-26 | 2015-05-13 | 北京京东尚科信息技术有限公司 | 用于搜索推广平台的多任务调度和执行方法、装置和系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657053A (zh) * | 2017-10-17 | 2018-02-02 | 山东浪潮云服务信息科技有限公司 | 一种爬虫实现方法及装置 |
CN111104575A (zh) * | 2018-10-29 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 数据抓取方法、装置及电子设备 |
CN111104575B (zh) * | 2018-10-29 | 2023-05-05 | 阿里巴巴集团控股有限公司 | 数据抓取方法、装置及电子设备 |
CN110209911A (zh) * | 2019-06-03 | 2019-09-06 | 桂林电子科技大学 | 一种基于请求成功率的自适应休眠时间调节方法 |
CN110209911B (zh) * | 2019-06-03 | 2023-03-28 | 桂林电子科技大学 | 一种基于请求成功率的自适应休眠时间调节方法 |
CN110442766A (zh) * | 2019-07-11 | 2019-11-12 | 新华三大数据技术有限公司 | 网页数据采集方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106570011B (zh) | 2021-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105337755B (zh) | 主从架构服务器及其处理业务的方法和处理业务的系统 | |
CN104125240B (zh) | 一种信息外网、信息内网及内外网数据交互系统和方法 | |
CN109672627A (zh) | 基于集群服务器的业务处理方法、平台、设备及存储介质 | |
CN105956138B (zh) | 数据库连接的控制方法和装置 | |
CN104092719B (zh) | 文件传输方法、装置及分布式集群文件系统 | |
CN104969213A (zh) | 用于低延迟数据存取的数据流分割 | |
CN106570011A (zh) | 一种分布式爬虫url种子分发方法、调度节点及抓取节点 | |
CN103095743A (zh) | 一种灰度发布的处理方法及系统 | |
CN108540568B (zh) | 计算能力共享方法及智能设备 | |
CN107040608A (zh) | 一种数据处理方法及系统 | |
CN102902669A (zh) | 基于互联网系统的分布式信息抓取方法 | |
CN106446168A (zh) | 一种面向分布式数据仓库的高效加载客户端实现方法 | |
CN104598778B (zh) | 权限调度方法及装置 | |
CN109639591A (zh) | 配电数据反向传输方法及系统和计算机可读存储介质 | |
CN107291544A (zh) | 任务调度的方法及装置、分布式任务执行系统 | |
CN111555984B (zh) | 用于数据传输的方法及装置、智能家居设备、存储介质 | |
CN107589990A (zh) | 一种基于线程池的数据通讯的方法及系统 | |
CN114401207A (zh) | 一种通讯异常终端设备定位方法、装置及电子设备 | |
CN103049326A (zh) | 在作业管理与调度系统中管理作业程序的方法和系统 | |
CN113347238A (zh) | 基于区块链的消息分区方法及系统、设备、存储介质 | |
CN105264499B (zh) | 一种共享队列中的消息处理方法、装置及接收核 | |
CN101018122A (zh) | 模式匹配处理方法及系统 | |
CN104468379B (zh) | 基于最短逻辑距离的虚拟Hadoop集群节点选择方法及装置 | |
CN105516276A (zh) | 基于仿生分级通信的消息处理方法与系统 | |
CN108319505A (zh) | 基于iocp机制结合池分片的网络数据通信系统和方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |