需求分析

初級用戶:只有一臺開發主機能夠通過 Scrapyd-client 打包和部署 Scrapy 爬蟲項目,以及通過 Scrapyd JSON API 來控制爬蟲,感覺命令行操作太麻煩,希望能夠通過瀏覽器直接部署和運行項目專業用戶:有 N 臺雲主機,通過 Scrapy-Redis 構建分佈式爬蟲希望集成身份認證希望在頁面上直觀地查看所有云主機的運行狀態希望能夠自由選擇部分雲主機,一鍵部署和運行爬蟲項目,實現集羣管理希望自動執行日誌分析,以及爬蟲進度可視化希望在出現特定類型的異常日誌時能夠及時通知用戶,包括自動停止當前爬蟲任務

安裝和配置

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

ENABLE_AUTH = TrueUSERNAME = 'username'PASSWORD = 'password'

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

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

通過運行命令 scrapydweb 啓動 ScrapydWeb

訪問 Web UI

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

Overview 頁面自動輸出所有 Scrapyd server 的運行狀態通過分組和過濾可以自由選擇若干臺 Scrapyd server,調用 Scrapyd 提供的所有 JSON API,實現一次點擊,批量執行

部署項目

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

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

運行爬蟲

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

日誌分析和可視化

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

爬蟲進度可視化

郵件通知

配置郵箱認證信息

SMTP_SERVER = 'smtp.qq.com'SMTP_PORT = 465SMTP_OVER_SSL = TrueSMTP_CONNECTION_TIMEOUT = 10FROM_ADDR = '[email protected]'EMAIL_PASSWORD = 'password'TO_ADDRS = ['[email protected]']

設置郵件工作時間和定時通知間隔,以下示例爲:每隔1小時或某一任務完成時,並且當前時間是工作日的9點,12點和17點,ScrapydWeb 將會發送郵件告知當前運行任務的統計信息

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

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

LOG_CRITICAL_THRESHOLD = 3LOG_CRITICAL_TRIGGER_STOP = TrueLOG_CRITICAL_TRIGGER_FORCESTOP = False...LOG_IGNORE_TRIGGER_FORCESTOP = False

查看原文 >>
相關文章