溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監(jiān)控分布式爬蟲項(xiàng)目

發(fā)布時間:2020-06-20 15:08:17 來源:網(wǎng)絡(luò) 閱讀:10454 作者:my8100 欄目:編程語言

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監(jiān)控分布式爬蟲項(xiàng)目

安裝和配置

  1. 請先確保所有主機(jī)都已經(jīng)安裝和啟動 Scrapyd,如果需要遠(yuǎn)程訪問 Scrapyd,則需將 Scrapyd 配置文件中的 bind_address 修改為 bind_address = 0.0.0.0,然后重啟 Scrapyd service。
  2. 開發(fā)主機(jī)或任一臺主機(jī)安裝 ScrapydWebpip install scrapydweb
  3. 通過運(yùn)行命令 scrapydweb 啟動 ScrapydWeb(首次啟動將自動在當(dāng)前工作目錄生成配置文件)。
  4. 啟用 HTTP 基本認(rèn)證(可選):
    ENABLE_AUTH = True
    USERNAME = 'username'
    PASSWORD = 'password'
  5. 添加 Scrapyd server,支持字符串和元組兩種配置格式,支持添加認(rèn)證信息和分組/標(biāo)簽:
    SCRAPYD_SERVERS = [
    '127.0.0.1',
    # 'username:password@localhost:6801#group',
    ('username', 'password', 'localhost', '6801', 'group'),
    ]
  6. 運(yùn)行命令 scrapydweb 重啟 ScrapydWeb。

訪問 web UI

通過瀏覽器訪問并登錄 http://127.0.0.1:5000。

  • Servers 頁面自動輸出所有 Scrapyd server 的運(yùn)行狀態(tài)。
  • 通過分組和過濾可以自由選擇若干臺 Scrapyd server,然后在上方 Tabs 標(biāo)簽頁中選擇 Scrapyd 提供的任一 HTTP JSON API,實(shí)現(xiàn)一次操作,批量執(zhí)行

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監(jiān)控分布式爬蟲項(xiàng)目

  • 通過集成 LogParser,Jobs 頁面自動輸出爬蟲任務(wù)的 pages 和 items 數(shù)據(jù)。
  • ScrapydWeb 默認(rèn)通過定時創(chuàng)建快照將爬蟲任務(wù)列表信息保存到數(shù)據(jù)庫,即使重啟 Scrapyd server 也不會丟失任務(wù)信息。(issue 12)

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監(jiān)控分布式爬蟲項(xiàng)目

部署項(xiàng)目

  • 通過配置 SCRAPY_PROJECTS_DIR 指定 Scrapy 項(xiàng)目開發(fā)目錄,ScrapydWeb 將自動列出該路徑下的所有項(xiàng)目,默認(rèn)選定最新編輯的項(xiàng)目,選擇項(xiàng)目后即可自動打包和部署指定項(xiàng)目。
  • 如果 ScrapydWeb 運(yùn)行在遠(yuǎn)程服務(wù)器上,除了通過當(dāng)前開發(fā)主機(jī)上傳常規(guī)的 egg 文件,也可以將整個項(xiàng)目文件夾添加到 zip/tar/tar.gz 壓縮文件后直接上傳即可,無需手動打包為 egg 文件。
  • 支持一鍵部署項(xiàng)目到 Scrapyd server 集群。

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監(jiān)控分布式爬蟲項(xiàng)目

運(yùn)行爬蟲

  • 通過下拉框依次選擇 project,version 和 spider。
  • 支持傳入 Scrapy settings 和 spider arguments。
  • 支持創(chuàng)建基于 APScheduler 的定時爬蟲任務(wù)。(如需同時啟動大量爬蟲任務(wù),則需調(diào)整 Scrapyd 配置文件的 max-proc 參數(shù))
  • 支持在 Scrapyd server 集群上一鍵啟動分布式爬蟲。

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監(jiān)控分布式爬蟲項(xiàng)目

日志分析和可視化

  • 如果在同一臺主機(jī)運(yùn)行 Scrapyd 和 ScrapydWeb,建議設(shè)置 SCRAPYD_LOGS_DIRENABLE_LOGPARSER,則啟動 ScrapydWeb 時將自動運(yùn)行 LogParser,該子進(jìn)程通過定時增量式解析指定目錄下的 Scrapy 日志文件以加快 Stats 頁面的生成,避免因請求原始日志文件而占用大量內(nèi)存和網(wǎng)絡(luò)資源。
  • 同理,如果需要管理 Scrapyd server 集群,建議在其余主機(jī)單獨(dú)安裝和啟動 LogParser。
  • 如果安裝的 Scrapy 版本不大于 1.5.1,LogParser 將能夠自動通過 Scrapy 內(nèi)建的 Telnet Console 讀取 Crawler.stats 和 Crawler.engine 數(shù)據(jù),以便掌握 Scrapy 內(nèi)部運(yùn)行狀態(tài)。

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監(jiān)控分布式爬蟲項(xiàng)目

定時爬蟲任務(wù)

  • 支持查看爬蟲任務(wù)的參數(shù)信息,追溯歷史記錄
  • 支持暫停,恢復(fù),觸發(fā),停止,編輯和刪除任務(wù)等操作

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監(jiān)控分布式爬蟲項(xiàng)目

郵件通知

通過輪詢子進(jìn)程在后臺定時模擬訪問 Stats 頁面,ScrapydWeb 將在滿足特定觸發(fā)器時根據(jù)設(shè)定自動停止爬蟲任務(wù)并發(fā)送通知郵件,郵件正文包含當(dāng)前爬蟲任務(wù)的統(tǒng)計(jì)信息。

  1. 添加郵箱帳號:
    
    SMTP_SERVER = 'smtp.qq.com'
    SMTP_PORT = 465
    SMTP_OVER_SSL = True
    SMTP_CONNECTION_TIMEOUT = 10

EMAIL_USERNAME = '' # defaults to FROM_ADDR
EMAIL_PASSWORD = 'password'
FROM_ADDR = 'username@qq.com'
TO_ADDRS = [FROM_ADDR]


2. 設(shè)置郵件工作時間和基本觸發(fā)器,以下示例代表:每隔1小時或當(dāng)某一任務(wù)完成時,并且當(dāng)前時間是工作日的9點(diǎn),12點(diǎn)和17點(diǎn),*ScrapydWeb* 將會發(fā)送通知郵件。
```python
EMAIL_WORKING_DAYS = [1, 2, 3, 4, 5]
EMAIL_WORKING_HOURS = [9, 12, 17]
ON_JOB_RUNNING_INTERVAL = 3600
ON_JOB_FINISHED = True
  1. 除了基本觸發(fā)器,ScrapydWeb 還提供了多種觸發(fā)器用于處理不同類型的 log,包括 'CRITICAL', 'ERROR', 'WARNING', 'REDIRECT', 'RETRY' 和 'IGNORE'等。
    LOG_CRITICAL_THRESHOLD = 3
    LOG_CRITICAL_TRIGGER_STOP = True
    LOG_CRITICAL_TRIGGER_FORCESTOP = False
    # ...
    LOG_IGNORE_TRIGGER_FORCESTOP = False

    以上示例代表:當(dāng)日志中出現(xiàn)3條或以上的 critical 級別的 log 時,ScrapydWeb 將自動停止當(dāng)前任務(wù),如果當(dāng)前時間在郵件工作時間內(nèi),則同時發(fā)送通知郵件。

移動端 UI

如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監(jiān)控分布式爬蟲項(xiàng)目

GitHub 開源

my8100/scrapydweb

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI