scrapydweb----高效地部署和監控分佈式爬蟲項目

需求分析


初級用戶

只有一臺開發主機html

可以經過 Scrapyd-client 打包和部署 Scrapy 爬蟲項目,以及經過 Scrapyd JSON API 來控制爬蟲,感受命令行操做太麻煩,但願可以經過瀏覽器直接部署和運行項目git

專業用戶

有 N 臺雲主機,經過 Scrapy-Redis 構建分佈式爬蟲github

但願集成身份認證web

但願在頁面上直觀地查看全部雲主機的運行狀態redis

但願可以自由選擇部分雲主機,批量部署和運行爬蟲項目,實現集羣管理瀏覽器

但願自動執行日誌分析,以及爬蟲進度可視化scrapy

但願在出現特定類型的異常日誌時可以及時通知用戶,包括自動中止當前爬蟲任務分佈式

 

動圖演示


集羣多節點部署和運行爬蟲項目:動圖演示,上傳、打包、運行。ide

 

安裝和配置


1 請先確保全部主機都已經安裝和啓動 Scrapyd,若是須要遠程訪問 Scrapyd,則需將 Scrapyd 配置文件中的 bind_address 修改成 bind_address = 0.0.0.0,而後重啓 Scrapyd。post

  可使用find命令或啓動scrapyd,找到scrapyd目錄下的 default_scrapyd.conf 文件,修改其中bind_address。

2 開發主機或任一臺主機安裝 ScrapydWebpip install scrapydweb

3 經過運行命令 scrapydweb -h 啓動 ScrapydWeb(首次啓動將在當前工做目錄自動生成scrapydweb_settings.py配置文件)

4 啓用 HTTP 基本認證(可選)

ENABLE_AUTH = True
USERNAME = 'username' 
PASSWORD = 'password'

5 添加 Scrapyd server,支持字符串和元組兩種配置格式,支持添加認證信息和分組/標籤

SCRAPYD_SERVERS = [
    '127.0.0.1', # 'username:password@localhost:6801#group', ('username', 'password', 'localhost', '6801', 'group'), ]
6 經過運行命令 
scrapydweb

啓動scrapydweb。


訪問 Web UI


經過瀏覽器訪問 http://127.0.0.1:5000,輸入認證信息登陸

1 Overview 頁面自動輸出全部 Scrapyd server 的運行狀態

2 經過分組和過濾能夠自由選擇若干臺 Scrapyd server,調用 Scrapyd 提供的全部 JSON API,實現一次點擊,批量執行

 
 

部署項目


 

1 支持指定若干臺 Scrapyd server 部署項目

2 經過配置文件  SCRAPY_PROJECTS_DIR  指定 Scrapy 項目開發目錄,ScrapydWeb 將自動列出該路徑下的全部項目,自動打包和部署指定項目

 
 
3 若是 ScrapydWeb 並不是運行於當前開發主機,除了支持上傳常規的 egg 文件,也能夠將整個項目文件夾添加到 zip/tar/tar.gz 壓縮文件後直接上傳便可。若是上傳報錯,須要修改源碼,從新打包上傳。
 
 
 

運行爬蟲


1 經過下拉框直接選擇 project,version 和 spider
2 支持傳入 Scrapy settings 和 spider arguments
3 一樣支持指定若干臺 Scrapyd server 運行爬蟲
 
 

日誌分析和可視化


 

選擇

點擊 Select 選擇一個你須要分析的爬蟲日誌文件,能夠是爬蟲自定義的生成的日誌,也能夠是scrapydweb生成的日誌。選好以後,點擊右邊,雲朵形狀的圖案,上傳。頁面自動跳轉。

 

爬蟲進度可視化

 

日誌分類查看

 

 

郵件通知


基於後臺定時讀取和分析 Scrapy log 文件,ScrapydWeb 將在知足特定觸發器時發送通知郵件,郵件正文包含當前運行任務的統計信息。    

  1. 配置郵箱認證信息

    複製代碼
    SMTP_SERVER = 'smtp.qq.com' SMTP_PORT = 465 SMTP_OVER_SSL = True SMTP_CONNECTION_TIMEOUT = 10 FROM_ADDR = 'username@qq.com' EMAIL_PASSWORD = 'password' TO_ADDRS = ['username@qq.com']
    複製代碼
  2. 設置郵件工做時間和定時通知間隔,如下示例爲:每隔1小時或某一任務完成時,而且當前時間是工做日的9點,12點和17點,ScrapydWeb 將會發送郵件告知當前運行任務的統計信息

    EMAIL_WORKING_DAYS = [1, 2, 3, 4, 5]
    EMAIL_WORKING_HOURS = [9, 12, 17] ON_JOB_RUNNING_INTERVAL = 3600 ON_JOB_FINISHED = True

     

  3. 基於後臺定時執行日誌分析,ScrapydWeb 提供多種 log 類型觸發器及其閾值設置,包括 'CRITICAL', 'ERROR', 'WARNING', 'REDIRECT', 'RETRY', 'IGNORE'等。如下示例爲:當發現3條或3條以上的 critical 級別的 log 時自動中止當前任務,若是當前時間在郵件工做時間內,則同時發送通知郵件。

    LOG_CRITICAL_THRESHOLD = 3
    LOG_CRITICAL_TRIGGER_STOP = True LOG_CRITICAL_TRIGGER_FORCESTOP = False ... LOG_IGNORE_TRIGGER_FORCESTOP = False

 

歡迎有疑問的朋友能夠在評論區交流。

本文轉載自 https://juejin.im/post/5bebc5fd6fb9a04a053f3a0e,部份內容有修改,增長。

相關文章
相關標籤/搜索