面向海量数据采集的分布式网络爬虫性能优化方法技术

技术编号:23484997 阅读:20 留言:0更新日期:2020-03-10 12:37
本发明专利技术属于软件工程技术领域,具体涉及一种面向海量数据采集的分布式网络爬虫性能优化方法。所述方法包括如下步骤:步骤1:初始化模块新建一个去重字符串和一个垃圾链接特征字符串;步骤2:主节点爬行器读取到初始URL地址,爬取模块爬取初始URL地址,生成URL任务队列;步骤3:爬取模块根据URL任务队列进行网页爬取,完成爬取工作。与现有技术相比较,本发明专利技术突破了分布式网络爬虫爬取性能瓶颈,爬取性能提高50%以上;提高了URL任务队列的去重效率,满足海量数据采集的效率要求;优化了URL任务队列的存储空间,极大地节省了服务器内存资源;增加了垃圾链接过滤环节,不仅节约服务器内存资源,而且显著提高爬虫效率。

Performance optimization method of distributed network crawler for massive data collection

【技术实现步骤摘要】
面向海量数据采集的分布式网络爬虫性能优化方法
本专利技术属于软件工程
,具体涉及一种面向海量数据采集的分布式网络爬虫性能优化方法。
技术介绍
网络爬虫又名网络蜘蛛、网络蚂蚁或者网络机器人等,能够按照设定的规则自动地从网络中获取数据。分布式网络爬虫能够高效获取大规模数据集,广泛应用于搜索引擎和大数据分析中,已经成为海量数据采集的重要工具。分布式网络爬虫通常包括一个主节点爬行器和多个从节点爬行器,使用Redis内存数据库持久化保存URL任务队列和去重队列。主节点爬行器根据初始URL(统一资源定位符)爬取网页,获得数据,同时也得到新的URL,将新的URL去重后放入URL任务队列;从节点爬行器从URL任务队列中获取URL地址,爬取网页,获得数据,同时也会得到新的URL,经过去重后也会放入URL任务队列,如此反复直到爬虫任务满足结束条件或者URL任务队列为空。Redis内存数据库自带的URL去重原理是利用数据集合无重复的特性,适用于数据量规模不大的情况。当待去重的链接达到千万量级时,对服务器的内存要求明显提高,且去重效率大幅降低。经过实践,随着爬虫的不断运行,累积的URL任务队列和去重队列会持续占用Redis内存并不断增长,最终会因占满整个服务器的内存而使服务器宕机。因此,现有的基于Redis的分布式网络爬虫,面对海量数据采集时,性能存在三个方面的不足:(1)庞大的去重队列保存在Redis集合中,不仅造成去重效率低下,也会过度消耗服务器内存资源;(2)垃圾链接层出不穷,Redis内存数据库无法有效分辨,严重影响正常的爬取工作;(3)URL任务队列数据量激增,也会过度占用服务器内存资源。
技术实现思路
(一)要解决的技术问题本专利技术要解决的技术问题是:如何解决现有的基于Redis内存数据库的分布式网络爬虫,面对海量数据采集时,存在的去重效率不高和服务器内存资源过度消耗以及垃圾链接无法有效根除的问题,(二)技术方案为解决上述技术问题,本专利技术提供一种面向海量数据采集的分布式网络爬虫性能优化方法,所述分布式网络爬虫性能优化方法基于分布式网络爬虫性能优化系统来实施,所述分布式网络爬虫性能优化系统包括:初始化模块、爬取模块;所述分布式网络爬虫性能优化方法包括如下步骤:步骤1:所述初始化模块新建一个去重字符串和一个垃圾链接特征字符串;步骤2:主节点爬行器读取到初始URL地址,所述爬取模块爬取初始URL地址,生成URL任务队列;步骤3:所述爬取模块根据URL任务队列进行网页爬取,完成爬取工作。其中,所述初始化模块包括:去重字符串生成单元、垃圾链接特征字符串生成单元;所述步骤1包括:步骤11:所述去重字符串生成单元在Redis内存数据库中新建一个去重字符串;步骤12:所述垃圾链接特征字符串生成单元根据垃圾链接的典型特征,在Redis内存数据库中新建一个垃圾链接特征字符串。其中,所述去重字符串中所有的位数值为0。其中,所述垃圾链接的典型特征包括:自动评论生成的链接,群发外部的链接。其中,所述爬取模块包括:页面爬行模块、页面分析模块、链接处理模块;所述步骤2包括:步骤21:用户根据数据采集主题,通过用户中心设定初始URL地址的集合;步骤22:主节点爬行器读取到初始URL地址,并交给页面爬行模块;步骤23:页面爬行模块根据初始URL地址,对互联网网页发出请求;步骤24:互联网网页响应页面爬行模块的请求,并返回响应内容;步骤25:页面分析模块根据相关主题对响应内容进行解析,提取内容保存到数据库以备查询,同时获得新URL地址;步骤26:新URL地址经过链接处理模块处理,保存到Redis内存数据库的URL任务队列中,形成URL任务队列。其中,所述链接处理模块包括:垃圾链接过滤模块、链接去重处理模块、压缩处理模块和序列化处理模块;所述步骤26中包括:步骤261:由垃圾链接过滤模块根据垃圾链接特征字符串作用于新URL地址,识别新URL地址是否包含垃圾链接特征,如果URL地址包含垃圾链接特征,则判断该URL地址属于垃圾链接,直接过滤掉,否则进行下一步处理;步骤262:由链接去重处理模块对垃圾链接特征过滤后的URL地址,先经过密码散列函数进行压缩处理为相同位数,然后被k个不同的哈希函数运算,最终得到k个独立的哈希值,根据该k个独立的哈希值,判断Redis内存数据库中去重字符串中哈希值对应的字符位的数值是否全为1,如果数值全为1,则该URL地址属于重复链接,直接过滤掉;否则,该URL地址不属于重复链接;步骤263:由压缩处理模块对步骤262去重后不属于重复链接的URL地址,进行加密压缩算法处理;步骤264:由序列化处理模块将压缩后的URL地址和页面解析函数按照键值对数据格式,进行序列化处理;步骤265:将该序列化处理后的URL地址,保存到到Redis内存数据库的URL任务队列中,形成URL任务队列。其中,所述步骤262中,对于不属于重复链接的URL地址,还将该URL地址所对应的,去重字符串中哈希值对应的字符位不为1的数值全部设置为1。其中,所述k的值包括5、7、9、11。其中,所述分布式网络爬虫主从节点爬取模块还包括:判断模块、优先级确定模块、反序列化模块;所述步骤3包括:步骤31:所述判断模块判断在URL任务队列中,待爬取URL地址是否满足爬虫结束条件,如果满足爬虫结束条件,则停止,否则进行步骤32;步骤32:所述优先级确定模块根据广度优先爬行策略,确定URL任务队列中待爬URL的优先级,然后主、从节点爬行器从URL任务队列中按照优先级读取待爬取URL;步骤33:所述反序列化模块将读取到的待爬取URL进行反序列化处理,获得URL地址;步骤34:主从节点爬行器分别独立地调用各自页面爬行模块,依据URL地址,对互联网网页发出请求;步骤35:网页响应页面爬行模块的请求,并返回响应内容;步骤36:页面分析模块根据相关主题对响应内容进行解析,提取内容保存到数据库以备查询,同时获得新URL链接;步骤37:新URL经过链接处理模块处理,保存到Redis中的URL任务队列;步骤38:重复步骤31,直至完成整个爬取工作。其中,所述爬虫结束条件为:URL任务队列中,所有的URL地址均已被爬取过。(三)有益效果与现有技术相比较,本专利技术具备如下有益效果:(1)突破了分布式网络爬虫爬取性能瓶颈,爬取性能提高50%以上;(2)提高了URL任务队列的去重效率,满足海量数据采集的效率要求;(3)优化了URL任务队列的存储空间,极大地节省了服务器内存资源;(4)增加了垃圾链接过滤环节,不仅节约服务器内存资源,而且显著提高爬虫效率。附图说明图1为本专利技术分布式网络爬虫初始URL任务队列生成示意图。本文档来自技高网
...

