在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:crawlab开源软件地址:https://gitee.com/crawlab-team/crawlab开源软件介绍:Crawlab中文 | English 安装 | 运行 | 截图 | 架构 | 集成 | 比较 | 相关文章 | 社区&赞助 | 更新日志 | 免责声明 基于Golang的分布式爬虫管理平台,支持Python、NodeJS、Go、Java、PHP等多种编程语言以及多种爬虫框架。 查看演示 Demo | 文档 | 文档 (v0.6-beta) 安装三种方式:
要求(Docker)
要求(直接部署)
快速开始请打开命令行并执行下列命令。请保证您已经提前安装了 git clone https://github.com/crawlab-team/examplescd examples/docker/basicdocker-compose up -d 接下来,您可以看看 运行Docker请用 version: '3.3'services: master: image: crawlabteam/crawlab:latest container_name: crawlab_example_master environment: CRAWLAB_NODE_MASTER: "Y" CRAWLAB_MONGO_HOST: "mongo" volumes: - "./.crawlab/master:/root/.crawlab" ports: - "8080:8080" depends_on: - mongo worker01: image: crawlabteam/crawlab:latest container_name: crawlab_example_worker01 environment: CRAWLAB_NODE_MASTER: "N" CRAWLAB_GRPC_ADDRESS: "master" CRAWLAB_FS_FILER_URL: "http://master:8080/api/filer" volumes: - "./.crawlab/worker01:/root/.crawlab" depends_on: - master worker02: image: crawlabteam/crawlab:latest container_name: crawlab_example_worker02 environment: CRAWLAB_NODE_MASTER: "N" CRAWLAB_GRPC_ADDRESS: "master" CRAWLAB_FS_FILER_URL: "http://master:8080/api/filer" volumes: - "./.crawlab/worker02:/root/.crawlab" depends_on: - master mongo: image: mongo:latest container_name: crawlab_example_mongo restart: always 然后执行以下命令,Crawlab主节点、工作节点+MongoDB 就启动了。打开 docker-compose up -d Docker部署的详情,请见相关文档。 直接部署请参考相关文档。 截图登陆页主页节点列表爬虫列表爬虫概览爬虫文件任务日志任务结果定时任务架构Crawlab的架构包括了一个主节点(Master Node)和多个工作节点(Worker Node),以及 SeaweeFS (分布式文件系统) 和 MongoDB 数据库。 前端应用与主节点 (Master Node) 进行交互,主节点与其他模块(例如 MongoDB、SeaweedFS、工作节点)进行通信。主节点和工作节点 (Worker Nodes) 通过 gRPC (一种 RPC 框架) 进行通信。任务通过主节点上的任务调度器 (Task Scheduler) 进行调度分发,并被工作节点上的任务处理模块 (Task Handler) 接收,然后分配到任务执行器 (Task Runners) 中。任务执行器实际上是执行爬虫程序的进程,它可以通过 gRPC (内置于 SDK) 发送数据到其他数据源中,例如 MongoDB。 主节点主节点是整个Crawlab架构的核心,属于Crawlab的中控系统。 主节点主要负责以下功能:
主节点负责与前端应用进行通信,并将爬虫任务派发给工作节点。同时,主节点会同步(部署)爬虫到分布式文件系统 SeaweedFS,用于工作节点的文件同步。 工作节点工作节点的主要功能是执行爬虫任务和储存抓取数据与日志,并且通过Redis的 MongoDBMongoDB是Crawlab的运行数据库,储存有节点、爬虫、任务、定时任务等数据。任务队列也储存在 MongoDB 里。 SeaweedFSSeaweedFS 是开源分布式文件系统,由 Chris Lu 开发和维护。它能在分布式系统中有效稳定的储存和共享文件。在 Crawlab 中,SeaweedFS 主要用作文件同步和日志存储。 前端Frontend app is built upon Element-Plus, a popular Vue 3-based UI framework. It interacts with API hosted on the Master Node, and indirectly controls Worker Nodes. 前端应用是基于 Element-Plus 构建的,它是基于 Vue 3 的 UI 框架。前端应用与主节点上的 API 进行交互,并间接控制工作节点。 与其他框架的集成Crawlab SDK 提供了一些 集成 Scrapy在 ITEM_PIPELINES = { 'crawlab.scrapy.pipelines.CrawlabPipeline': 888,} 然后,启动 Scrapy 爬虫,运行完成之后,您就应该能看到抓取结果出现在 任务详情 -> 数据 里。 通用 Python 爬虫将下列代码加入到您爬虫中的结果保存部分。 # 引入保存结果方法from crawlab import save_item# 这是一个结果,需要为 dict 类型result = {'name': 'crawlab'}# 调用保存结果方法save_item(result) 然后,启动爬虫,运行完成之后,您就应该能看到抓取结果出现在 任务详情 -> 数据 里。 其他框架和语言爬虫任务实际上是通过 shell 命令执行的。任务 ID (Task ID) 作为环境变量 与其他框架比较现在已经有一些爬虫管理框架了,因此为啥还要用Crawlab? 因为很多现有当平台都依赖于Scrapyd,限制了爬虫的编程语言以及框架,爬虫工程师只能用scrapy和python。当然,scrapy是非常优秀的爬虫框架,但是它不能做一切事情。 Crawlab使用起来很方便,也很通用,可以适用于几乎任何主流语言和框架。它还有一个精美的前端界面,让用户可以方便的管理和运行爬虫。
贡献者社区 & 赞助如果您觉得Crawlab对您的日常开发或公司有帮助,请加作者微信 tikazyq1 并注明"Crawlab",作者会将你拉入群。或者,您可以扫下方支付宝二维码给作者打赏去升级团队协作软件或买一杯咖啡。
|
请发表评论