爬蟲管理平臺 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 作開發貢獻。

相關文章
相關標籤/搜索