java爬虫框架哪个好_java爬虫框架的使用

原标题:java爬虫框架的使用

9ae02b6db84472c42a71bd4c76acbbb3.png

随着互联网的发展,编程程序语言也开始被越来越多的人所掌握,但是自始至终,java语言一直是被使用范围最广的编程语言。今天,武汉中软国际主要给大家讲解的是java语言中的爬虫java框架结构是怎么使用和编写的。

消息的设计

在消息队列中,消息一共有四种类型。分别是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

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

* @throws IOException

*/

public void download(Object url, Map mQueue) throws IOException;

}

你同样可以实现这个接口,具体的实现可由你自由定制,只要实现 download 函数。 url 是消息队列推送过来的消息,里面不一定是一条 url ,具体是什么内容,是由你当初传入消息队列时决定的。 mQueue 提供了消息发送到各个消息队列的方法,通过 mQueue.get("...") 选取消息队列,然后执行messagequeue的四种方法(sendUrl, sendPage, sendResult, send)来插入消息。

2. Processor:

Processor 是解析器的接口,这里会从网页的原始文件中提取出有用的信息。

接口设计:

public interface Processor{

/**

* 处理下载下来的页面源代码

* @param page

* 消息队列推送过来的页面源代码数据消息

* @param mQueue

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

* @throws IOException

*/

public void process(Object page, Map mQueue) throws IOException;

}

实现这个接口,完成对页面源码的解析处理。 page 是由消息队列推送过来的消息,具体格式同样是由你在传入时决定好的。 mQueue 使用同上。

3. Saver:

Saver 实现的是对解析得到结果的处理,可以将你解析后得到的数据存入数据库,文件等等。或者将url重新存入消息队列,实现迭代抓取。

接口的设计:

public interface Saver {

/**

* 处理最终解析得到的结果

* @param result

* 消息队列推送过来的结果消息

* @param mQueue

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

* @throws IOException

*/

public void save(Object result, Map mQueue) throws IOException;

}

通过实现这个接口,可以完成对结果的处理。你同样可以实现这个接口,具体的实现可由你自由定制,只要实现 download 函数。 result 是消息队列推送过来的结果消息,具体的格式是由你当初传入消息队列时决定的。 mQueue 的使用同上。

4. Freeman:

通过上述的三个流程,可以实现爬虫抓取的一个正常流程。但是 jlitespider 同样提供了自定义的功能,你可以完善,加强,改进甚至颠覆上述的抓取流程。 freeman就是一个处理自定义消息格式的接口,实现它就可以定义自己的格式,以至于定义自己的流程。

接口的设计:

public interface Freeman {

/**

* 自定义的处理函数

* @param key

* key为自定义的消息标记

* @param msg

* 消息队列推送的消息

* @param mQueue

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

* @throws IOException

*/

public void doSomeThing(String key, Object msg, Map mQueue) throws IOException;

}

通过实现 doSomeThing 函数,你就可以处理来自消息队列的自定义消息。 key 为消息的标记, msg 为消息的内容。同样,通过 mQueue 的 send 方法,可以实现向消息队列发送自定义消息的操作。(需要注意,自定义的消息标记不能为: url , page, result 。否则会被认为是 jlitespider 的保留消息,也就是由上述的三个接口函数来处理。)

总结说明

jlitespider 的设计可能会让您有些疑惑,不过等您熟悉这一整套的设计之后,您就会发现 jlitespider 是多么的灵活和易于使用。

责任编辑:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值