Go 语言开发的超强企业级爬虫管理平台 – Crawlab

Crawlab 是强大的网络爬虫管理平台(WCMP),它能够运行多种编程语言(包括 Python、Go、Node.js、Java、C#)或爬虫框架(包括 Scrapy、Colly、Selenium、Puppeteer)开发的网络爬虫。它能够用来运行、管理和监控网络爬虫,特别是对可溯性、可扩展性以及稳定性要求较高的生产环境。

Go 语言开发的超强企业级爬虫管理平台 - Crawlab

Crawlab 项目自 2019 年 3 月开始一直在不断迭代,并且经历了多次大的更新。它最初是用来解决调度和运行大量爬虫时出现的管理问题。随着大量的优化和新功能加入,Crawlab 越来越受到开发者社区的欢迎,尤其是网路爬虫工程师。

Crawlab 非常适合以下用户使用:

  • 网路爬虫工程师:通过集成爬虫程序到 Crawlab,您可以聚焦于爬虫的核心解析逻辑,从而避免浪费过多时间在开发通用模块上,例如任务队列、存储、日志、消息通知等。
  • 运维工程师:Crawlab 对于运维工程师来说最大的好处是部署便利(对于爬虫程序和 Crawlab 本身)。Crawlab 支持 Docker 或 Kubernetes 一键安装。
  • 数据分析师:数据分析师如果能写代码(例如 Python),则可以开发爬虫程序(例如 Scrapy)然后上传到 Crawlab,然后就可以把所有脏活累活交给 Crawlab,它能够自动帮您抓取数据。
  • 其他:准确的说,任何人都能够享受 Crawlab 自动化带来的便利。虽然 Crawlab 尤其擅长执行网络爬虫任务,但它不仅限于此,它能够被用来运行其他类型的任务,例如数据处理和自动化。

核心功能

Go 语言开发的超强企业级爬虫管理平台 - Crawlab

架构

Crawlab 的整体架构如下图所示:

Go 语言开发的超强企业级爬虫管理平台 - Crawlab

作为分布式系统,Crawlab 由几个模块组成,其中包括主节点、工作节点、数据库、文件系统以及前端。每个模块(目前除了节点)都具有可扩展性,因此整个分布式系统能够被灵活扩展以支持高性能需求。

例如,爬虫抓取任务被分配到工作节点集群,然后工作节点集群可以根据资源需求的变化来调整节点数量。

主节点

主节点是 Crawlab 分布式系统中的中心部分,主要负责管理工作节点、派发爬虫任务、以及接受发送信息给工作节点。

主节点由很多自模块组成,相比于工作节点更为复杂。您可以参考下图查看主节点的子模块。

Go 语言开发的超强企业级爬虫管理平台 - Crawlab

工作节点

工作节点的主要负责任务执行,它从主节点接收爬虫任务并执行目标网站抓取爬虫程序。因此,您可以将工作节点看作执行器。它们并不会处理 API 请求、任务派发、以及其他主节点上的功能。

您可以查看下图工作节点子模块。

Go 语言开发的超强企业级爬虫管理平台 - Crawlab

节点通信

主节点通过高性能 RPC 框架 gRPC 与工作节点进行通信。下图展示了 Crawlab 中节点通信的原理。

Go 语言开发的超强企业级爬虫管理平台 - Crawlab

快速使用

Docker 是安装部署 Crawlab 最便捷的方式。Docker 部署有多种模式,不过其主流程是相似的。

保证你已经安装好 Docker,并能够拉取 Crawlab 和 MongoDB 的镜像。

docker pull crawlabteam/crawlab
docker pull mongo

如果还没安装 Docker Compose,您可以执行以下命令。

pip install docker-compose

然后创建配置文件并命名为 docker-compose.yml,内容如下所示:

version: '3.3'
services:
  master:
    image: crawlabteam/crawlab
    container_name: crawlab_master
    environment:
      CRAWLAB_NODE_MASTER: "Y"
      CRAWLAB_MONGO_HOST: "mongo"
    ports:
      - "8080:8080"
    depends_on:
      - mongo
  mongo:
    image: mongo:4.2

执行以下命令启动 Crawlab 以及 MongoDB 即可。

docker-compose up -d

现在就可以打开浏览器并导航到 http://localhost:8080 并开始使用 Crawlab 了。

Go 语言开发的超强企业级爬虫管理平台 - Crawlab

在 Crawlab 中,爬虫是网络爬虫程序的基本单位。您可以将其看作一个爬虫软件项目,它由代码文件组成,例如 Scrapy 项目。

用户在 Crawlab 操作爬虫的典型流程如下所示:

Go 语言开发的超强企业级爬虫管理平台 - Crawlab

要创建爬虫也是非常简单的,导航到 Spiders 页面,再点左上方的 New Spider 按钮,输入 NameCommand 等相关信息,点击 Confirm 即可。

Go 语言开发的超强企业级爬虫管理平台 - Crawlab

然后上传爬虫有几种方式。

上传目录

  1. 导航到爬虫详情页
  2. 点击 文件 标签
  3. 点击导航条上的 上传文件 按钮
  4. 选择 目录
  5. 点击 点击选择目录上传
  6. 选择爬虫文件所在目录
  7. 点击 确认

上传文件

  1. 导航到爬虫详情页
  2. 点击 文件 标签
  3. 点击导航条上的 上传文件 按钮
  4. 选择 文件
  5. 拖拽爬虫文件到放置区,或直接点击放置区并选择爬虫文件
  6. 点击 确认

上传文件 (拖拽)

  1. 导航到爬虫详情页
  2. 点击 文件 标签
  3. 拖拽爬虫文件或目录到左侧导航栏的目录里
Go 语言开发的超强企业级爬虫管理平台 - Crawlab

然后可以根据以下步骤来运行爬虫

  1. 如果您在爬虫详情页,点击导航条上名为 运行 的播放按钮
  2. 如果您在 爬虫列表 页面,点击右侧名为 运行 的播放按钮
  3. 选择合适的爬虫运行设置
  4. 点击 确认

然后是爬虫运行设置的解释。

  1. 执行命令: 将被实际运行的 cmd/bash/shell 基础命令
  2. 执行参数: 被传入 执行命令 的参数
  3. 模式: 运行模式,默认为 随机节点.
  4. 优先级: 任务优先级,默认为 5
Go 语言开发的超强企业级爬虫管理平台 - Crawlab

Git 仓库:https://github.com/crawlab-team/crawlab

▲ 点击上方卡片关注Github爱好者,获取前沿开源作品

原文始发于微信公众号(Github爱好者):Go 语言开发的超强企业级爬虫管理平台 – Crawlab

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/121653.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!