爬蟲管理平臺Crawlab新功能介紹用Git做CI/CD

NO IMAGE

前言

相信爬蟲(網絡爬蟲)是開發者們耳熟能詳的數據採集技術。其中基於 Python Twisted 異步框架的 Scrapy,是靈活且強大的爬蟲框架。而 Scrapyd 是 Scrapy 默認的爬蟲管理服務,能夠簡單的執行、監控爬蟲任務,除此之外,Scrapyd 還支持爬蟲版本管理功能。後來基於 Scrapyd 的爬蟲平臺如雨後春筍般湧現出來,前有 SpiderKeeper,後有 Scrapydweb、Gerapy,都是比較優秀的開源爬蟲管理平臺,但它們都有個共同的問題,就是不能運行 Scrapy 以外的爬蟲,導致靈活性不高。去年 3 月開源的分佈式爬蟲管理平臺 Crawlab 就解決了這個問題,主要是通過支持 shell 命令來運行爬蟲,因此理論上可以運行任何爬蟲。本篇文章將介紹 Crawlab 的新發布功能:Git 集成。這將有效的將爬蟲管理很好的集成到 DevOps CI/CD 工作流中。

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 單純做版本控制要靈活和強大。

當然,Crawlab 不僅僅單純做版本控制,其核心功能是爬蟲管理。如果對 Crawlab 不瞭解的開發者可以查看 Github 主頁官方文檔

Git 集成原理

在開發 Crawlab 的過程中,我們收集了非常多的反饋。其中一個比較常見的問題就是“能否集成 Git”到Crawlab中。這其實很自然,因為我們可以根據這個需求瞭解到不少爬蟲工程師是用 Git 來做版本管理的,這個開發習慣很好,減少了很多因為人為因素導致的管理成本,包括花大量時間回溯代碼、環境隔離等等。因此,我們在最新的 2 個版本中開發了 Git 功能,包括 Git 的代碼獲取和版本切換,這些都讓爬蟲的版本管理變得輕鬆。

下圖是 Crawlab 的 Git 集成原理示意圖。

爬蟲管理平臺Crawlab新功能介紹用Git做CI/CD

從上圖可以看到,集成的步驟如下:

  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 屬性。

爬蟲管理平臺Crawlab新功能介紹用Git做CI/CD

配置 Git 信息

開啟 Git 之後,您可以在爬蟲詳情中看到 “Git 設置” 標籤,點開的界面如下圖。

爬蟲管理平臺Crawlab新功能介紹用Git做CI/CD

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

如果您是 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),以及誰提交的代碼,如下圖所示。

爬蟲管理平臺Crawlab新功能介紹用Git做CI/CD

切換版本

同樣是在 Log 標籤,您可以看到每一個提交(Commit)右下方有一個紅色的 Checkout 按鈕,點擊它即可將爬蟲代碼切換到該版本。

總結

本文從 Scrapy、Scrapyd 開始,論述了在爬蟲管理中集成版本控制系統、引入 DevOps 工作流的重要性。同時,也介紹了強大而靈活的分佈式爬蟲管理平臺 Crawlab。進一步,我們還介紹了 Crawlab 的新特性,即集成 Git 到 CI/CD 工作流,包括其原理和如何使用。相信做過大型項目的開發者對版本控制有著極高的需求。這同樣適用於爬蟲開發,因為爬蟲很多時候會因為各種各樣的原因(例如網站樣式改變)而需要進行變更,如果將版本控制應用在爬蟲管理中,將會很大程度提高爬蟲應用的質量和可維護性。同時,如果您在 Crawlab 的 Git 設置中打開了自動同步功能,Crawlab 就不需要手動上傳代碼,它會自動從 Git 倉庫獲取代碼,是不是很省時間和精力?因此,我推薦每一個爬蟲開發工程師都將 Git 版本管理應用在自己的爬蟲應用中。

項目地址

社區

如果您覺得 Crawlab 對您的日常開發或公司有幫助,請加作者微信 tikazyq1 並註明 “Crawlab”,作者會將你拉入群。歡迎在 Github 上進行 star,以及,如果遇到任何問題,請隨時在 Github 上提 issue。另外,歡迎您對Crawlab 做開發貢獻。

爬蟲管理平臺Crawlab新功能介紹用Git做CI/CD

相關文章

學習axios源碼整體架構,打造屬於自己的請求庫

前端知識梳理(一)

爬蟲管理平臺Crawlab專業版v0.1.0正式發佈

收穫人生第一個5kStar開源項目,經驗教訓分享給大家