CN102663058A - 一种分布式网络爬虫系统中的url去重方法 - Google Patents

一种分布式网络爬虫系统中的url去重方法 Download PDF

Info

Publication number
CN102663058A
CN102663058A CN2012100902590A CN201210090259A CN102663058A CN 102663058 A CN102663058 A CN 102663058A CN 2012100902590 A CN2012100902590 A CN 2012100902590A CN 201210090259 A CN201210090259 A CN 201210090259A CN 102663058 A CN102663058 A CN 102663058A
Authority
CN
China
Prior art keywords
creeping
node
url
actual
virtual
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
Application number
CN2012100902590A
Other languages
English (en)
Other versions
CN102663058B (zh
Inventor
邹复好
凌贺飞
李平
刘学
邱荷花
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN 201210090259 priority Critical patent/CN102663058B/zh
Publication of CN102663058A publication Critical patent/CN102663058A/zh
Application granted granted Critical
Publication of CN102663058B publication Critical patent/CN102663058B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明提供了一种分布式网络爬虫系统中的URL去重方法,通过引入虚拟爬行结点,实现了高效的任务划分策略,从而更好地适应分布式网络爬虫系统中实际爬行结点的动态变化,在任务划分策略基础上使用一种分布式的URL去重方式,从而避免实际爬行结点变化过程中造成的重复爬行。本发明在任务划分时变动规模小,能保证爬虫系统稳定持久运行,划分策略具有动态适应性,能实现实际爬行结点的负载均衡。采用多个布隆过滤器去重结构,减小了去重对内存大小的需求,可实现基于内存的快速去重,在需要时能高效转移和备份,防止由于去重信息缺失而造成爬虫系统重复爬行。本发明效率高,可操作性好,具有极高的应用价值。

Description

一种分布式网络爬虫系统中的URL去重方法
技术领域
本发明属于网络应用技术领域,具体涉及一种分布式网络爬虫系统中的URL去重方法。 
背景技术
随着互联网信息爆炸式增长,用户感兴趣的信息淹没于大量无关信息中,利用搜索引擎获取感兴趣的信息已经成为人们获取信息较为便捷的方式。作为搜索引擎的基础构件之一的网络爬虫,需要直接面向互联网,不间断地从互联网上搜集信息,为搜索引擎提供数据来源。搜索结果是否丰富、获得的信息是否包括新近更新的内容,均与网络爬虫的效率紧密相关。然而互联网规模十分庞大,根据第27次中国互联网报告,2010年中国网站数目已经达到191万,网页数量超过600亿。如此海量的数据对网络爬虫的设计与实现提出了更高的要求,构建分布式网络爬虫系统是一个有效的解决方案。相应地,作为网络爬虫核心关键技术的URL去重方法对爬虫系统的性能影响尤为重要。 
网络爬虫是一个机器人程序,它从指定URL地址开始下载页面文档,提取其中的URL地址,再从提取的URL地址开始继续爬行。由于新提取到的URL地址可能已在前面处理过,继续下载这些URL地址只会造成重复下载,浪费计算资源,因此对提取到的每个URL地址必须判断是否已经 处理过,去除已下载的重复URL地址。在分布式网络爬虫系统中,需要采用某种策略将URL任务平均分配到多个主机并行爬行,划分策略必须高效且易于实现。而在分布式环境下,某个主机提取到的URL地址可能已被系统其它主机处理过,因此系统要有一种分布式的URL去重机制。 
目前已有的URL去重方法主要有基于内存的去重和基于数据库的去重。在基于内存的URL去重方式中,爬虫将系统URL全部放在内存中,并使用一个易于查找的数据结构(如哈希表)进行维护,每当遇到新的URL时,立即查找内存URL集中是否存在该URL地址。由于内存有限,而URL数量庞大,内存不可能容纳所有的URL,因此一个改进的去重方法是将一部分URL放在内存中,而将大部分URL存放在外存中,通过某种调度算法(如最近最少使用LRU)实现类似缓存的效果,以应对内存不足问题。基于数据库的去重则是在数据库中维护URL表结构,将解析到的URL插入数据库表中,依靠数据库的唯一性约束条件对URL进行是否重复的判断。 
直接使用内存的去重方式在小规模爬虫中使用较多,由于内存空间有限,因而该方法很难扩展到大规模的URL去重任务。大规模爬虫通常采用内存与外存结合的去重方式,但通常URL查找的内存命中率存在波动(当爬行进入一个新的域名网站时,命中率迅速下降),调度算法的实现同样加大了系统的复杂性,而且在分布式环境下,某个实际爬行结点可能因故障等原因退出爬行,新的主机也可随时加入系统爬行,这时系统必须重新进行任务划分,因此用于URL去重的数据结构也需进行转移,以保证某个主机爬行过的URL任务不会被其它主机重复爬行,这种内存外存调度的数据结构不适合转移,或者是转移开销过大。而在基于数据库的判重方式下, 所有URL任务被发往数据库,导致数据压力过大,当数据存放的URL任务过多时,数据库的性能急剧下降,并且去重依赖于数据库,这对数据库的稳定性提出极为严格的要求,数据库异常将直接导致爬虫系统的崩溃。综上所述,无论是基于内存的URL去重还是基于数据库的URL去重都很难适应于大规模的分布式网络爬行环境,无法有效解决分布式网络爬行系统中实际爬行结点动态加入与退出所造成的重复爬行问题。 
发明内容
本发明的目的在于提供一种分布式网络爬虫系统中的URL去重方法,其可有效解决实际爬行结点动态加入与退出所造成的重复爬行问题,通过引入虚拟爬行结点及布隆过滤器(英文为Bloom Filter)去重结构,实现了分布式URL去重方法,使得分布式网络爬行系统能稳定持久运行,去重数据结构可全部存放内存中,去重效率高,且当系统重新进行任务划分后,相应的URL去重数据结构能高效转移,保证系统不会重复爬行。 
本发明是通过以下技术方案实现的: 
一种分布式网络爬虫系统中的URL去重方法,在初始阶段先设定系统的虚拟爬行结点数N及初始URL任务集,每一个虚拟爬行结点对应一个布隆过滤器去重结构,布隆过滤器去重结构在内存中申请有一个位数组,位数组大小为n,将虚拟爬行结点平均分配给实际爬行结点,建立虚拟爬行结点与实际爬行结点的映射关系,采用基于模的哈希运算方式将初始URL任务集映射到各个虚拟爬行结点,并根据虚拟爬行结点与实际爬行结点的映射关系将初始URL任务集映射到对应的实际爬行结点。 
本发明的方法还包括以下步骤: 
(1)当前爬行结点根据初始URL任务集进入网络爬行状态,并获取待处理URL任务集; 
(2)判断待处理URL任务集是否为空,若为空则过程结束,否则进入步骤(3); 
(3)从待处理URL任务集中获取URL任务; 
(4)对获取的URL任务进行哈希运算得到其对应的虚拟爬行结点号; 
(5)根据该虚拟爬行结点号,查找虚拟爬行结点与实际爬行结点的映射关系表,从而得到对应的实际爬行结点; 
(6)判断获取的URL任务是否属于当前爬行结点,如果是则进入步骤(9),否则转入步骤(7); 
(7)将获取的URL任务转发给实际爬行结点; 
(8)对于待处理URL任务集中的所有URL任务,重复上述步骤(2)至(7),直到所有URL任务均处理完毕为止; 
(9)对该URL任务进行哈希运算,以找到该URL任务所属的虚拟爬行结点,并找到对应的布隆过滤器去重结构; 
(10)对URL任务用K个哈希函数计算,以得到K个哈希值H[0],H[1],H[2],...,H[K-1]; 
(11)根据K个哈希值查找布隆过滤器去重结构的位数组中对应的第H[0],H[1],H[2],...,H[K-1]位,以判断第H[0],H[1],H[2],...,H[K-1]位是否均为1,若均为1,则进入步骤(12),否则进入步骤(13); 
(12)丢弃该URL任务,然后转入步骤(14); 
(13)表明该URL任务不是处于当前爬行结点的URL任务集合中, 将该URL任务加入当前爬行结点的待处理队列中; 
(14)将布隆过滤器去重结构的位数组中对应的第H[0],H[1],H[2],...,H[K-1]位全部置1; 
(15)判断是否有实际爬行结点退出,若有则转入步骤(16),否则转入步骤(25); 
(16)设定退出的实际爬行结点所映射的虚拟爬行结点集合为S,S中虚拟爬行结点个数记为vz; 
(17)将剩余的实际爬行结点按照其所映射的虚拟爬行结点数从小到大排序,剩余的实际爬行结点个数记为rz; 
(18)初始化计数器i和计数器j均为0,其中i指向排序后的实际爬行结点集合中第i+1个实际爬行结点,j指向虚拟爬行结点集合S中第j+1个虚拟爬行结点; 
(19)判断j是否等于vz,若是则转入步骤(25),否则转入步骤(20); 
(20)从虚拟爬行结点集合S中取出第j+1个虚拟爬行结点,并将其加入到第i+1个实际爬行结点所映射的虚拟爬行结点集合中; 
(21)设置i=i+1,j=j+1; 
(22)判断i是否等于rz,若是则转入步骤(23),否则转入步骤(24); 
(23)将i值置0; 
(24)重复上述步骤(19)至(23),直到j值等于vz为止; 
(25)判断是否有新的实际爬行结点加入,若有则转入步骤(26),否则返回步骤(2); 
(26)设定average=N/M,M为加入新实际爬行结点后实际爬行结点 的总数,设定新实际爬行结点所映射的虚拟爬行结点集合为Q,其初始为空; 
(27)将原有实际爬行结点按照映射的虚拟爬行结点数从大到小排序; 
(28)初始化计数器s和t均为0,其中s指向排序后的实际爬行结点集合中第s+1个实际爬行结点,t为虚拟爬行结点集合Q中虚拟爬行结点个数; 
(29)判断t是否等于average,若是则返回步骤(2),否则转入步骤(30); 
(30)从第s+1个实际爬行结点所映射的虚拟爬行结点集合中取出一个虚拟爬行结点加入到Q中,并设置t=t+1,s=s+1; 
(31)判断s值是否等于M-1,若是则转入步骤(32),否则转入步骤(33); 
(32)将s值置0; 
(33)重复执行上述步骤(29)至(32),直到t等于average为止。 
与现有技术相比,本发明具有以下的优点和技术效果: 
1、能有效地处理分布式爬行系统中实际爬行结点的动态加入与退出所造成的重复爬行问题; 
2、在参与实际爬行结点数目的变化这一过程中,能很快重新进行任务划分,提高了系统调度的效率,极大地减少了系统调度的性能损失; 
3、URL去重数据结构可存放在内存中,进行快速去重,在需要时可方便地进行转移和备份,防止由于去重信息不全或缺失造成爬虫系统重复爬行; 
4、本发明满足了分布式网络爬行系统中的任务调度与URL去重的要求,具有极高的应用价值。 
附图说明
图1是本发明分布式网络爬虫系统中的URL去重方法的流程图。 
图2是本发明分布式网络爬虫系统中的URL去重方法的示意图。 
图3是本发明实际爬行结点退出时的示意图。 
图4是本发明实际爬行结点加入时的示意图。 
具体实施方式
以下首先对本发明的技术术语进行解释和说明: 
布隆过滤器去重结构:于1970年被提出,是一种用于判断集合中元素是否存在的基于哈希的查找结构。 
下面结合附图和具体实施方式对本发明技术方案做进一步详细说明。 
本发明的主要步骤为URL任务划分和对URL的去重,即将URL任务平均分配到每一个实际爬行结点,并对实际爬行结点所维护的URL任务集进行处理,去除重复的URL,同时采用高效的调度算法处理实际爬行结点的动态加入与退出。 
如图1所示。本发明分布式网络爬虫系统中的URL去重方法包括以下步骤: 
(1)设定系统的虚拟爬行结点数N及初始URL任务集,每一个虚拟爬行结点对应一个布隆过滤器去重结构,布隆过滤器去重结构在内存中申请有一个位数组,位数组大小为n;实际爬行结点数是指实际运行爬行程序的主机的数目,而虚拟爬行结点数为假设的爬行结点数目,这一数目可灵 活配置,但应大于实际爬行结点数,位数组大小n根据虚拟爬行结点和实际爬行结点数灵活设置,初始将位数组的所有位均置为0。 
(2)将虚拟爬行结点平均分配给实际爬行结点,建立虚拟爬行结点与实际爬行结点的映射关系;通常多个虚拟爬行结点对应一个实际爬行结点,每个实际爬行结点都保存一份虚拟爬行结点与实际爬行结点映射关系的表结构; 
(3)采用基于模的哈希运算方式将初始URL任务集映射到各个虚拟爬行结点,并根据虚拟爬行结点与实际爬行结点的映射关系将初始URL任务集映射到对应的实际爬行结点;映射模型为:hash(key)%N,key值取URL的主机部分(域名),以便尽量将同一个主机的URL任务分配到同一个实际爬行结点上; 
(4)当前爬行结点根据初始URL任务集进入网络爬行状态,并获取待处理URL任务集; 
(5)判断待处理URL任务集是否为空,若为空则过程结束,否则进入步骤(6); 
(6)从待处理URL任务集中获取URL任务; 
(7)对获取的URL任务进行哈希运算得到其对应的虚拟爬行结点号; 
(8)根据该虚拟爬行结点号,查找虚拟爬行结点与实际爬行结点的映射关系表,从而得到对应的实际爬行结点; 
(9)判断获取的URL任务是否属于当前爬行结点,如果是则进入步骤(12),否则转入步骤(10); 
(10)将获取的URL任务转发给实际爬行结点; 
(11)对于待处理URL任务集中的所有URL任务,重复上述步骤(5)至(10),直到所有URL任务均处理完毕为止; 
(12)对该URL任务进行哈希运算,以找到该URL任务所属的虚拟爬行结点,并找到对应的布隆过滤器去重结构; 
本发明利用多个布隆过滤器去重结构实现分布式URL去重,每个虚拟爬行结点分配一个布隆过滤器去重结构。虚拟爬行结点数越多,单个虚拟爬行结点被分配映射到的URL任务越少,则布隆过滤器去重结构需要的内存也随之减少。参与爬行的主机越多,单个实际爬行结点映射的虚拟爬行结点数目也越少,需要的内存也越少。 
具体而言,如图2所示,N个虚拟爬行结点对应有N个布隆过滤器去重结构,分别为Bloom Filter[0],Bloom Filter[1],.....Bloom Filter[N-1],对URL任务哈希运算找到所属的虚拟爬行结点T,进而找到该虚拟爬行结点对应的Bloom Filter[T]。 
(13)对URL任务用K个哈希函数计算,以得到K个哈希值H[0],H[1],H[2],...,H[K-1]; 
(14)根据这K个哈希值查找布隆过滤器去重结构的位数组中对应的第H[0],H[1],H[2],...,H[K-1]位,以判断第H[0],H[1],H[2],...,H[K-1]位是否均为1,若均为1,则进入步骤(15),否则进入步骤(16); 
具体而言,如图2所示,位数组表示形式为bit[0],bit[1],....bit[n-1],在Bloom Filter[T]中查找bit[H[0]],bit[H[1]],....bit[H[K-1]]的值是否均为1,若均为1,表示该URL任务处于当前爬行结点的URL任务集合中,否则表明该URL任务不是处于当前爬行结点的URL任务集合中。 
(15)表明该URL任务处于当前爬行结点的URL任务集合中,丢弃该URL任务,然后转入步骤(17); 
(16)表明该URL任务不是处于当前爬行结点的URL任务集合中,将该URL任务加入当前爬行结点的待处理队列中; 
(17)将布隆过滤器去重结构的位数组中对应的第H[0],H[1],H[2],...,H[K-1]位全部置1; 
具体而言,如图2所示,将Bloom Filter[T]位数组中的bit[H[0]],bit[H[1]],...bit[H[K-1]]全部置1。 
(18)判断是否有实际爬行结点退出,若有则转入步骤(19),否则转入步骤(28); 
(19)设定退出的实际爬行结点所映射的虚拟爬行结点集合为S,S中虚拟爬行结点个数记为vz; 
具体而言,如图3所示,实际爬行结点(4号)退出爬行时,S即为4号实际爬行结点所映射的虚拟爬行结点集合,该集合有虚拟结点号{19,20,21,22,23,24},vz值为6。 
(20)将剩余的实际爬行结点按照其所映射的虚拟爬行结点数从小到大排序,剩余的实际爬行结点个数记为rz; 
如图3所示,将实际爬行结点1,2,3按照映射的虚拟爬行结点数从小到大排序,此处三个实际爬行结点所映射的虚拟爬行结点个数相等,rz值即为3。 
(21)初始化计数器i和计数器j均为0,其中i指向排序后的实际爬行结点集合中第i+1个实际爬行结点,j指向虚拟爬行结点集合S中第j+1 个虚拟爬行结点; 
(22)判断j是否等于vz,若是则转入步骤(28),否则转入步骤(23); 
(23)从虚拟爬行结点集合S中取出第j+1个虚拟爬行结点,并将其加入到第i+1个实际爬行结点所映射的虚拟爬行结点集合中; 
(24)设置i=i+1,j=j+1; 
(25)判断i是否等于rz,若是则转入步骤(26),否则转入步骤(27); 
(26)将i值置0; 
(27)重复上述步骤(22)至(26),直到j值等于vz为止; 
具体而言,如图3所示,若4号实际爬行结点所映射的虚拟爬行结点集合S未全部遍历完,则依次遍历集合S和实际爬行结点集合,并将当前遍历的虚拟爬行结点加入到当前遍历的实际爬行结点所映射的虚拟爬行结点集合中,若此时实际爬行结点1,2,3已经依次遍历过,则继续重新依次遍历1,2,3号实际爬行结点,并执行放入操作,直到4号实际爬行结点所映射的虚拟爬行结点集合S已经全部遍历完。 
(28)判断是否有新的实际爬行结点加入,若有则转入步骤(29),否则返回步骤(5); 
(29)设定average=N/M,M为加入新实际爬行结点后实际爬行结点的总数,设定新实际爬行结点所映射的虚拟爬行结点集合为Q,其初始为空; 
具体而言,如图4所示,新的实际爬行结点(4号)加入爬行,M即为此时的实际爬行结点个数4,Q为4号实际爬行结点所映射的虚拟爬行结点集合。 
(30)将原有实际爬行结点按照映射的虚拟爬行结点数从大到小排序; 
如图3所示,将实际爬行结点1,2,3按照映射的虚拟爬行结点数从大到小排序,此处三个实际爬行结点所映射的虚拟爬行结点个数相等。 
(31)初始化计数器s和t均为0,其中s指向排序后的实际爬行结点集合中第s+1个实际爬行结点,t为虚拟爬行结点集合Q中虚拟爬行结点个数; 
(32)判断t是否等于average,若是则返回步骤(5),否则转入步骤(33); 
(33)从第s+1个实际爬行结点所映射的虚拟爬行结点集合中取出一个虚拟爬行结点加入到Q中,并设置t=t+1,s=s+1; 
(34)判断s值是否等于M-1,若是则转入步骤(35),否则转入步骤(36); 
(35)将s值置0; 
(36)重复执行上述步骤(32)至(35),直到t等于average为止。 
具体而言,如图4所示,当4号实际爬行结点所映射的虚拟爬行结点集合Q中虚拟结点个数不为average时,依次遍历1,2,3这三个实际爬行结点,并从当前遍历的实际爬行结点中取出一个虚拟爬行结点加入到4号实际爬行结点所映射的虚拟爬行结点集合Q中,直到Q中虚拟结点个数为average。 
理想的划分调度算法是任务平均分配,且在新实际爬行结点加入时,原来被映射到旧实际爬行结点的URL,只会被映射到新实际爬行结点,而不会映射到其它旧实际爬行结点。在上述划分算法中,新实际爬行结点加 入时,系统只从其他实际爬行结点的任务集合中抽出一个子集分配给新实际爬行结点,原先旧实际爬行结点的任务不会映射到其它旧实际爬行结点。在某个实际爬行结点退出时,其任务集也被平均地分配给其它实际爬行结点。划分过程中哈希函数不发生变化,不会导致URL的哈希值发生变化,因此系统URL任务划分是稳定明确的,不会导致任务混乱和大规模数据转移的开销。 
采用多个布隆过滤器进行去重,可以减少单个布隆过滤器占用的内存大小,以便将其全部放入内存中,获得更快的去重速度。另一方面,在网络爬虫的实际爬行结点数出现变化(加入、退出)时,需要将对应变化实际爬行结点的去重数据结构进行转移,以保证系统整体不会重复爬行。以实例论述,假设crawler_a对应1号和2号虚拟爬行结点,拥有两个URL去重结构bf_1和bf_2,crawler_b对应3号和4号虚拟爬行结点,拥有两个URL去重结构bf_3和bf_4,新实际爬行结点crawler_c加入系统爬行时,经过任务重新划分,crawler_c对应2号和4号虚拟爬行结点,则crawler_a需将2号虚拟爬行结点去重结构bf_2转移到crawler_c,crawler_b同样亦需将4号虚拟爬行结点去重结构bf_4转移到crawler_c,这样crawler_c就获取了对应任务虚拟爬行结点的去重信息,不会重复爬行下载。并且新实际爬行结点加入时,所有实际爬行结点的任务变动规模小,不会发生大量的去重布隆过滤器的转移,减少了通信带宽和对实际爬行结点的压力。当实际爬行结点退出时,操作方式与此类似,只是转移的方向为退出实际爬行结点到其他正常实际爬行结点,综合而言,该方法具有很好的操作性和稳定性,适用于大规模分布式网络爬虫的并行爬行。 

Claims (2)

1.一种分布式网络爬虫系统中的URL去重方法,其特征在于,包括以下步骤:
(1)当前爬行结点根据初始URL任务集进入网络爬行状态,并获取待处理URL任务集;
(2)判断待处理URL任务集是否为空,若为空则过程结束,否则进入步骤(3);
(3)从待处理URL任务集中获取URL任务;
(4)对获取的URL任务进行哈希运算得到其对应的虚拟爬行结点号;
(5)根据该虚拟爬行结点号,查找虚拟爬行结点与实际爬行结点的映射关系表,从而得到对应的实际爬行结点;
(6)判断获取的URL任务是否属于当前爬行结点,如果是则进入步骤(9),否则转入步骤(7);
(7)将获取的URL任务转发给实际爬行结点;
(8)对于待处理URL任务集中的所有URL任务,重复上述步骤(2)至(7),直到所有URL任务均处理完毕为止;
(9)对该URL任务进行哈希运算,以找到该URL任务所属的虚拟爬行结点,并找到对应的布隆过滤器去重结构;
(10)对URL任务用K个哈希函数计算,以得到K个哈希值H[0],H[1],H[2],...,H[K-1];
(11)根据K个哈希值查找布隆过滤器去重结构的位数组中对应的第H[0],H[1],H[2],...,H[K-1]位,以判断第H[0],H[1],H[2],...,H[K-1]位是否均为1,若均为1,则进入步骤(12),否则进入步骤(13);
(12)丢弃该URL任务,然后转入步骤(14);
(13)表明该URL任务不是处于当前爬行结点的URL任务集合中,将该URL任务加入当前爬行结点的待处理队列中;
(14)将布隆过滤器去重结构的位数组中对应的第H[0],H[1],H[2],...,H[K-1]位全部置1;
(15)判断是否有实际爬行结点退出,若有则转入步骤(16),否则转入步骤(25);
(16)设定退出的实际爬行结点所映射的虚拟爬行结点集合为S,S中虚拟爬行结点个数记为vz;
(17)将剩余的实际爬行结点按照其所映射的虚拟爬行结点数从小到大排序,剩余的实际爬行结点个数记为rz;
(18)初始化计数器i和计数器j均为0,其中i指向排序后的实际爬行结点集合中第i+1个实际爬行结点,j指向虚拟爬行结点集合S中第j+1个虚拟爬行结点;
(19)判断j是否等于vz,若是则转入步骤(25),否则转入步骤(20);
(20)从虚拟爬行结点集合S中取出第j+1个虚拟爬行结点,并将其加入到第i+1个实际爬行结点所映射的虚拟爬行结点集合中;
(21)设置i=i+1,j=j+1;
(22)判断i是否等于rz,若是则转入步骤(23),否则转入步骤(24);
(23)将i值置0;
(24)重复上述步骤(19)至(23),直到j值等于vz为止;
(25)判断是否有新的实际爬行结点加入,若有则转入步骤(26),否则返回步骤(2);
(26)设定average=N/M,M为加入新实际爬行结点后实际爬行结点的总数,设定新实际爬行结点所映射的虚拟爬行结点集合为Q,其初始为空;
(27)将原有实际爬行结点按照映射的虚拟爬行结点数从大到小排序;
(28)初始化计数器s和t均为0,其中s指向排序后的实际爬行结点集合中第s+1个实际爬行结点,t为虚拟爬行结点集合Q中虚拟爬行结点个数;
(29)判断t是否等于average,若是则返回步骤(2),否则转入步骤(30);
(30)从第s+1个实际爬行结点所映射的虚拟爬行结点集合中取出一个虚拟爬行结点加入到Q中,并设置t=t+1,s=s+1;
(31)判断s值是否等于M-1,若是则转入步骤(32),否则转入步骤(33);
(32)将s值置0;
(33)重复执行上述步骤(29)至(32),直到t等于average为止。
2.根据权利要求1所述的方法,其特征在于,还包括:在所述当前爬行结点根据初始URL任务集进入网络爬行状态,并获取待处理URL任务集的步骤之前,设定系统的虚拟爬行结点数N及初始URL任务集,每一个虚拟爬行结点对应一个布隆过滤器去重结构,布隆过滤器去重结构在内存中申请有一个位数组,位数组大小为n,将虚拟爬行结点平均分配给实际爬行结点,建立虚拟爬行结点与实际爬行结点的映射关系,采用基于模的哈希运算方式将初始URL任务集映射到各个虚拟爬行结点,并根据虚拟爬行结点与实际爬行结点的映射关系将初始URL任务集映射到对应的实际爬行结点。
CN 201210090259 2012-03-30 2012-03-30 一种分布式网络爬虫系统中的url去重方法 Expired - Fee Related CN102663058B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201210090259 CN102663058B (zh) 2012-03-30 2012-03-30 一种分布式网络爬虫系统中的url去重方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201210090259 CN102663058B (zh) 2012-03-30 2012-03-30 一种分布式网络爬虫系统中的url去重方法

Publications (2)

Publication Number Publication Date
CN102663058A true CN102663058A (zh) 2012-09-12
CN102663058B CN102663058B (zh) 2013-12-18

Family

ID=46772549

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201210090259 Expired - Fee Related CN102663058B (zh) 2012-03-30 2012-03-30 一种分布式网络爬虫系统中的url去重方法

Country Status (1)

Country Link
CN (1) CN102663058B (zh)

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103226609A (zh) * 2013-05-03 2013-07-31 福建师范大学 一种web聚焦搜索系统的搜索方法
CN103383665A (zh) * 2013-07-12 2013-11-06 北京奇虎科技有限公司 适于url数据抓取中对数据缓存的方法及装置
CN103605764A (zh) * 2013-11-26 2014-02-26 Tcl集团股份有限公司 一种网络爬虫系统及网络爬虫多任务执行和调度方法
WO2015013954A1 (en) * 2013-08-01 2015-02-05 Google Inc. Near-duplicate filtering in search engine result page of an online shopping system
CN104408182A (zh) * 2014-12-15 2015-03-11 北京国双科技有限公司 分布式系统上网络爬虫数据的处理方法和装置
CN104809182A (zh) * 2015-04-17 2015-07-29 东南大学 基于动态可分裂Bloom Filter的网络爬虫URL去重方法
CN104933054A (zh) * 2014-03-18 2015-09-23 上海帝联信息科技股份有限公司 缓存资源文件的url存储方法及装置、缓存服务器
CN105302876A (zh) * 2015-09-28 2016-02-03 孙燕群 基于正则表达式的url过滤方法
CN105320740A (zh) * 2015-09-22 2016-02-10 清华大学 微信文章以及公众号的获取方法及获取系统
CN105740294A (zh) * 2014-12-12 2016-07-06 腾讯科技(深圳)有限公司 一种信息推送方法及设备
CN105956068A (zh) * 2016-04-27 2016-09-21 湖南蚁坊软件有限公司 基于分布式数据库的网页url去重方法
CN106096008A (zh) * 2016-06-23 2016-11-09 北京工业大学 一种用于金融仓单风控的网络爬虫方法
CN106570025A (zh) * 2015-10-10 2017-04-19 北京国双科技有限公司 一种数据过滤的方法及装置
CN106570023A (zh) * 2015-10-10 2017-04-19 北京国双科技有限公司 一种爬虫系统自定义去重的方法及装置
CN107391034A (zh) * 2017-07-07 2017-11-24 华中科技大学 一种基于局部性优化的重复数据检测方法
CN107798106A (zh) * 2017-10-31 2018-03-13 广东思域信息科技有限公司 一种分布式爬虫系统中的url去重方法
CN107943991A (zh) * 2017-12-01 2018-04-20 成都嗨翻屋文化传播有限公司 一种基于内存数据库的分布式爬虫框架及实现方法
US10003574B1 (en) 2015-02-28 2018-06-19 Palo Alto Networks, Inc. Probabilistic duplicate detection
CN108616544A (zh) * 2015-08-04 2018-10-02 法赛特安全公司 用于检测对域名系统记录系统的更新的方法、系统和介质
CN111125487A (zh) * 2019-12-24 2020-05-08 个体化细胞治疗技术国家地方联合工程实验室(深圳) 一种网络爬虫的爬行方法及装置
CN111143720A (zh) * 2018-11-06 2020-05-12 顺丰科技有限公司 一种url去重方法、装置及存储介质
CN114138756A (zh) * 2020-09-03 2022-03-04 金篆信科有限责任公司 数据去重方法、节点及计算机可读存储介质
CN115454983A (zh) * 2022-09-13 2022-12-09 浪潮卓数大数据产业发展有限公司 一种基于布隆过滤器的海量Hbase数据去重方法
WO2022267343A1 (zh) * 2021-06-25 2022-12-29 深圳前海微众银行股份有限公司 漏洞检测方法、设备及可读存储介质
CN115617809A (zh) * 2022-11-08 2023-01-17 广州睿帆科技有限公司 数据库唯一性约束处理方法、装置、设备及介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103793462B (zh) * 2013-12-02 2016-08-31 北京奇虎科技有限公司 网址净化方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001325275A (ja) * 2000-05-17 2001-11-22 Gala Inc インターネット上で運用されている複数の検索エンジンを使ってwebページの検索レポートを作成する方法と装置
CN102262635A (zh) * 2010-05-25 2011-11-30 北京启明星辰信息技术股份有限公司 一种网页爬虫系统及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001325275A (ja) * 2000-05-17 2001-11-22 Gala Inc インターネット上で運用されている複数の検索エンジンを使ってwebページの検索レポートを作成する方法と装置
CN102262635A (zh) * 2010-05-25 2011-11-30 北京启明星辰信息技术股份有限公司 一种网页爬虫系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
丁振国等: "基于Bloom Filter的大规模网页去重策略研究", 《现代图书情报技术》, 31 March 2008 (2008-03-31), pages 45 - 50 *
吴小惠: "分布式网络爬虫URL 去重策略的改进", 《平顶山学院学报》, vol. 24, no. 5, 31 October 2009 (2009-10-31), pages 116 - 119 *

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103226609A (zh) * 2013-05-03 2013-07-31 福建师范大学 一种web聚焦搜索系统的搜索方法
CN103383665B (zh) * 2013-07-12 2016-04-27 北京奇虎科技有限公司 适于url数据抓取中对数据缓存的方法及装置
CN103383665A (zh) * 2013-07-12 2013-11-06 北京奇虎科技有限公司 适于url数据抓取中对数据缓存的方法及装置
WO2015013954A1 (en) * 2013-08-01 2015-02-05 Google Inc. Near-duplicate filtering in search engine result page of an online shopping system
US9607331B2 (en) 2013-08-01 2017-03-28 Google Inc. Near-duplicate filtering in search engine result page of an online shopping system
US9342849B2 (en) 2013-08-01 2016-05-17 Google Inc. Near-duplicate filtering in search engine result page of an online shopping system
CN103605764B (zh) * 2013-11-26 2017-10-24 Tcl集团股份有限公司 一种网络爬虫系统及网络爬虫多任务执行和调度方法
CN103605764A (zh) * 2013-11-26 2014-02-26 Tcl集团股份有限公司 一种网络爬虫系统及网络爬虫多任务执行和调度方法
CN104933054A (zh) * 2014-03-18 2015-09-23 上海帝联信息科技股份有限公司 缓存资源文件的url存储方法及装置、缓存服务器
CN104933054B (zh) * 2014-03-18 2018-07-06 上海帝联信息科技股份有限公司 缓存资源文件的url存储方法及装置、缓存服务器
CN105740294B (zh) * 2014-12-12 2020-06-23 腾讯科技(深圳)有限公司 一种信息推送方法及设备
CN105740294A (zh) * 2014-12-12 2016-07-06 腾讯科技(深圳)有限公司 一种信息推送方法及设备
CN104408182A (zh) * 2014-12-15 2015-03-11 北京国双科技有限公司 分布式系统上网络爬虫数据的处理方法和装置
US10003574B1 (en) 2015-02-28 2018-06-19 Palo Alto Networks, Inc. Probabilistic duplicate detection
CN104809182B (zh) * 2015-04-17 2016-08-17 东南大学 基于动态可分裂Bloom Filter的网络爬虫URL去重方法
CN104809182A (zh) * 2015-04-17 2015-07-29 东南大学 基于动态可分裂Bloom Filter的网络爬虫URL去重方法
CN108616544B (zh) * 2015-08-04 2021-06-01 法赛特安全公司 用于检测对域名系统记录系统的更新的方法、系统和介质
CN108616544A (zh) * 2015-08-04 2018-10-02 法赛特安全公司 用于检测对域名系统记录系统的更新的方法、系统和介质
CN105320740B (zh) * 2015-09-22 2018-10-16 清华大学 微信文章以及公众号的获取方法及获取系统
CN105320740A (zh) * 2015-09-22 2016-02-10 清华大学 微信文章以及公众号的获取方法及获取系统
CN105302876A (zh) * 2015-09-28 2016-02-03 孙燕群 基于正则表达式的url过滤方法
CN106570025A (zh) * 2015-10-10 2017-04-19 北京国双科技有限公司 一种数据过滤的方法及装置
CN106570023A (zh) * 2015-10-10 2017-04-19 北京国双科技有限公司 一种爬虫系统自定义去重的方法及装置
CN106570025B (zh) * 2015-10-10 2020-09-11 北京国双科技有限公司 一种数据过滤的方法及装置
CN105956068A (zh) * 2016-04-27 2016-09-21 湖南蚁坊软件有限公司 基于分布式数据库的网页url去重方法
CN106096008B (zh) * 2016-06-23 2021-01-05 北京工业大学 一种用于金融仓单风控的网络爬虫方法
CN106096008A (zh) * 2016-06-23 2016-11-09 北京工业大学 一种用于金融仓单风控的网络爬虫方法
CN107391034A (zh) * 2017-07-07 2017-11-24 华中科技大学 一种基于局部性优化的重复数据检测方法
CN107391034B (zh) * 2017-07-07 2019-05-10 华中科技大学 一种基于局部性优化的重复数据检测方法
CN107798106A (zh) * 2017-10-31 2018-03-13 广东思域信息科技有限公司 一种分布式爬虫系统中的url去重方法
CN107943991A (zh) * 2017-12-01 2018-04-20 成都嗨翻屋文化传播有限公司 一种基于内存数据库的分布式爬虫框架及实现方法
CN111143720A (zh) * 2018-11-06 2020-05-12 顺丰科技有限公司 一种url去重方法、装置及存储介质
CN111125487A (zh) * 2019-12-24 2020-05-08 个体化细胞治疗技术国家地方联合工程实验室(深圳) 一种网络爬虫的爬行方法及装置
CN114138756A (zh) * 2020-09-03 2022-03-04 金篆信科有限责任公司 数据去重方法、节点及计算机可读存储介质
CN114138756B (zh) * 2020-09-03 2023-03-24 金篆信科有限责任公司 数据去重方法、节点及计算机可读存储介质
WO2022267343A1 (zh) * 2021-06-25 2022-12-29 深圳前海微众银行股份有限公司 漏洞检测方法、设备及可读存储介质
CN115454983A (zh) * 2022-09-13 2022-12-09 浪潮卓数大数据产业发展有限公司 一种基于布隆过滤器的海量Hbase数据去重方法
CN115617809A (zh) * 2022-11-08 2023-01-17 广州睿帆科技有限公司 数据库唯一性约束处理方法、装置、设备及介质
CN115617809B (zh) * 2022-11-08 2023-03-21 广州睿帆科技有限公司 数据库唯一性约束处理方法、装置、设备及介质

Also Published As

Publication number Publication date
CN102663058B (zh) 2013-12-18

Similar Documents

Publication Publication Date Title
CN102663058B (zh) 一种分布式网络爬虫系统中的url去重方法
CN100462979C (zh) 分布式索引文件的检索方法、检索系统及检索服务器
CN104794177B (zh) 一种数据存储方法及装置
CN103327052B (zh) 数据存储方法和系统以及数据访问方法和系统
CN101594319B (zh) 表项查找方法和装置
CN102246172A (zh) 用于电子内容的分布式索引搜索的系统及方法
CN102479207A (zh) 一种信息搜索的方法、系统及信息搜索设备
CN103593433B (zh) 一种面向海量时序数据的图数据处理方法及系统
CN1858734A (zh) 一种数据存储及搜索方法
CN107330094A (zh) 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法
CN102045412B (zh) IPv6地址前缀压缩存储方法及设备
CN103678550A (zh) 一种基于动态索引结构的海量数据实时查询方法
CN103885829A (zh) 一种基于统计的虚拟机跨数据中心动态迁移优化方法
CN107203532A (zh) 索引系统的构建方法、搜索的实现方法及装置
CN104699757A (zh) 云环境下分布式网络信息采集方法
Von der Weth et al. Multiterm keyword search in NoSQL systems
CN102567313B (zh) 递进式网页库去重系统及其实现方法
CN103793525A (zh) 基于局部迭代的MapReduce模型的图结点的权威值计算方法
CN107798106A (zh) 一种分布式爬虫系统中的url去重方法
CN110245135A (zh) 一种基于numa架构的大规模流式图数据更新方法
CN102082832A (zh) 一种分布式文件系统中的数据存储方法和装置
CN101079897B (zh) 一种便于存储节点数量扩增的并行存储系统构造方法
CN108153907B (zh) 通过16位Trie树实现空间优化的词典存储管理方法
Mo et al. Asynchronous index strategy for high performance real-time big data stream storage
CN103279328A (zh) 基于Haloop的BlogRank算法并行化处理的构建方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20131218

Termination date: 20210330