分布式Java爬虫_JLiteSpider:一个轻量级的分布式java爬虫框架

JLiteSpider

A lite distributed Java spider framework.

这是一个轻量级的分布式java爬虫框架

特点

这是一个强大,但又轻量级的分布式爬虫框架。jlitespider天生具有分布式的特点,各个worker之间需要通过一个或者多个消息队列来连接。消息队列我的选择是rabbitmq。worker和消息之间可以是一对一,一对多,多对一或多对多的关系,这些都可以自由而又简单地配置。消息队列中存储的消息分为四种:url,页面源码,解析后的结果以及自定义的消息。同样的,worker的工作也分为四部分:下载页面,解析页面,数据持久化和自定义的操作。

用户只需要在配置文件中,规定好worker和消息队列之间的关系。接着在代码中,定义好worker的四部分工作。即可完成爬虫的编写。

总体的使用流程如下:

启动rabbitmq。

在配置文件中定义worker和消息队列之间的关系。

在代码中编写worker的工作。

最后,启动爬虫。

安装

使用maven:

com.github.luohaha

jlitespider

0.4.1

直接下载jar包:

点击下载。

Worker和消息队列之间关系

worker和消息队列之间的关系可以是一对一,多对一,一对多,多对多,都是可以配置的。在配置文件中,写上要监听的消息队列和要发送的消息队列。例如:

{

"workerid" : 2,

"mq" : [{

"name" : "one",

"host" : "localhost",

"port" : 5672,

"qos" : 3 ,

"queue" : "url"

},

{

"name" : "two",

"host" : "localhost",

"port" : 5672,

"qos" : 3 ,

"queue" : "hello"

}],

"sendto" : ["two"],

"recvfrom" : ["one", "two"]

}

workerid : worker的id号

mq : 各个消息队列所在的位置,和配置信息。name字段为这个消息队列的唯一标识符,供消息队列的获取使用。host为消息队列所在的主机ip,port为消息队列的监听端口号(rabbitmq中默认为5672)。qos为消息队列每次将消息发给worker时的消息个数。queue为消息队列的名字。host+port+queue可以理解为是消息队列的唯一地址。

sendto : 要发送到的消息队列,填入的信息为mq中的name字段中的标识符。

recvfrom : 要监听的消息队列,消息队列会把消息分发到这个worker中。填入的信息同样为mq中的name字段中的标识符。

消息的设计

在消息队列中,消息一共有四种类型。分别是url,page,result和自定义类型。在worker的程序中,可以通过messagequeue的四种方法(sendUrl, sendPage, sendResult, send)来插入消息。worker的downloader会处理url消息,processor会处理page消息,saver会处理result消息,freeman会处理所有的自定义的消息。我们所要做的工作,就是实现好worker中的这四个函数。

Worker接口的设计

JLiteSpider将整个的爬虫抓取流程抽象成四个部分,由四个接口来定义。分别是downloader,processor,saver和freeman。它们分别处理上述提到的四种消息。

你所需要做的是,实现这个接口,并将想要抓取的url链表返回。具体的实现细节,可以由你高度定制。

1. Downloader:

这部分实现的是页面下载的任务,将想要抓取的url链表,转化(下载后存储)为相应的页面数据链表。

接口设计如下:

public interface Downloader {

/**

* 下载url所指定的页面。

* @param url

* 收到的由消息队列传过来的消息

* @param mQueue

* 提供把消息发送到各个消息队列的方法

* @thr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值