一种基于内存数据库的分布式爬虫框架及实现方法技术

技术编号:17779910 阅读:46 留言:0更新日期:2018-04-22 08:31
本发明专利技术公开了一种基于内存数据库的分布式爬虫框架及实现方法,所述的分布式爬虫框架包括以下模块:生产者爬虫、消费者爬虫、过滤器以及内存数据库、消息队列、存储介质,每个模块均可以单独运行、解耦合,互不干扰,而且各个模块均易于扩展。本分布式爬虫的实现方法具有以下优点:内存使用可控,不会随着URL不断增加而改变;调度快,在URL不断增加的情况下,不会降低任务调度速率;爬虫高效,分布式多节点爬取,扩展简单、自由度高;数据存储高效、安全。

【技术实现步骤摘要】
一种基于内存数据库的分布式爬虫框架及实现方法
本专利技术属于计算机数据挖掘的
,具体地说,涉及一种基于内存数据库的分布式爬虫框架及实现方法。
技术介绍
如今我们正生活在一个信息爆炸的年代,随着互联网行业迅猛发展,这些信息每年以指数级增长。如何使用网络爬虫技术高效的爬取web中的数据成为一个严峻的问题,而单机爬虫不仅受到网络带宽、服务器配置等环境限制,并且很难在多个单机爬虫间进行协作,继而保证数据抓取过程中无重复请求,以及数据信息的唯一性。因此,将网络爬虫采取分布式协作方式进行设计可以大大提高爬取数据的效率。分布式网络爬虫在当今社会已经有了比较广泛的应用,例如Google和百度所使用的网络爬虫就采用了分布式系统,但是很少的想关信息进行交流,目前国外使用较多的分布式爬虫有Mercator、GoogleCrawler、UbiCrwaler、InternetArchiveCrawler等,国内比较著名的是WebGather。Google的分布式网络爬虫系统是一台中央主机和三台负责爬虫的机器,并且这三台机器只与中央主机通信。中央主机从一个文件系统中读取URL,并把它们分给其它机器的爬虫进程中。爬虫采用异步I/O同时从三百个网站上获取数据。所有爬虫将下载下来的页面压缩并存储在磁盘上。然后索引进程从这些HTML页面中将URL提取出来存放在另外一个磁盘文件中。URLResolver进程读取这个存放链接的文件,将其中的相对链接转换(通过浏览文件夹按钮进行链接的方式即本地链接)为绝对链接(一个指向摸个文件的精确位置的超级链接,该文件可以存储在某个文件服务器、万维网或某家公司的内联网上),继而提供给主机。不足之处在于,一旦中央主机崩溃失效,则整个系统都会停止工作,而且中央主机的URL分配模块常常成为整个系统的性能瓶颈。Mercator是AltaVista搜索引擎的网络爬虫,它完全由JAVA编写。Mercator的扩展性非常好,可以通过增减或替换模块来实现不同的功能。Mercator采用的数据结构可以使无论爬行的规模有多大,只占用有限的内存,数据结构的大部分都在硬盘中存取。Mercator为最近访问的URL建立了缓存,该缓存的命中率达到了85%。Mercator证明了使用JAVA语言也可以达到较高的性能。InternetAchieve采用多个机器共同搜集页面。每个Crawler进程负责收集64个Web网站的网页。Crawler从初始的URL库中读取,采用异步I/O并行爬行网页。网页下载后,提取出超链接。如果超链接属于本Crawler负责收集的Web站点,则加入未访问URL集合,否则存储到交叉的URL文件中。批处理模块定期分配这些交叉URL文件到相应的搜集模块,再次过程中要过滤到重复的URL。现有技术缺点:针对开源大型爬虫,大多没有一个成型的可自定义的分布式调度;传统设计方式存在时延长、不能大数据化的弊端。
技术实现思路
针对现有技术中上述的不足,本专利技术提供一种基于内存数据库的分布式爬虫框架及实现方法,本专利技术的分布式爬虫的实现方法内存使用可控,不会随着URL不断增加而改变;调度快,在URL不断增加的情况下,不会降低任务调度速率;爬虫高效,分布式多节点爬取,扩展简单、自由度高。为了达到上述目的,本专利技术采用的解决方案是:一种基于内存数据库的分布式爬虫框架及实现方法,所述的分布式爬虫框架包括以下模块:生产者爬虫、消费者爬虫、过滤器以及内存数据库、消息队列、存储介质。所述的分布式爬虫实现方法包括以下步骤:a、根据项目所需要的数据信息,生产者爬虫不断地从网络中提取相应的url地址;b、过滤器将生产者爬虫提取的url进行去重处理;c、内存数据库存储去重处理后的种子url队列,同时存储过滤器的位数组,并且向消费者爬虫调度分配url任务;d、消费者爬虫循环地向内存数据库请求url任务,根据url地址进行实际的数据抓取,抓取数据后将数据保存至存储介质,并且在数据抓取过程中提取出待爬取的url,将爬取的url交给过滤器处理;e、存储介质持久化保存实际数据、存储消费者爬虫抓取的原始数据。进一步地,所述的过滤器采用布隆过滤器。进一步地,所述的布隆过滤器利用布隆过滤算法对url进行判重,如果布隆过滤器判重结果为否,则表示url尚未加入到待抓取的种子url队列中,继而存储到种子url队列;如果布隆过滤器判重结果为是,则表示此url已经存储,直接丢弃。进一步地,所述的Redis集群采用3组4核CPU、8G内存服务器。进一步地,所述的过滤器利用Redis集群的服务器搭建。进一步地,所述的生产者爬虫和消费者爬虫采用若干4核CPU、4G内存服务器。本专利技术的有益效果是:1、由于爬取巨大的数据量和无规则的重复网址导致如何对海量数据进行过滤成为一个难题。如果每条网址都去持久化数据库中查找,效率非常低下,如果存放在内存中,目前还没有生产主机的内存能容纳这么巨量的网址。所以需要采用分布式多爬虫进行协作爬取。而协作过程中的必须保证各消费者爬虫之间爬取任务的唯一性,因此任务调度过程中,利用过滤器将生产者爬虫提取的url进行去重处理,避免对数据的重复提取。2、由于网络请求的url数据量会不断增涨,而为了url去重则很可能导致去重所需的存储成本不断增加,继而导致更多的连带问题。所以控制去重所需的存储成本亦是爬虫框架稳定与否的关键。利用布隆过滤器即可既保证去重准确率达到99.9%以上,又能有效地控制用来去重所需要的存储成本。3、为了能够保证高效的分配任务,保证各消费者爬虫获取任务url的速度。利用Redis内存数据库存储任务url,极大限度的提高消费者爬虫获取任务url的速率。4、由于爬虫最终目地在于保存爬取的数据,所以数据的存储方案也必须考虑各种瓶颈:存储效率、存储空间、以及存储的安全。选择日志服务作为存储介质,可以保证数据存储效率,以及省去维护成本,并且爬虫抓取的原始数据非常安全。附图说明图1为本专利技术的基于内存数据库的分布式爬虫框架的系统结构图。图2为本专利技术的基于内存数据库的分布式爬虫框架的系统模块图。图3为本专利技术的过滤器的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面对本专利技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。以下结合附图对本专利技术作进一步描述:参照附图1-附图3,本专利技术提供一种基于内存数据库的分布式爬虫框架及实现方法,所述的分布式爬虫框架包括以下模块:生产者爬虫、消费者爬虫、过滤器以及内存数据库、消息队列、存储介质;本实施例中,以Redis做为内存数据库,以RabbitMQ做为消息队列,以Loghub做为存储介质。利用过滤器将生产者爬虫提取的url进行去重处理,避免对数据的重复提取。使用RabbitMQ做为消息队列,可以保证生产出来的任务url不会丢失,并且可以解决多生产者之间协作问题。利用Redis内存数据库存储任务url,极大限度的提高消费者爬虫获取任务url的速率。选择日志服务作为存储介质,可以保证数据存储效率,以及省去维护成本,并且爬虫抓取的原始数据非常安全。所本文档来自技高网
...
一种基于内存数据库的分布式爬虫框架及实现方法

