Scrapyd + Gerapy部署搭建爬蟲管理系統(下)

對接上篇scrapyd安裝配置 :https://blog.csdn.net/weixin_42277380/article/details/99546924

本片對Gerapy進行詳細講解


Gerapy安裝

GitHub:https://github.com/Gerapy/Gerapy

Gerapy是一個基於Django框架的一個爬蟲部署web端,在gerapy上,我們能更簡便的把我們的項目部署到多臺主機上去.

Gerapy 是一款分佈式爬蟲管理框架,支持 Python 3,基於 Scrapy、Scrapyd、Scrapyd-Client、Scrapy-Redis、Scrapyd-API、Scrapy-Splash、Jinjia2、Django、Vue.js 開發,Gerapy 可以幫助我們:

  • 更方便地控制爬蟲運行

  • 更直觀地查看爬蟲狀態

  • 更實時地查看爬取結果

  • 更簡單地實現項目部署

  • 更統一地實現主機管理

  • 更輕鬆地編寫爬蟲代碼

安裝非常簡單,只需要運行 pip3 命令即可:

pip3 install gerapy

安裝完成之後我們就可以使用 gerapy 命令了,輸入 gerapy 便可以獲取它的基本使用方法:

gerapy
Usage:
  gerapy init [--folder=<folder>]
  gerapy migrate
  gerapy createsuperuser
  gerapy runserver [<host:port>]
  gerapy makemigrations

如果出現上述結果,就證明 Gerapy 安裝成功了。

初始化

接下來我們來開始使用 Gerapy,首先利用如下命令進行一下初始化,在任意路徑下均可執行如下命令:

gerapy init

執行完畢之後,本地便會生成一個名字爲 gerapy 的文件夾,接着進入該文件夾,可以看到有一個 projects 文件夾,我們後面會用到。

緊接着執行數據庫初始化命令:

cd gerapy
gerapy migrate

這樣它就會在 gerapy 目錄下生成一個 SQLite 數據庫,同時建立數據庫表。

接着我們只需要再運行命令啓動服務就好了:

gerapy runserver

這樣我們就可以看到 Gerapy 已經在 8000 端口上運行了。

全部的操作流程截圖如下:

接下來我們在瀏覽器中打開 http://localhost:8000/,就可以看到 Gerapy 的主界面了:

這裏顯示了主機、項目的狀態,當然由於我們沒有添加主機,所以所有的數目都是 0。

如果我們可以正常訪問這個頁面,那就證明 Gerapy 初始化都成功了。

主機管理

接下來我們可以點擊左側 Clients 選項卡,即主機管理頁面,添加我們的 Scrapyd 遠程服務,點擊右上角的創建按鈕即可添加我們需要管理的 Scrapyd 服務:

需要添加 IP、端口,以及名稱,點擊創建即可完成添加,點擊返回即可看到當前添加的 Scrapyd 服務列表,樣例如下所示:

這樣我們可以在狀態一欄看到各個 Scrapyd 服務是否可用,同時可以一目瞭然當前所有 Scrapyd 服務列表,另外我們還可以自由地進行編輯和刪除。

項目管理

Gerapy 的核心功能當然是項目管理,在這裏我們可以自由地配置、編輯、部署我們的 Scrapy 項目,點擊左側的 Projects ,即項目管理選項,我們可以看到如下空白的頁面:

假設現在我們有一個 Scrapy 項目,如果我們想要進行管理和部署,還記得初始化過程中提到的 projects 文件夾嗎?這時我們只需要將項目拖動到剛纔 gerapy 運行目錄的 projects 文件夾下,例如我這裏寫好了一個 Scrapy 項目,名字叫做 baike,這時把它拖動到 projects 文件夾下:

這時刷新頁面,我們便可以看到 Gerapy 檢測到了這個項目,同時它是不可配置、沒有打包的:

這時我們可以點擊部署按鈕進行打包和部署,在右下角我們可以輸入打包時的描述信息,類似於 Git 的 commit 信息,然後點擊打包按鈕,即可發現 Gerapy 會提示打包成功,同時在左側顯示打包的結果和打包名稱:

