1. Crawlab 简介:
- Crawlab(参见 https://crawlab.cn/),是一个基于Golang的分布式爬虫管理平台,支持多种编程语言以及多种爬虫框架;
- Crawlab,目前可实现的功能包括定时任务、数据分析、可配置爬虫、SDK、消息通知、Scrapy 支持、Git 同步等;
- Crawlab,主要解决的是大量爬虫管理困难的问题,例如需要监控上百个网站的参杂scrapy和selenium的项目不容易做到同时管理,而且命令行管理的成本非常高,还容易出错;
- Crawlab,支持任何语言和任何框架,配合任务调度、任务监控,很容易做到对成规模的爬虫项目进行有效监控管理。
2. Crawlab 作者团队:
- MarvinZhang89(参见 MarvinZhang89 的简书主页);
- Crawlab Team(参见 Crawlab Team 的Github主页);
3. Crawlab Demo:
-
首页:
image.png -
爬虫列表:
image.png -
爬虫详情 - 概览:
image.png -
任务详情 - 抓取结果:
image.png
4. Crawlab 架构设计:
-
Crawlab 架构图:
image.png -
如上图,Crawlab由五大部分组成:
-- 主节点(Master Node):负责任务派发、API、部署爬虫等;
-- 工作节点(Worker Node):负责执行爬虫任务;
-- MongoDB数据库:存储节点、爬虫、任务等日常运行数据;
-- Redis数据库:储存任务消息队列、节点心跳等信息;
-- 前端客户端:Vue应用,负责前端交互和向后端请求数据; -
执行爬虫任务的大致流程:
1. 前端向主节点发起请求,要求指定在某一工作节点执行任务;
2. 主节点收到该请求,并将任务数据推送到Redis任务队列中;
3. 工作节点持续监听Redis任务队列,并利用LPOP获取任务;
4. 工作节点执行任务,并将结果写回到储存数据库; -
Crawlab 架构详解:
总的来说,可以将主节点看作是Crawlab整体架构的中控系统,理解为Crawlab的大脑;工作节点是实际干活的部分,是Crawlab的运动躯体;MongoDB和Redis是负责通信交流的,可以看作Crawlab的血液和神经网络。这些模块一起构成了一个完整、自洽、相互协作的系统。
如欲了解更多关于 Crawlab 的架构设计,请参考:爬虫平台Crawlab核心原理--分布式架构、 分布式通用爬虫管理平台Crawlab等文章。
5. Crawlab 与其他框架比较
Crawlab使用起来很方便,也很通用,可以适用于几乎任何主流语言和框架。它还有一个精美的前端界面,让用户可以方便的管理和运行爬虫。
框架 | 类型 | 分布式 | 前端 | 依赖于Scrapyd |
---|---|---|---|---|
Crawlab | 管理平台 | Y | Y | N |
Gerapy | 管理平台 | Y | Y | Y |
SpiderKeeper | 管理平台 | Y | Y | Y |
ScrapydWeb | 管理平台 | Y | Y | Y |
Scrapyd | 网络服务 | Y | N | N/A |
网友评论