基于java的分布式爬虫

分类

分布式网络爬虫包含多个爬虫,每一个爬虫须要完成的任务和单个的爬行器相似,它们从互联网上下载网页,并把网页保存在本地的磁盘,从中抽取URL并沿着这些URL的指向继续爬行。因为并行爬行器须要分割下载任务,可能爬虫会将本身抽取的URL发送给其余爬虫。这些爬虫可能分布在同一个局域网之中,或者分散在不一样的地理位置。git

根据爬虫的分散程度不一样,能够把分布式爬行器分红如下两大类:web

一、基于局域网分布式网络爬虫:这种分布式爬行器的全部爬虫在同一个局域网里运行,经过高速的网络链接相互通讯。这些爬虫经过同一个网络去访问外部互联网,下载网页,全部的网络负载都集中在他们所在的那个局域网的出口上。因为局域网的带宽较高,爬虫之间的通讯的效率可以获得保证;可是网络出口的总带宽上限是固定的,爬虫的数量会受到局域网出口带宽的限制。算法

二、基于广域网分布式网络爬虫:当并行爬行器的爬虫分别运行在不一样地理位置(或网络位置),咱们称这种并行爬行器为分布式爬行器。例如,分布式爬行器的爬虫可能位于中国,日本,和美国,分别负责下载这三地的网页;或者位于CHINANET,CERNET,CEINET,分别负责下载这三个网络的中的网页。分布式爬行器的优点在于能够子在必定程度上分散网络流量,减少网络出口的负载。若是爬虫分布在不一样的地理位置(或网络位置),须要间隔多长时间进行一次相互通讯就成为了一个值得考虑的问题。爬虫之间的通信带宽多是有限的,一般须要经过互联网进行通讯。网络

大型分布式网络爬虫体系结构图

image

分布式网络爬虫是一项十分复杂系统。须要考虑不少方面因素。性能能够说是它这重要的指标。固然硬件层面的资源也是必须的。架构

架构

下面是项目的整体架构,第一个版本基于此方案来作。框架

上面的web层包括:控制台、基本权限、监控展现等,还能够根据须要再一步进行扩展。分布式

核心层由控制者统一调度,将任务发给工人队列中的工人进行爬取操做。各个结点动态的向监控模块发送模块状态等信息,统一由展现层展现。oop

0.1版本架构图

项目目标

众推,开源版的今日头条!性能

基于hadoop思惟的分布式网络爬虫。测试

目前已经将fourinone、jeesite、webmagic整合进来,而且进一步进行改进。想最终作成一个基于设计器的动态可配置的分布式爬虫系统,这个是第一阶段的目标。

项目目前状况

目前项目进展状况:

一、sourceer,能够接入多种数据源,接口已经定义(加入builder封装,可使用简单爬虫)。

二、web架构工程(web工程上传并测试成功,权限、基础框架改造,导入等已经录成视频,删除activiti,删除cms部分)。

三、分布式框架研究(分布式项目分包,添加部分注释,测试单机单工人爬取)。

四、插件化整合。

五、文章等各类去重方式及算法(目前已实现bloomfilter,指纹算法去重,已经实现simhash,分词算法(ansj))。

六、分类器测试(bayes,文本分类单机测试成功)。

项目地址:

(分布式爬虫)http://git.oschina.net/zongtui/zongtui-webcrawler

(去重过滤器)https://git.oschina.net/zongtui/zongtui-filter

(文本分类器)https://git.oschina.net/zongtui/zongtui-classifier

(文档目录)https://git.oschina.net/zongtui/zongtui-doc

项目界面:

启动jetty,目前皮肤暂时还未换。

image

总结

目前项目正在进一步完善当中,但愿能获得你更多的意见!

相关文章
相关标签/搜索