基于动态可分裂BloomFilter的网络爬虫URL去重方法_2

文档序号:8487847阅读:来源:国知局
,2,…,c-1}的哈希定位函数,它可以通过哈希函数再对c取模实现; (4)依据上述m、n、f、c、k和u参数,以及已经确定的k个哈希映射函数和1个哈希定 位函数,初始化得到一个动态可分裂Bloom Filter,它的每个叶片Bloom Filter所关联的 URL集合用一个数据库实现; (5) 以动态可分裂BloomFilter作为基础,实现网络爬虫的URL去重; (6) 当在网络分布环境使用多个网络爬虫进行网页并行采集时,只需按照动态可分裂 BloomFilter采用分布策略,就可以让每个网络爬虫单独部署在一台计算机上;而在实施 URL去重时,每个网络爬虫只需分别负责一个或几个叶片BloomFilter及其关联URL集合 的相关操作。
2.如权利要求1所述的基于动态可分裂Bloom Filter的网络爬虫URL去重方法,其 特征在于,动态可分裂Bloom Filter采用树状的分层存储结构,动态可分裂Bloom Filter 中用到两种哈希函数,一种是Bloom Filter中的哈希映射函数,另一种是哈希定位函数; 树根中存放一个哈希定位函数,在除树根外的各层中,每一个叶结点中存放一个Bloom Filter,称为叶片Bloom Filter,它用于记录网络爬虫已经爬取过的URL信息;每一个非 叶结点中存放一个哈希定位函数,非叶结点通过它把URL进一步导向其下一层的对应子结 点;在动态可分裂BloomFilter中,为支持叶结点的灵活分裂,每个叶片Bloom Filter都会 关联一个URL集合,它的元素是已经插入到该叶片Bloom Filter中的所有URL。
3. 如权利要求1所述的基于动态可分裂BloomFilter的网络爬虫URL去重方法,其 特征在于,动态可分裂BloomFilter的初始化过程中,首先,根据待处理的URL数目的预估 值,确定树的第一层结点的个数;计算方法如下:假设需要存储的URL个数为n,而每一个叶 片BloomFilter中的二进制数组长度是m,并且要求假阳性误判率低于f;则动态可分裂 BloomFilter的第一层的结点个数c:
第一层中每个叶片Bloom Filter在假阳性误判率不大于f的情况下,最多能存储的URL个数u为:
而每个叶片Bloom Filter所需的哈希映射函数个数k为:
接着,选用一个哈希定位函数,将它存放在树的根结点;最后,在树的第一层中放置c个叶片BloomFilter。
4. 如权利要求1所述的基于动态可分裂Bloom Filter的网络爬虫URL去重方法,其特 征在于,实现网络爬虫的URL去重的具体方法如下:当网络爬虫欲对一个URL进行爬取时, 先在动态可分裂Bloom Filter中查询该URL,以判断它是否已经被爬取过;如果是,则略去 该URL(即该URL被去重),并重新处理下一条URL;如果不是,表明该URL是在当前的动态 可分裂Bloom Filter中未存储的新的URL,则此时必然已经到达某个叶片Bloom Filter ; 那么,接下来先判断该叶片Bloom Filter所存储的URL数量是否已达上限u;如果是,则先 对该叶片Bloom Filter进行分裂,再将URL插入到分裂后的动态可分裂Bloom Filter中; 如果不是,则直接将URL插入到该叶片Bloom Filter中。
5.如权利要求4所述的基于动态可分裂Bloom Filter的网络爬虫URL去重方法,其特 征在于,当网络爬虫把URL信息插入到动态可分裂Bloom Filter时,需要对URL进行h次 哈希定位计算,以确定该URL信息具体插入到哪一个叶片Bloom Filter中;具体的插入过 程如下:首先,使用根结点的哈希定位函数对该URL进行哈希计算,以此判断该URL信息存 储到根结点的哪一个子结点中;接着,判断该子结点是否为叶结点;如果是,则把该URL插 入到与该叶片Bloom Filter关联的URL集合中,同时通过哈希映射函数把该URL信息插入 到叶片Bloom Filter的二进制数组中;如果不是,则使用该非叶结点的哈希定位函数继续 上述过程,直至将该URL最终定位并插入到一个叶片Bloom Filter及其关联的URL集合为 止。
6. 如权利要求4所述的基于动态可分裂BloomFilter的网络爬虫URL去重方法,其 特征在于,动态可分裂BloomFilter的分裂过程中,当动态可分裂BloomFilter的某个叶 片BloomFilter(不妨记为结点1)存储的URL数量大于u时,将会使该叶片BloomFilter 的假阳性误判率超过f,因此需要对该叶结点1进行分裂;具体的分裂过程如下:首先,在待 分裂结点1的下一层新增c个叶片BloomFilter,并使它们成为结点1的子结点;接着,为 待分裂结点1增加一个哈希定位函数;然后用该哈希定位函数对与结点1关联的URL集合 中的所有URL重新进行哈希计算(再哈希),进而使这些URL各自定位并插入到结点1的具 体对应子结点中;最后,删除待分裂结点1中存储的叶片BloomFilter及其关联的URL集 合,而只保留结点1中的哈希定位函数。
7.如权利要求1所述的基于动态可分裂Bloom Filter的网络爬虫URL去重方法,其 特征在于,当网络爬虫向动态可分裂Bloom Filter查询URL信息时,其执行过程类似于插 入过程;首先,动态可分裂Bloom Filter将对输入的待查询URL进行h次哈希定位计算,以 确定该URL信息具体存储在哪一个叶片Bloom Filter中;然后,再按照经典Bloom Filter 的查询方法,在该叶片Bloom Filter中对URL执行具体的查询操作。
8.如权利要求1所述的基于动态可分裂BloomFilter的网络爬虫URL去重方法,其特 征在于,动态可分裂BloomFilter按树结构组织,它使用哈希定位函数来确定一个URL具 体存储在树的哪个结点中;为了使树的每一个叶片BloomFilter尽量均匀地负担存储任 务,应该在不同层中选用不同的哈希定位函数,以避免在各层中出现过于类似的哈希结果; 但在同一层中,非叶结点的哈希定位函数可以相同;与哈希映射函数的实现方式类似,哈希 定位函数也可以通过常见的哈希函数对c取模来实现;通常m远大于c,所以哈希定位函数 和哈希映射函数可以选用相同的哈希函数作为基础,再分别通过对c取模和对m取模来实 现。
【专利摘要】本发明公开了一种基于动态可分裂Bloom Filter的网络爬虫URL去重方法,该方法的基础是一个动态可分裂Bloom Filter(简记DSBF),它与Interner Archive爬虫和Apoide爬虫中均匀负担URL存取任务的固定结构Bloom Filter不同,而是具有可按需灵活分裂成多层的动态可扩展结构。基于动态可分裂Bloom Filter实现网络爬虫URL去重,既可保证当已处理的URL数目不断增大时,仍然能够把Bloom Filter的假阳性误判率控制在给定范围内,又能将让Bloom Filter具有易于分布实现的灵活存储结构,从而更加适合于构造大规模、分布式、多网络爬虫的并行处理环境,支持互联网海量网页信息的高效采集和处理。
【IPC分类】G06F17-30
【公开号】CN104809182
【申请号】CN201510185467
【发明人】杨鹏, 袁志伟, 刘旋
【申请人】东南大学
【公开日】2015年7月29日
【申请日】2015年4月17日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1