【技术保护点】
一种基于内存数据库的分布式爬虫框架及实现方法,其特征是:所述的分布式爬虫框架包括以下模块:生产者爬虫、消费者爬虫、过滤器以及内存数据库、消息队列、存储介质;所述的分布式爬虫实现方法包括以下步骤:a、根据项目所需要的数据信息,生产者爬虫不断地从网络中提取相应的url地址;b、过滤器将生产者爬虫提取的url进行去重处理;c、内存数据库存储去重处理后的种子url队列,同时存储过滤器的位数组,并且向消费者爬虫调度分配url任务;d、消费者爬虫循环地向内存数据库请求url任务,根据url地址进行实际的数据抓取,抓取数据后将数据保存至存储介质,并且在数据抓取过程中提取出待爬取的url,将爬取的url交给过滤器处理;e、存储介质持久化保存实际数据、存储消费者爬虫抓取的原始数据。

【技术特征摘要】
1.一种基于内存数据库的分布式爬虫框架及实现方法,其特征是:所述的分布式爬虫框架包括以下模块:生产者爬虫、消费者爬虫、过滤器以及内存数据库、消息队列、存储介质;所述的分布式爬虫实现方法包括以下步骤:a、根据项目所需要的数据信息,生产者爬虫不断地从网络中提取相应的url地址;b、过滤器将生产者爬虫提取的url进行去重处理;c、内存数据库存储去重处理后的种子url队列,同时存储过滤器的位数组,并且向消费者爬虫调度分配url任务;d、消费者爬虫循环地向内存数据库请求url任务,根据url地址进行实际的数据抓取,抓取数据后将数据保存至存储介质,并且在数据抓取过程中提取出待爬取的url,将爬取的url交给过滤器处理;e、存储介质持久化保存实际数据、存储消费者爬虫抓取的原始数据。2.根据权利要...

【专利技术属性】
技术研发人员:尹学渊罗剑锋何林
申请(专利权)人:成都嗨翻屋文化传播有限公司
类型:发明
国别省市:四川,51

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

1