打包成功之後,我們便可以進行部署了,我們可以選擇需要部署的主機,點擊後方的部署按鈕進行部署,同時也可以批量選擇主機進行部署,示例如下:

可以發現此方法相比 Scrapyd-Client 的命令行式部署,簡直不能方便更多。

監控任務

部署完畢之後就可以回到主機管理頁面進行任務調度了,任選一臺主機,點擊調度按鈕即可進入任務管理頁面,此頁面可以查看當前 Scrapyd 服務的所有項目、所有爬蟲及運行狀態:

我們可以通過點擊新任務、停止等按鈕來實現任務的啓動和停止等操作,同時也可以通過展開任務條目查看日誌詳情:

另外我們還可以隨時點擊停止按鈕來取消 Scrapy 任務的運行。

這樣我們就可以在此頁面方便地管理每個 Scrapyd 服務上的 每個 Scrapy 項目的運行了。

項目編輯

同時 Gerapy 還支持項目編輯功能,有了它我們不再需要 IDE 即可完成項目的編寫,我們點擊項目的編輯按鈕即可進入到編輯頁面,如圖所示:

這樣即使 Gerapy 部署在遠程的服務器上,我們不方便用 IDE 打開,也不喜歡用 Vim 等編輯軟件,我們可以藉助於本功能方便地完成代碼的編寫。

代碼生成

上述的項目主要針對的是我們已經寫好的 Scrapy 項目,我們可以藉助於 Gerapy 方便地完成編輯、部署、控制、監測等功能,而且這些項目的一些邏輯、配置都是已經寫死在代碼裏面的,如果要修改的話,需要直接修改代碼,即這些項目都是不可配置的。

在 Scrapy 中,其實提供了一個可配置化的爬蟲 CrawlSpider,它可以利用一些規則來完成爬取規則和解析規則的配置,這樣可配置化程度就非常高,這樣我們只需要維護爬取規則、提取邏輯就可以了。如果要新增一個爬蟲,我們只需要寫好對應的規則即可,這類爬蟲就叫做可配置化爬蟲。

Gerapy 可以做到:我們寫好爬蟲規則,它幫我們自動生成 Scrapy 項目代碼。

我們可以點擊項目頁面的右上角的創建按鈕,增加一個可配置化爬蟲,接着我們便可以在此處添加提取實體、爬取規則、抽取規則了,例如這裏的解析器,我們可以配置解析成爲哪個實體,每個字段使用怎樣的解析方式,如 XPath 或 CSS 解析器、直接獲取屬性、直接添加值等多重方式,另外還可以指定處理器進行數據清洗,或直接指定正則表達式進行解析等等,通過這些流程我們可以做到任何字段的解析。

再比如爬取規則,我們可以指定從哪個鏈接開始爬取,允許爬取的域名是什麼,該鏈接提取哪些跟進的鏈接,用什麼解析方法來處理等等配置。通過這些配置,我們可以完成爬取規則的設置。

最後點擊生成按鈕即可完成代碼的生成。

 

生成的代碼示例結果其結構和 Scrapy 代碼是完全一致的。

生成代碼之後,我們只需要像上述流程一樣,把項目進行部署、啓動就好了,不需要我們寫任何一行代碼,即可完成爬蟲的編寫、部署、控制、監測。

 

其他機器部署

如果你想要在別的機器上部署爬蟲,記得關閉你的防火牆,然後,在python的安裝目錄打開Lib裏面的site-packages文件夾,打開後找到scrapyd文件夾,打開之後找到default_scrapyd文件,把裏面的bind_address = 127.0.0.1修改爲bind_address = 0.0.0.0,然後重新啓動scrapyd即可。

 

結語

以上便是 Gerapy 分佈式爬蟲管理框架的基本用法,如需瞭解更多,可以訪問其

GitHub:https://github.com/Gerapy/Gerapy

當然,除了Gerapy,還有spiderkeeper,主要實現 scrapy 工程的部署,抓取任務狀態監控,定時啓動爬蟲等功能。支持多個 scrapyd 服務 ,方便爬蟲集羣的管理,大家可以去看看~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章