【技术保护点】
1.一种面向海量数据采集的分布式网络爬虫性能优化方法,其特征在于,所述分布式网络爬虫性能优化方法基于分布式网络爬虫性能优化系统来实施,所述分布式网络爬虫性能优化系统包括:初始化模块、爬取模块;/n所述分布式网络爬虫性能优化方法包括如下步骤:/n步骤1:所述初始化模块新建一个去重字符串和一个垃圾链接特征字符串;/n步骤2:主节点爬行器读取到初始URL地址,所述爬取模块爬取初始URL地址,生成URL任务队列;/n步骤3:所述爬取模块根据URL任务队列进行网页爬取,完成爬取工作。/n

【技术特征摘要】
1.一种面向海量数据采集的分布式网络爬虫性能优化方法,其特征在于,所述分布式网络爬虫性能优化方法基于分布式网络爬虫性能优化系统来实施,所述分布式网络爬虫性能优化系统包括:初始化模块、爬取模块;
所述分布式网络爬虫性能优化方法包括如下步骤:
步骤1:所述初始化模块新建一个去重字符串和一个垃圾链接特征字符串;
步骤2:主节点爬行器读取到初始URL地址,所述爬取模块爬取初始URL地址,生成URL任务队列;
步骤3:所述爬取模块根据URL任务队列进行网页爬取,完成爬取工作。


