爬虫管理平台 Crawlab 新功能介绍 - 用 Git 作 CI/CD

前言

相信爬虫(网络爬虫)是开发者们耳熟能详的数据采集技术。其中基于 Python Twisted 异步框架的 Scrapy,是灵活且强大的爬虫框架。而 Scrapyd 是 Scrapy 默认的爬虫管理服务,可以简单的执行、监控爬虫任务,除此以外,Scrapyd 还支持爬虫版本管理功能。后来基于 Scrapyd 的爬虫平台如雨后春笋般涌现出来,前有 SpiderKeeper,后有 Scrapydweb、Gerapy,都是比较优秀的开源爬虫管理平台,但它们都有个共同的问题,就是不能运行 Scrapy 之外的爬虫,致使灵活性不高。去年 3 月开源的分布式爬虫管理平台 Crawlab 就解决了这个问题,主要是经过支持 shell 命令来运行爬虫,所以理论上能够运行任何爬虫。本篇文章将介绍 Crawlab 的新发布功能:Git 集成。这将有效的将爬虫管理很好的集成到 DevOps CI/CD 工做流中。git

Crawlab 简介

Crawlab 很是全面,有精美的界面和强大的功能,但有一个缺点,就是没法有效进行爬虫的版本控制。所以,在新版本发布以前,Crawlab 一直没法很好的将爬虫管理集成到 DevOps 工做流中。若是对 DevOps 不了解,能够参考《用开源软件打造企业级 DevOps 工做流(一):概述》这篇文章。在 v0.4.7 版本中,Crawlab 加入了 Git 功能,支持简单的从 Git 仓库同步代码的功能;在 v0.4.8 版本中,Crawlab 又加入了 Log 功能,支持查看 提交(Commits)、分支(Branches)和标签(Tags),而且能够将当前工做树(Work-Tree)切换(Checkout)到任意的 Commit 中。Git 是很是强大的版本控制系统(VCS),咱们在《用开源软件打造企业级 DevOps 工做流(二):版本控制》这篇文章中着重介绍了 Git 的功能和用途。而 Crawlab 集成了 Git 作版本控制,这比 Scrapyd 单纯作版本控制要灵活和强大。github

固然,Crawlab 不只仅单纯作版本控制,其核心功能是爬虫管理。若是对 Crawlab 不了解的开发者能够查看 Github 主页官方文档web

Git 集成原理

在开发 Crawlab 的过程当中,咱们收集了很是多的反馈。其中一个比较常见的问题就是“可否集成 Git”到Crawlab中。这其实很天然,由于咱们能够根据这个需求了解到很多爬虫工程师是用 Git 来作版本管理的,这个开发习惯很好,减小了不少由于人为因素致使的管理成本,包括花大量时间回溯代码、环境隔离等等。所以,咱们在最新的 2 个版本中开发了 Git 功能,包括 Git 的代码获取和版本切换,这些都让爬虫的版本管理变得轻松。shell

下图是 Crawlab 的 Git 集成原理示意图。微信

从上图能够看到,集成的步骤以下:网络

  1. 主节点(Master Node)从远端 Git 仓库(Remote Git Repository)同步代码到本地仓库(Local Git Repository);
  2. 主节点将本地仓库的战胜打包上传到 MongoDB GridFS;
  3. 工做节点(Worker Nodes)经过 MongoDB GridFS 同步代码到本地;
  4. 若是用户但愿切换(Checkout)到某一个版本或提交(Commit),只须要执行 Checkout 操做,让主节点将 Work-Tree 指向到目标 Commit,而后主节点重复步骤 2-3 来完成爬虫代码同步。

Git 集成使用

下面简单介绍一下 Crawlab 的 Git 集成方法。咱们只须要在界面上就能够完成操做。框架

打开 Git 属性

首先,咱们须要配置 Git 的信息。建立一个 Git 爬虫或打开爬虫的 Git 属性。异步

配置 Git 信息

开启 Git 以后,您能够在爬虫详情中看到 “Git 设置” 标签,点开的界面以下图。分布式

Crawlab 的 Git 同步是同时支持 HTTP 和 SSH 的。ide

若是您是 HTTP,您能够这样操做:

  1. 将仓库地址填写在 Git URL 输入框;
  2. 而后点开 须要验证,并填写验证信息;
  3. 选择 Git 分支
  4. 点击 保存 按钮。

若是您是 SSH,您能够这样操做:

  1. 点击 复制 按钮,将 SSH 公钥 加入到 Git 服务(您能够网上搜索一下如何在 Git 服务中添加 SSH 公钥);
  2. 将仓库地址填写在 Git URL 输入框;
  3. 选择 Git 分支
  4. 点击 保存 按钮。

自动同步

若是您须要自动同步,您能够打开 “自动同步” 开关,而后选择同步频率。这样,Git 上的爬虫代码一旦有更新,Crawlab 就会按照同步频率自动将其同步回来。

手动同步

点击红色的 “同步” 按钮并确认,便可手动同步 Git 仓库的爬虫代码。

重置

有时候您须要重置代码,也就是清除该仓库的全部代码,只须要点击 “重置” 按钮并确认。

查看版本

在 Log 标签中,您能够看到全部的 Commits,以及其对应的分支(Branches)和版本(Tags),以及谁提交的代码,以下图所示。

切换版本

一样是在 Log 标签,您能够看到每个提交(Commit)右下方有一个红色的 Checkout 按钮,点击它便可将爬虫代码切换到该版本。

总结

本文从 Scrapy、Scrapyd 开始,论述了在爬虫管理中集成版本控制系统、引入 DevOps 工做流的重要性。同时,也介绍了强大而灵活的分布式爬虫管理平台 Crawlab。进一步,咱们还介绍了 Crawlab 的新特性,即集成 Git 到 CI/CD 工做流,包括其原理和如何使用。相信作过大型项目的开发者对版本控制有着极高的需求。这一样适用于爬虫开发,由于爬虫不少时候会由于各类各样的缘由(例如网站样式改变)而须要进行变动,若是将版本控制应用在爬虫管理中,将会很大程度提升爬虫应用的质量和可维护性。同时,若是您在 Crawlab 的 Git 设置中打开了自动同步功能,Crawlab 就不须要手动上传代码,它会自动从 Git 仓库获取代码,是否是很省时间和精力?所以,我推荐每个爬虫开发工程师都将 Git 版本管理应用在本身的爬虫应用中。

项目地址

社区

若是您以为 Crawlab 对您的平常开发或公司有帮助,请加做者微信 tikazyq1 并注明 "Crawlab",做者会将你拉入群。欢迎在 Github 上进行 star,以及,若是遇到任何问题,请随时在 Github 上提 issue。另外,欢迎您对Crawlab 作开发贡献。

相关文章
相关标签/搜索