Crawlab 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Crawlab 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Crawlab 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 BSD
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
所属分类 应用工具网络爬虫
开源组织
地区 国产
投 递 者 红薯
适用人群 未知
收录时间 2019-08-20

软件简介

Crawlab 是一个使用 Golang 开发的分布式爬虫管理平台,支持Python、NodeJS、Go、Java、PHP等多种编程语言以及多种爬虫框架。

安装

三种方式:

  1. Docker(推荐)
  2. 直接部署(了解内核)

要求(Docker)

  • Docker 18.03+
  • Redis
  • MongoDB 3.6+

要求(直接部署)

  • Go 1.12+
  • Node 8.12+
  • Redis
  • MongoDB 3.6+

运行

Docker

运行主节点示例。192.168.99.1是在Docker Machine网络中的宿主机IP地址。192.168.99.100是Docker主节点的IP地址。

docker run -d --rm --name crawlab \
        -e CRAWLAB_REDIS_ADDRESS=192.168.99.1 \
        -e CRAWLAB_MONGO_HOST=192.168.99.1 \
        -e CRAWLAB_SERVER_MASTER=Y \
        -e CRAWLAB_API_ADDRESS=192.168.99.100:8000 \
        -e CRAWLAB_SPIDER_PATH=/app/spiders \
        -p 8080:8080 \
        -p 8000:8000 \
        -v /var/logs/crawlab:/var/logs/crawlab \
        tikazyq/crawlab:0.3.0

当然也可以用docker-compose来一键启动,甚至不用配置MongoDB和Redis数据库,当然我们推荐这样做。在当前目录中创建docker-compose.yml文件,输入以下内容。

version: '3.3'
services:
  master: 
    image: tikazyq/crawlab:latest
    container_name: master
    environment:
      CRAWLAB_API_ADDRESS: "localhost:8000"
      CRAWLAB_SERVER_MASTER: "Y"
      CRAWLAB_MONGO_HOST: "mongo"
      CRAWLAB_REDIS_ADDRESS: "redis"
    ports:    
      - "8080:8080" # frontend
      - "8000:8000" # backend
    depends_on:
      - mongo
      - redis
  mongo:
    image: mongo:latest
    restart: always
    ports:
      - "27017:27017"
  redis:
    image: redis:latest
    restart: always
    ports:
      - "6379:6379"

然后执行以下命令,Crawlab主节点+MongoDB+Redis就启动了。打开http://localhost:8080就能看到界面。

docker-compose up

Docker部署的详情,请见相关文档

直接部署

请参考相关文档

截图

登录

首页

节点列表

节点拓扑图

爬虫列表

爬虫概览

爬虫分析

爬虫文件

任务详情 - 抓取结果

定时任务

架构

Crawlab的架构包括了一个主节点(Master Node)和多个工作节点(Worker Node),以及负责通信和数据储存的Redis和MongoDB数据库。

前端应用向主节点请求数据,主节点通过MongoDB和Redis来执行任务派发调度以及部署,工作节点收到任务之后,开始执行爬虫任务,并将任务结果储存到MongoDB。架构相对于v0.3.0之前的Celery版本有所精简,去除了不必要的节点监控模块Flower,节点监控主要由Redis完成。

主节点

主节点是整个Crawlab架构的核心,属于Crawlab的中控系统。

主节点主要负责以下功能:

  1. 爬虫任务调度
  2. 工作节点管理和通信
  3. 爬虫部署
  4. 前端以及API服务
  5. 执行任务(可以将主节点当成工作节点)

主节点负责与前端应用进行通信,并通过Redis将爬虫任务派发给工作节点。同时,主节点会同步(部署)爬虫给工作节点,通过Redis和MongoDB的GridFS。

工作节点

工作节点的主要功能是执行爬虫任务和储存抓取数据与日志,并且通过Redis的PubSub跟主节点通信。通过增加工作节点数量,Crawlab可以做到横向扩展,不同的爬虫任务可以分配到不同的节点上执行。

MongoDB

MongoDB是Crawlab的运行数据库,储存有节点、爬虫、任务、定时任务等数据,另外GridFS文件储存方式是主节点储存爬虫文件并同步到工作节点的中间媒介。

Redis

Redis是非常受欢迎的Key-Value数据库,在Crawlab中主要实现节点间数据通信的功能。例如,节点会将自己信息通过HSET储存在Redis的nodes哈希列表中,主节点根据哈希列表来判断在线节点。

前端

前端是一个基于Vue-Element-Admin的单页应用。其中重用了很多Element-UI的控件来支持相应的展示。

与其他框架的集成

