分散式爬蟲的部署之Gerapy分散式管理

崔慶才丨靜覓發表於2018-06-06

我們可以通過Scrapyd-Client將Scrapy專案部署到Scrapyd上,並且可以通過Scrapyd API來控制Scrapy的執行。那麼,我們是否可以做到更優化?方法是否可以更方便可控?

我們重新分析一下當前可以優化的問題。

  • 使用Scrapyd-Client部署時,需要在配置檔案中配置好各臺主機的地址,然後利用命令列執行部署過程。如果我們省去各臺主機的地址配置,將命令列對接圖形介面,只需要點選按鈕即可實現批量部署,這樣就更方便了。

  • 使用Scrapyd API可以控制Scrapy任務的啟動、終止等工作,但很多操作還是需要程式碼來實現,同時獲取爬取日誌還比較煩瑣。如果我們有一個圖形介面,只需要點選按鈕即可啟動和終止爬蟲任務,同時還可以實時檢視爬取日誌報告,那這將大大節省我們的時間和精力。

所以我們的終極目標是如下內容。

  • 更方便地控制爬蟲執行;

  • 更直觀地檢視爬蟲狀態;

  • 更實時地檢視爬取結果;

  • 更簡單地實現專案部署;

  • 更統一地實現主機管理。

上述所有的工作均可通過Gerapy來實現。

Gerapy是一個基於Scrapyd、Scrapyd API、Django、Vue.js搭建的分散式爬蟲管理框架。接下來將簡單介紹它的使用方法。

一、準備工作

請確保已經正確安裝好了Gerapy。

二、使用說明

利用gerapy命令新建一個專案,命令如下:

gerapy init複製程式碼

在當前目錄下生成一個gerapy資料夾。進入gerapy資料夾,會發現一個空的projects資料夾,後文會提及。

這時先對資料庫進行初始化:

gerapy migrate複製程式碼

這樣會生成一個SQLite資料庫,資料庫儲存各個主機配置資訊、部署版本等。

啟動Gerapy服務,命令如下:

gerapy runserver複製程式碼

這樣即可在預設8000埠上開啟Gerapy服務。我們用瀏覽器開啟:http://localhost:8000,即可進入Gerapy的管理頁面,這裡提供了主機管理和專案管理的功能。

在主機管理中新增各臺主機的Scrapyd執行地址和埠,並加以名稱標記。之後各臺主機便會出現在主機列表中。Gerapy會監控各臺主機的執行狀況並加以不同的狀態標識,如下圖所示。

分散式爬蟲的部署之Gerapy分散式管理

剛才我們提到在gerapy目錄下有一個空的projects資料夾,它就是存放Scrapy目錄的資料夾。如果想要部署某個Scrapy專案,只需要將該專案檔案放到projects資料夾下即可。

這裡我放了兩個Scrapy專案,如下圖所示。

分散式爬蟲的部署之Gerapy分散式管理

重新回到Gerapy管理介面,點選專案管理,即可看到當前專案列表,如下圖所示。

分散式爬蟲的部署之Gerapy分散式管理

由於此處有過打包和部署記錄,這裡分別予以顯示。

Gerapy提供了專案線上編輯功能。點選編輯,即可視覺化地對專案進行編輯,如下圖所示。

分散式爬蟲的部署之Gerapy分散式管理

如果專案沒有問題,可以點選部署進行打包和部署。部署之前需要打包專案,打包時可以指定版本描述,如下圖所示。

分散式爬蟲的部署之Gerapy分散式管理

打包完成之後,直接點選部署按鈕即可將打包好的Scrapy專案部署到對應的雲主機上,同時也可以批量部署,如下圖所示。

分散式爬蟲的部署之Gerapy分散式管理

部署完畢之後就可以回到主機管理頁面進行任務排程。點選排程即可進入任務管理頁面,可以檢視當前主機所有任務的執行狀態,如下圖所示。

分散式爬蟲的部署之Gerapy分散式管理

我們通過點選新任務、停止等按鈕來實現任務的啟動和停止等操作,同時也可以通過展開任務條目檢視日誌詳情,如下圖所示。

分散式爬蟲的部署之Gerapy分散式管理

這樣我們就可以實時檢視到各個任務執行狀態。

以上內容便是Gerapy功能的簡單介紹。通過Gerapy,我們可以更加方便地管理、部署和監控Scrapy專案,尤其是對分散式爬蟲來說,使用Gerapy會更加方便。

更多資訊可以檢視Gerapy的GitHub地址:https://github.com/Gerapy。

三、結語

本節我們介紹了Gerapy的簡單用法,利用它我們可以方便地實現Scrapy專案的部署、管理等操作,可以大大提高效率。



相關文章