2.如权利要求1所述的面向海量数据采集的分布式网络爬虫性能优化方法,其特征在于,所述初始化模块包括:去重字符串生成单元、垃圾链接特征字符串生成单元;
所述步骤1包括:
步骤11:所述去重字符串生成单元在Redis内存数据库中新建一个去重字符串;
步骤12:所述垃圾链接特征字符串生成单元根据垃圾链接的典型特征,在Redis内存数据库中新建一个垃圾链接特征字符串。


3.如权利要求2所述的面向海量数据采集的分布式网络爬虫性能优化方法,其特征在于,所述去重字符串中所有的位数值为0。


4.如权利要求3所述的面向海量数据采集的分布式网络爬虫性能优化方法,其特征在于,所述垃圾链接的典型特征包括:自动评论生成的链接,群发外部的链接。


5.如权利要求4所述的面向海量数据采集的分布式网络爬虫性能优化方法,其特征在于,所述爬取模块包括:页面爬行模块、页面分析模块、链接处理模块;
所述步骤2包括:
步骤21:用户根据数据采集主题,通过用户中心设定初始URL地址的集合;
步骤22:主节点爬行器读取到初始URL地址,并交给页面爬行模块;
步骤23:页面爬行模块根据初始URL地址,对互联网网页发出请求;
步骤24:互联网网页响应页面爬行模块的请求,并返回响应内容;
步骤25:页面分析模块根据相关主题对响应内容进行解析,提取内容保存到数据库以备查询,同时获得新URL地址;
步骤26:新URL地址经过链接处理模块处理,保存到Redis内存数据库的URL任务队列中,形成URL任务队列。


6.如权利要求5所述的面向海量数据采集的分布式网络爬虫性能优化方法,其特征在于,所述链接处理模块包括:垃圾链接过滤模块、链接去重处理模块、压缩处理模块和序列化处理模块;
所述步骤26中包括:
步骤261:由垃圾链接过滤模块根据垃圾链接特征字符串作用于新URL地址,识别新URL地址是否包含垃圾链接特征,如果URL地址包含垃圾链接特征,则判断该URL...

【专利技术属性】
技术研发人员:张凯云吴志成陈立忠吴艳林张郭秋晨纪纲王学勇郭姣
申请(专利权)人:北京京航计算通讯研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1