爬虫任务本质上是由一个shell命令来实现的。任务ID将以环境变量CRAWLAB_TASK_ID的形式存在于爬虫任务运行的进程中,并以此来关联抓取数据。另外,CRAWLAB_COLLECTION是Crawlab传过来的所存放collection的名称。

在爬虫程序中,需要将CRAWLAB_TASK_ID的值以task_id作为可以存入数据库中CRAWLAB_COLLECTION的collection中。这样Crawlab就知道如何将爬虫任务与抓取数据关联起来了。当前,Crawlab只支持MongoDB。

集成Scrapy

以下是Crawlab跟Scrapy集成的例子,利用了Crawlab传过来的task_id和collection_name。

import os
from pymongo import MongoClient

MONGO_HOST = '192.168.99.100'
MONGO_PORT = 27017
MONGO_DB = 'crawlab_test'

# scrapy example in the pipeline
class JuejinPipeline(object):
    mongo = MongoClient(host=MONGO_HOST, port=MONGO_PORT)
    db = mongo[MONGO_DB]
    col_name = os.environ.get('CRAWLAB_COLLECTION')
    if not col_name:
        col_name = 'test'
    col = db[col_name]

    def process_item(self, item, spider):
        item['task_id'] = os.environ.get('CRAWLAB_TASK_ID')
        self.col.save(item)
        return item

与其他框架比较

现在已经有一些爬虫管理框架了,因此为啥还要用Crawlab?

因为很多现有当平台都依赖于Scrapyd,限制了爬虫的编程语言以及框架,爬虫工程师只能用scrapy和python。当然,scrapy是非常优秀的爬虫框架,但是它不能做一切事情。

Crawlab使用起来很方便,也很通用,可以适用于几乎任何主流语言和框架。它还有一个精美的前端界面,让用户可以方便的管理和运行爬虫。

框架 类型 分布式 前端 依赖于Scrapyd
Crawlab 管理平台 Y Y N
ScrapydWeb 管理平台 Y Y Y
SpiderKeeper 管理平台 Y Y Y
Gerapy 管理平台 Y Y Y
Scrapyd 网络服务 Y N N/A

Q&A

1. 为何我访问 http://localhost:8080 提示访问不了?

假如您是Docker部署的,请检查一下您是否用了Docker Machine,这样的话您需要输入地址 http://192.168.99.100:8080才行。

另外,请确保您用了-p 8080:8080来映射端口,并检查宿主机是否开放了8080端口。

2. 我可以看到登录页面了,但为何我点击登陆的时候按钮一直转圈圈?

绝大多数情况下,您可能是没有正确配置CRAWLAB_API_ADDRESS这个环境变量。这个变量是告诉前端应该通过哪个地址来请求API数据的,因此需要将它设置为宿主机的IP地址+端口,例如 192.168.0.1:8000。接着,重启容器,在浏览器中输入宿主机IP+端口,就可以顺利登陆了。

请注意,8080是前端端口,8000是后端端口,您在浏览器中只需要输入前端的地址就可以了,要注意区分。

3. 在爬虫页面有一些不认识的爬虫列表,这些是什么呢?

这些是demo爬虫,如果需要添加您自己的爬虫,请将您的爬虫文件打包成zip文件,再在爬虫页面中点击添加爬虫上传就可以了。

注意,Crawlab将取文件名作为爬虫名称,这个您可以后期更改。另外,请不要将zip文件名设置为中文,可能会导致上传不成功。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(9) 发布并加入讨论🔥
发表了资讯
2023/07/26 16:15

爬虫管理平台 Crawlab v0.6.3 正式发布

概览 Crawlab v0.6.3 是 Crawlab v0.6.x 的最新迭代版本,带来了一系列改进,包括问题修复、功能优化。 更新日志 问题修复 取消任务时无法终止进程 Git拉取代码错误 导出列表顺序不一致 重启时无法重置待定任务状态 节点下线时无法取消任务 爬虫列表中无法加载节点数据 导出数据乱码问题 功能优化 爬虫文件导出 调整任务获取时间为1秒 FileDriver关闭时异常捕获 自动清理30天以前任务 首页数据查询优化 消息通知优化 升级Gin版本...

0
6
发表了资讯
2023/06/17 12:14

爬虫管理平台 Crawlab v0.6.2 正式发布

概览 Crawlab v0.6.2 是 Crawlab v0.6.x 的最新迭代版本,带来了一系列改进,包括问题修复、功能优化以及环境变量功能的增强。 更新日志 问题修复 意外数据库连接 任务执行命令不生效 任务重启执行命令不一致 任务队列不一致问题 无法更新Cron表达式 节点禁用后仍然运行任务 未返回任务ID 无法下载JSON数据 无法启动SeaweedFS 任务MaxRunners设置错误 去重不生效 长日志导致任务卡住 无法监控数据源状态 Git拉取错误 当爬虫不存...

