當前位置:
首頁 > 知識 > 如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監控分散式爬蟲

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監控分散式爬蟲

需求分析

  • 初級用戶:
  • 只有一台開發主機
  • 能夠通過 Scrapyd-client 打包和部署 Scrapy 爬蟲項目,以及通過 Scrapyd JSON API 來控制爬蟲,感覺

    命令行操作太麻煩

    ,希望能夠通過瀏覽器直接部署和運行項目
  • 專業用戶:
  • 有 N 台雲主機,通過 Scrapy-Redis 構建分散式爬蟲
  • 希望集成身份認證
  • 希望在頁面上直觀地查看所有雲主機的運行狀態
  • 希望能夠自由選擇部分雲主機,

    一鍵部署和運行爬蟲項目,實現集群管理

  • 希望自動執行日誌分析,以及爬蟲進度可視化
  • 希望在出現特定類型的異常日誌時能夠及時通知用戶,包括自動停止當前爬蟲任務

安裝和配置

  1. 所有主機都已經安裝和啟動 Scrapyd
  2. 開發主機或任一台主機安裝 ScrapydWeb: pip install scrapydweb
  3. 運行命令 scrapydweb -h ,將在當前工作目錄生成 scrapydweb_settings.py 配置文件
  4. 啟用 HTTP 基本認證

ENABLE_AUTH = True
USERNAME = "username"
PASSWORD = "password"

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

SCRAPYD_SERVERS = [
"127.0.0.1",
# "username:password@localhost:6801#group",
("username", "password", "localhost", "6801", "group"),
]

  1. 通過運行命令 scrapydweb 啟動 ScrapydWeb

訪問 Web UI

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

  • Overview 頁面自動輸出所有 Scrapyd server 的運行狀態
  • 通過分組和過濾可以自由選擇若干台 Scrapyd server,調用 Scrapyd 提供的所有 JSON API,

    實現一次點擊,批量執行

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監控分散式爬蟲

打開今日頭條,查看更多精彩圖片

部署項目

  • 支持指定若干台 Scrapyd server 部署項目
  • 通過配置 SCRAPY_PROJECTS_DIR 指定 Scrapy 項目開發目錄,ScrapydWeb 將自動列出該路徑下的所有項目,自動打包和部署指定項目

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監控分散式爬蟲

  • 如果 ScrapydWeb 並非運行於當前開發主機,除了支持上傳常規的 egg 文件,也可以將整個項目文件夾添加到 zip/tar/tar.gz 壓縮文件後直接上傳即可

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監控分散式爬蟲

運行爬蟲

  • 通過下拉框直接選擇 project,version 和 spider
  • 支持傳入 Scrapy settings 和 spider arguments
  • 同樣支持指定若干台 Scrapyd server 運行爬蟲

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監控分散式爬蟲

日誌分析和可視化

  • ScrapydWeb

    默認在後台定時自動讀取和分析 Scrapy log 文件並生成 Stats 頁面

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監控分散式爬蟲

  • 爬蟲進度可視化

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監控分散式爬蟲

郵件通知

  1. 配置郵箱認證信息

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監控分散式爬蟲

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"]

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監控分散式爬蟲

  1. 設置郵件工作時間和定時通知間隔,以下示例為:每隔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

  1. 基於後台定時執行日誌分析,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

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

mysql意外宕機現象分析
打通前後端構建一個Vue+Express的開發環境

TAG:程序員小新人學習 |