Skip to content
Tony Shen edited this page Apr 4, 2020 · 32 revisions

NetDiscovery

NetDiscovery 是基于 Vert.x、RxJava 2 等开源库实现的爬虫框架。 (最近开始补wiki文档)

Feature:

  • 轻量级爬虫
  • 模块化设计,便于扩展:支持多种消息队列(Disruptor、Redis、Kafka、RabitMQ、RocketMQ)、多种网络框架(Http Client、Okhttp3、Selenium等),也支持自己实现。
  • 支持分布式
  • 多线程、异步化:底层使用 RxJava 2 的多线程机制
  • 支持线程池隔离:爬虫的 Parser、Pipeline 过程可以放在独立的线程池中进行处理
  • 支持 Request 动态添加到正在运行爬虫的 Queue 中
  • 支持 Kotlin 协程
  • 支持 JS 渲染
  • 支持 Request 自定义 header 信息
  • 支持 debug 功能:在调试时 Request 可以打开 debug 的开关,使用 Local Cache(RxCache) 存储请求的结果,从而避免多次请求同一个网页。
  • 支持失败重试的机制
  • 多纬度控制爬取速度(Pipeline、Request、Download、Domain)等等
  • 支持代理池、User Agent 池、Cookies 池
  • 支持爬虫的深度抓取:能够在 Pipeline 中发起深度抓取
  • 支持 URL 去重:使用布隆过滤器
  • 支持 Spider 的监控、SpiderEngine 的监控 (基于Etcd、Zookeeper)
  • agent 模块能够对当前服务器的 CPU 和内存进行实时监控
  • SpiderEngine 整合 Quartz
  • SpiderEngine 提供 http、RPC 接口

NetDiscovery 基本原理:

1. core 模块的 uml 类图

2.单个爬虫基本原理

3.集群原理

4.Monitor原理

Getting Started

Kotlin

Information

  • ChangeLog
Clone this wiki locally