0
13
发表了资讯
2022/10/24 13:14

爬虫管理平台 Crawlab v0.6.0 专业版正式发布

专业版 爬虫管理平台 Crawlab v0.6.0 专业版(Pro)已正式发布。这个版本主要基于最新的社区版 Crawlab v0.6.0 进行了大量优化,包括性能监控(CPU、内存、磁盘等)、数据集成(MySQL、SQL Server、ElasticSearch 等)、权限管理,更适合企业生产环境。 功能对比 Crawlab 专业版相对于社区版来说,多了部分实用功能。例如「性能监控」,可以帮助用户随时掌握节点性能信息,能够提前预警因性能问题带来的风险;另一个实用功能是「...

0
6
发表了资讯
2022/05/23 09:46

分布式爬虫管理平台 Crawlab v0.6.0 社区版正式发布

概览 作为一个重要版本发布,Crawlab v0.6.0 由一些重大的功能升级组成,包括性能、稳定性、健壮性、易用性方面的大量优化。本次版本将比老版本更加健壮,特别是任务执行、文件同步、节点通信上面。 新版本截图 主页 节点列表页 爬虫列表页 爬虫文件编辑 任务列表 任务日志 任务数据 创建定时任务 Git 日志 依赖安装 爬虫助手插件 自定义列表 更新日志 后端 「文件同步」. 将文件同步从原先的 MongoDB GridFS 迁移到分布式文件系...

0
26
发表了资讯
2021/12/24 18:23

爬虫管理平台 Crawlab v0.6.0 Beta 3 版本发布

分布式爬虫管理平台 Crawlab v0.6.0 Beta (20211224) 版本发布 概览 这是下个重大版本 v0.6.0 的第三次 beta 发布。伴随着更多功能和优化,正式版本 v0.6.0 将会很快发布了。 升级优化 [x] 「国际化」. 支持中文. [x] 「命令行工具上传爬虫」. #1020 [x] 「官方插件」. 允许用户在 Crawlab 用户界面上安装 官方插件. [x] 「更多文档」. 加入了关于插件和命令行工具的文档. Bug 修复 [x] 「上传文件问题」 #990 #1014 #1022 [x]...

0
6
发表了资讯
2021/11/20 21:50

爬虫管理平台 Crawlab v0.6.0 Beta 2 版本发布

更新日志 (v0.6.0-beta.20211120) 概览 这是下个重大版本 v0.6.0 的第二次 beta 发布(参考 第一次 beta 版本)。伴随着更多功能和优化,正式版本 v0.6.0 将会很快发布了。 升级优化 后端 [x] 插件框架. Crawlab 插件框架 (CPF) 已发布. 详情请参考 这里. [x] Git 集成. Git 集成被作为内置功能. [x] Scrapy 集成. Scrapy 集成以插件形式存在,插件为 spider-assistant. [x] 依赖集成. Dependency 集成以插件形式存在,插件为 de...

2
13
发表了资讯
2021/08/04 16:19

爬虫管理平台 Crawlab v0.6.0 Beta 版本发布

概览 Crawlab 基于 Golang 的分布式爬虫管理平台,支持多种编程语言以及多种爬虫框架。此次发布的是下一个正式版本 v0.6.0 的 beta 版本。不推荐将此 beta 版本用作生产环境中,因为它还没有被全面测试,也不足够稳定。另外,一些实用功能(例如 Git、Scrapy、消息通知)不计划在此 beta 版本发布,它们将以插件形式被整合进正式版本。 升级优化 作为一个重要版本发布,Crawlab v0.6(包括 beta 版本)由一些重大的功能升级组成...

0
15
发表了资讯
2020/07/31 14:20

爬虫管理平台 Crawlab v0.5.1 正式发布

前言 本次更新包括几个部分: 大量 Bug 修复 加入 Chrome Driver、Firefox 安装脚本 加入 Golang 安装脚本 支持系统任务 更新日志 功能 / 优化 加入错误详情信息. 加入 Golang 编程语言支持. 加入 Chrome Driver 和 Firefox 的 Web Driver 安装脚本. 支持系统任务. "系统任务"跟普通爬虫任务相似,允许用户查看诸如安装语言之类的任务日志. 将安装语言从 RPC 更改为系统任务. Bug 修复 修复在爬虫市场中第一次下载爬虫时会报500...

4
30
发表了资讯
2020/07/19 19:12

爬虫管理平台 Crawlab v0.5.0 正式发布

