基于java的分布式爬虫

简介: 分类 分布式网络爬虫包含多个爬虫,每个爬虫需要完成的任务和单个的爬行器类似,它们从互联网上下载网页,并把网页保存在本地的磁盘,从中抽取URL并沿着这些URL的指向继续爬行。由于并行爬行器需要分割下载任务,可能爬虫会将自己抽取的URL发送给其他爬虫。

分类

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

根据爬虫的分散程度不同,可以把分布式爬行器分成以下两大类:

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

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

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

image

分布式网络爬虫是一项十分复杂系统。需要考虑很多方面因素。性能可以说是它这重要的指标。当然硬件层面的资源也是必须的。

架构

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

上面的web层包括:控制台、基本权限、监控展示等,还可以根据需要再一步进行扩展。

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

0.1版本架构图

项目目标

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

基于hadoop思维的分布式网络爬虫。

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

项目目前情况

目前项目进展情况:

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

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

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

4、插件化整合。

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

6、分类器测试(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

总结

目前项目正在进一步完善当中,希望能得到你更多的意见!

目录
相关文章
|
5月前
|
数据采集 安全 数据挖掘
淘宝 API 接口详解:新手入门与开发场景指南
本文通俗解析淘宝API:它是淘宝官方开放的安全接口,支持商品/订单管理、数据服务、物流对接等,助力ERP开发、多店运营、选品分析与自动化营销。新手4步即可上手,合规高效,是电商数字化的核心工具。(239字)
|
数据采集 JavaScript 测试技术
Python爬虫通过selenium自动化抓取淘宝的商品数据
淘宝的页面大量使用了js加载数据,所以采用selenium来进行爬取更为简单,selenum作为一个测试工具,主要配合无窗口浏览器phantomjs来使用。
1536 0
|
人工智能 自然语言处理 机器人
使用OpenAI的Whisper 模型进行语音识别
本文将解释用于训练的数据集的种类以及模型的训练方法,以及如何使用Whisper
3847 0
|
Java 开发工具 Android开发
Android反编译apk
总的来说就是先将apk文件解压,得到.dex文件,然后将.dex文件转为.jar文件,最后将.jar转为.java文件(就是将.jar文件中的.class文件转为.java文件)
985 0
Android反编译apk
|
Java
反编译Apk之使用apktool、apktoolKit、jadx-gui
反编译Apk之使用apktool、apktoolKit、jadx-gui
1611 0
反编译Apk之使用apktool、apktoolKit、jadx-gui
|
数据安全/隐私保护 iOS开发 Ruby
Fastlane-iOS(调研篇)
Fastlane简介 FastLane是一种配置iOS和Android自动化Beta部署和发布的最简单的方法之一。它可以简化一些乏味、单调、重复的工作,像截图、代码签名以及发布App。只需一条命令就可实现从 Xcode 项目到 编译\打包\构建\提交审核。
15769 0
|
Java 开发工具 Docker
微服务架构必读书
谈到微服务,大家众说纷纭,但却很难有一个清晰的概念来描述。微服务不是“银弹”,我理解的微服务是一种文化,而我们要做的就是将微服务的理念运用到实际开发中。经过一系列的技术选型,最终Spring Cloud凭借其成熟的组件、完善的一站式解决方案,最终成为了我们落地微服务的选择。
4914 0
|
Web App开发 监控 应用服务中间件
|
监控 关系型数据库 MySQL