Crawlab 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Crawlab 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Crawlab 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Crawlab 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Crawlab 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

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)

加载中
不限制语言的爬虫比赛!拿37000元现金大奖! 👉 https://jinshuju.net/f/ivkDfF 冲鸭!
2020/06/24 16:55
回复
举报
有测试演示网站吗?想体验下
2020/05/02 15:23
回复
举报
https://demo.crawlab.cn
2020/05/13 20:15
回复
举报
可以更新一下文档么,gitee已经迁移了,最近更新比较频繁
2020/01/07 08:14
回复
举报
不错 有时间学习下
2019/12/04 12:29
回复
举报
不错的,我试试适配下c#的爬虫怎么样.
2019/10/04 08:31
回复
举报
试了C#的爬虫后,怎么样,可以集成吗?
2020/03/04 15:11
回复
举报
不错
2019/09/05 07:51
回复
举报
fork啦
2019/08/23 20:07
回复
举报
更多评论
发表了资讯
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
29
发表了资讯
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
20
发表了资讯
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
23
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2020/04/02 15:48

Crawlab尝试

- 官方: https://docs.crawlab.cn/ https://github.com/crawlab-team/crawlab - Crawlab配置 ````1.配置Crawlab Windows 安装 docker: https://www.docker.com/products/docker-desktop 安装python环境: 我选 Pycharm+Anaconda 安装docker-compose: pip install docker-compose 创建项目文件:docker-compose.yml 启动: docker-compose up -d 测试服务: http://localhost:8080/ ```` ![](https://oscimg.oschina.net/oscnet/up-...

0
0
2020/07/15 19:35

Crawlab准备之python+scrapy环境搭建

阅读文本大概需要3分钟。 上篇《分布式爬虫管理平台Crawlab开发搭建》把爬虫的管理后台搭建起来了;捣鼓一番发现要真正爬取数据还有下不少的功夫。这篇看看怎么搭建python+scrapy环境。 0x01:安装Python3 下载python安装包,具体版本根据自己的系统要求 https://www.python.org/downloads/windows/ 下载安装完成后直接cmd输入python,可正常查看版本 注:安装过程中请注意一定要请勾选pip安装并加入到环境变量中,否则后续无法...

0
0
发表于服务端专区
2020/02/04 09:43

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

## 前言 本次修复主要集中在 Bug 修复和一些必要的优化。 ## 更新日志 ### 功能 / 优化 - **交互式教程**. 引导用户了解 Crawlab 的主要功能. - **加入全局环境变量**. 可以设置全局环境变量,然后传入到所有爬虫程序中. [#177](https://github.com/crawlab-team/crawlab/issues/177) - **项目**. 允许用户将爬虫关联到项目上. [#316](https://github.com/crawlab-team/crawlab/issues/316) - **示例爬虫**. 当初始化时,自动加...

0
0
发表于服务端专区
2020/02/14 11:15

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

## 前言 本次更新主要集中在日志管理、任务触发、爬虫展示等优化,以及加入 Node.js SDK。 ## 更新日志 ### 功能 / 优化 - **Node.js SDK**. 用户可以将 SDK 应用到他们的 Node.js 爬虫中. - **日志管理优化**. 日志搜索,错误高亮,自动滚动. - **任务执行流程优化**. 允许用户在触发任务后跳转到该任务详情页. - **任务展示优化**. 在爬虫详情页的最近任务表格中加入了“参数”列. [#295](https://github.com/crawlab-team/cr...

0
0
2020/11/28 17:12

Crawlab运行程序报错 Traceback (most recent call last):

首先代码上传到Crawlab,然后运行,就给我报错了。但本地没问题,让人很头疼 怎么办那。是json这块出了问题 使用这个方法 把json.dumps改json_util.dumps就行 from bson import json_util json_util.dumps(data) 如果对你的问题有帮助,记得三联啊 本文分享 CSDN - 风启新尘。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

0
0
发表于软件架构专区
2019/09/16 13:23

爬虫平台Crawlab核心原理--分布式架构

背景 Crawlab自第一版发布已经几个月了,其中经历了好几次迭代:版本从v0.1到了v0.3.0;后端语言从Python到了Golang;从最初使用Celery作为任务调度引擎,到自己开发分布式任务调度引擎;从只能运行自定义爬虫到可以运行可配置爬虫(虽然还没迁移到最新版本);从手动部署爬虫到自动部署爬虫;从自己搭建环境到Docker部署;从手动执行任务到定时任务;等等(详情见CHANGELOG)。在使用者们的反馈下,Crawlab爬虫平台也逐渐变得稳...

0
0
发表于开发技能专区
2019/09/17 16:59

爬虫平台Crawlab核心原理--分布式架构

背景 Crawlab自第一版发布已经几个月了,其中经历了好几次迭代:版本从v0.1到了v0.3.0;后端语言从Python到了Golang;从最初使用Celery作为任务调度引擎,到自己开发分布式任务调度引擎;从只能运行自定义爬虫到可以运行可配置爬虫(虽然还没迁移到最新版本);从手动部署爬虫到自动部署爬虫;从自己搭建环境到Docker部署;从手动执行任务到定时任务;等等(详情见CHANGELOG)。在使用者们的反馈下,Crawlab爬虫平台也逐渐变得稳...

0
1
2020/07/11 21:47

分布式爬虫管理平台Crawlab开发搭建

阅读文本大概需要3分钟。 分布式爬虫管理平台Crawlab发现挺不错,但是官方文档中涉及二次开发的环境启动章节比较模糊。 最先需要的是克隆代码 https://github.com/nickliqian/crawlab 前端部署 1、安装node(网上node下载即可) 2、安装基本依赖 cmd窗口使用administrator用户运行执行: npm install --global --production windows-build-tools npm install -g node-gyp npm install -g yarn   npm install nod...

0
0
发表了博客
2020/07/16 09:27

Crawlab Lite 正式发布,更轻量的爬虫管理平台

Crawlab 是一款基于 Golang 的分布式爬虫管理平台,产品发布已经一年有余,经过开发团队的不断打磨,即将迭代到 v0.5 版本。在这期间我们为 Crawlab 加入了大量社区用户共同期望的功能,使产品更加专业。但与此同时我们也注意到,部分用户并不是分布式爬虫用户,他们更多只是在单机情况下使用 Crawlab。其次目前 Crawlab 逐步加入了丰富的功能,也使整个产品逐渐巨化,大部分用户并不能充分使用所有的功能。 因此 Crawlab Lite...

0
0
发表了博客
2020/07/16 09:23

Crawlab Lite 正式发布,更轻量的爬虫管理平台

Crawlab 是一款基于 Golang 的分布式爬虫管理平台,产品发布已经一年有余,经过开发团队的不断打磨,即将迭代到 v0.5 版本。在这期间我们为 Crawlab 加入了大量社区用户共同期望的功能,使产品更加专业。但与此同时我们也注意到,部分用户并不是分布式爬虫用户,他们更多只是在单机情况下使用 Crawlab。其次目前 Crawlab 逐步加入了丰富的功能,也使整个产品逐渐巨化,大部分用户并不能充分使用所有的功能。 因此 Crawlab Lite...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
9 评论
431 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部