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个线程 一条线程完成从请求到存储的一条龙服务