前言 本次更新包括几个部分: 爬虫市场 批量操作 数据库底层优化 更新日志 功能 / 优化 爬虫市场. 允许用户下载开源爬虫到 Crawlab. 批量操作. 允许用户与 Crawlab 批量交互,例如批量运行任务、批量删除爬虫等等. 迁移 MongoDB 驱动器至 MongoDriver. 重构优化节点逻辑代码. 更改默认 task.workers 至 16. 更改默认 nginx client_max_body_size 为 200m. 支持写日志到 ElasticSearch. 在 Scrapy 页面展示错误详情. 删除挑战页面...

1
28
发表了资讯
2020/04/21 15:11

爬虫管理平台 Crawlab v0.4.10 发布

前言 本次更新包括几个部分: 日志集中管理 自动安装依赖 开放 API Web Hook 自动生成结果集 更新日志 功能 / 优化 优化日志管理. 集中化管理日志,储存在 MongoDB,减少对 PubSub 的依赖,允许日志异常检测. 自动安装依赖. 允许从 requirements.txt 和 package.json 自动安装依赖. API Token. 允许用户生成 API Token,并利用它们来集成到自己的系统中. Web Hook. 当任务开始或结束时,触发 Web Hook http 请求到预定义好的 UR...

0
19
发表了资讯
2020/03/31 11:23

爬虫管理平台 Crawlab v0.4.9 发布

前言 本次更新包括几个部分: 更高级的权限管理 趣味挑战 可配置爬虫转化自定义爬虫 结果去重 任务重试 更新日志 功能 / 优化 挑战. 用户可以完成不同的趣味挑战.. 更高级的权限控制. 更细化的权限管理,例如普通用户只能查看或管理自己的爬虫或项目,而管理用户可以查看或管理所有爬虫或项目. 反馈. 允许用户发送反馈和评分给 Crawlab 开发组. 更好的主页指标. 优化主页上的指标展示. 可配置爬虫转化为自定义爬虫. 用户可以将自...

6
23
发表了资讯
2020/03/11 18:35

爬虫管理平台 Crawlab v0.4.8 发布

前言 本次更新包括几个部分: 支持界面安装(预装)Python 以外的多种语言环境 更好的安装界面,可以看到多个节点的安装情况 优化 RPC,基于 Redis 延迟队列作为 RPC 更多功能配置 更新日志 功能 / 优化 支持更多编程语言安装:现在用户可以安装或预装更多的编程语言,包括 Java、.Net Core、PHP. 安装 UI 优化:用户能够更好的查看和管理节点列表页的安装. 更多 Git 支持:允许用户查看 Git Commits 记录,并 Checkout 到相应 ...

2
34
发表了资讯
2020/02/24 15:30

爬虫管理平台 Crawlab v0.4.7 发布

前言 本次更新包括几个部分: 更好的支持 Scrapy 爬虫 支持 Git 仓库同步 支持长任务 更好的爬虫管理 更新日志 功能 / 优化 更好的支持 Scrapy. 爬虫识别,settings.py 配置,日志级别选择,爬虫选择. #435 Git 同步. 允许用户将 Git 项目同步到 Crawlab. 长任务支持. 用户可以添加长任务爬虫,这些爬虫可以跑长期运行的任务. 425 爬虫列表优化. 分状态任务列数统计,任务列表详情弹出框,图例. 425 版本升级检测. 检测最新版本...

1
37
发表了资讯
2020/02/14 09:56

爬虫管理平台 Crawlab v0.4.6 发布

前言 本次更新主要集中在日志管理、任务触发、爬虫展示等优化,以及加入 Node.js SDK。 更新日志 功能 / 优化 Node.js SDK. 用户可以将 SDK 应用到他们的 Node.js 爬虫中. 日志管理优化. 日志搜索,错误高亮,自动滚动. 任务执行流程优化. 允许用户在触发任务后跳转到该任务详情页. 任务展示优化. 在爬虫详情页的最近任务表格中加入了“参数”列. #295 爬虫列表优化. 在爬虫列表页加入"更新时间"和"创建时间". #505 页面加载占位...

0
27
发表了资讯
2020/02/05 12:48

爬虫管理平台 Crawlab v0.4.5 发布

前言 本次修复主要集中在 Bug 修复和一些必要的优化。 更新日志 功能 / 优化 交互式教程. 引导用户了解 Crawlab 的主要功能. 加入全局环境变量. 可以设置全局环境变量,然后传入到所有爬虫程序中. #177 项目. 允许用户将爬虫关联到项目上. #316 示例爬虫. 当初始化时,自动加入示例爬虫. #379 用户管理优化. 限制管理用户的权限. #456 设置页面优化. 任务结果页面优化. Bug 修复 无法找到爬虫文件错误. #485 点击删除按钮导致跳...

0
22
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
9 评论
481 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部