WebCollector源码分析

2021-01-24  本文已影响0人  with_dream

WebCollector 一个java爬虫框架
2020年1月25日

https://github.com/CrawlScript/WebCollector

WebCollector.jpg

代码框架

基类为Crawler 内部管理DBManager(数据存储)和Fetcher(线程调度)

分为四个流程:

一、内存管理

内部使用java集合和RocksDB
RocksDB 内嵌nosql数据库
所以不支持分布式

二、线程调度

在Fetcher中 直接创建FetcherThread数组执行线程

QueueFeeder从队列中通过轮询获取任务 存放在FetchQueue中
FetcherThread从FetchQueue中获取任务执行具体操作
FetchQueue使用BlockingQueue应该更好
构成生产消费者模式

然后将任务回调到AutoParseCrawler.extcute中
执行网络请求 将请求结果分发给具体的子类实现方法
分发给Visitor的注解方法 方法内具体实现由开发者控制

三、网络请求

定义了Requester接口
默认使用Okhttp3实现

总结

使用注解+反射的方式回调方法 更加灵活

QueueFeeder/FetcherThread构成生产消费者是个不错的选择

线程控制实现不太好 直接定义了50个线程 一条线程完成从请求到存储的一条龙服务

上一篇下一篇

猜你喜欢

热点阅读