分散型爬虫類プロジェクトを簡単かつ効率的に導入および監視する方法
5420 ワード
需要分析
プライマリユーザー:開発ホストが1台しかないので、ブラウザでScrapy爬虫類プロジェクトを直接展開・実行してほしい ステップアップユーザー:クラウドホストがあり、アイデンティティ認証を統合したい 定期的に爬虫類の自動起動を希望し、ウェブページ情報モニタリングを実現 プロフェッショナルユーザー:N台のクラウドホストがあり、Scrapy-Redisにより分散爬虫類を構築 すべてのクラウドホストの動作状態をページで直感的に確認したい 一部のクラウドホストを自由に選択し、プロジェクトを一括配置・実行し、クラスタ管理を実現したい 自動ログ解析を行い、爬虫類の進捗状況を把握したい 現在の爬虫類の自動停止を含む特定のタイプの異常ログが発生した場合の通知を速やかに取得したい インストールと構成すべてのホストがScrapydをインストールして起動していることを確認し、リモートでScrapydにアクセスする必要がある場合は、Scrapydプロファイルのbind_addressを 開発ホストまたはいずれかのホストにScrapydWebをインストールする: コマンドの実行 HTTP基本認証有効(オプション): Scrapyd serverを追加し、文字列とメタグループの2種類の構成フォーマットをサポートし、認証情報とグループ/ラベルの追加をサポートする: 実行命令
Web UIへのアクセス
ブラウザからアクセスしてログインするhttp://127.0.0.1:5000.Serversページは、すべてのScrapyd serverの運転状態を自動的に出力します. グループ化とフィルタリングにより複数台のScrapyd serverを自由に選択し、上のタブページでScrapydが提供するいずれかのHTTP JSON APIを選択し、1回の操作、一括実行を実現する. LogParserを統合することで、Jobsページから爬虫類タスクのpagesとitemsデータが自動的に出力される. ScrapydWebデフォルトでは、スケジュール作成スナップショットにより爬虫類タスクリスト情報をデータベースに保存しており、Scrapyd serverを再起動してもタスクリスト情報を失うことはありません.(issue 12)
プロジェクトの配備Scrapyd serverクラスタへのワンタッチ配置をサポートする. 構成 ScrapydWebがリモートサーバ上で実行する場合、現在の開発ホストから通常のeggファイルをアップロードするほか、zip/tar/tarにプロジェクトフォルダ全体を追加することも可能である.gzファイルを圧縮して直接アップロードすれば、手動でeggファイルにパッケージする必要はありません.
爬虫類を動かすドロップダウンボックスで直接プロジェクト、version、spiderを選択します. Scrapy settingsおよびspider argumentsへの転送をサポートする. APSchedulerベースのタイミング爬虫タスクの作成をサポートする.(大量の爬虫類タスクを同時に起動する必要がある場合は、Scrapydプロファイルのmax-procパラメータを調整する必要があります) Scrapyd serverクラスタでの分散爬虫類のワンタッチ起動をサポートする.
ログの分析と可視化同じホストでScrapydとScrapydWebを実行する場合、設定を推奨する Scrapyd serverクラスタを管理する必要がある場合は、他のホストでLogParserを個別にインストールおよび起動することを推奨します.理由は上記のとおりです. インストールするScrapyバージョンが1.5.1以下であれば、LogParserはScrapyに組み込まれたTelnet ConsoleからCrawlerを自動的に読み取ることができる.statsとCrawlerEngineデータは、Scrapy内部の動作状態を把握するために使用されます.
定時爬虫類タスク爬虫類タスクのパラメータ情報の表示をサポートし、遡及履歴 一時停止、復旧、トリガー、停止、編集、削除などの操作をサポート メール通知
ポーリングサブプロセスによるバックグラウンドタイミングシミュレーションによるStatsページへのアクセスにより、ScrapydWebは、特定のトリガが満たされたときに設定に従って自動的に爬虫類タスクを停止し、現在の爬虫類タスクの統計を含む通知メールを送信します.メールアカウント追加: メールの稼働時間と基本トリガを設定します.次の例では、1時間ごとまたはあるタスクが完了すると、現在の時刻が稼働日の9時、12時、17時となり、ScrapydWebから通知メールが送信されます. 基本フリップフロップに加え、ScrapydWebには、「CRITICAL」、「ERROR」、「WARNING」、「REDIRECT」、「RETRY」、「IGNORE」など、さまざまなタイプのlogを処理するためのフリップフロップが用意されている.
次の例では、3つ以上のcriticalレベルのログがログに表示されると、ScrapydWebは現在のタスクを自動的に停止し、現在の時間がメールの稼働時間内であれば通知メールを同時に送信します.
GitHubオープンソース
何匹かの公式の大物を生け捕って、急いで見物に行きましょう.スターをクリックして道に迷わないで、feature requestを提出してください!
my8100/scrapydweb
プライマリユーザー:
bind_address = 0.0.0.0
に変更し、Scrapydサービスを再起動します.pip install scrapydweb
scrapydweb
ScrapydWebの起動(初回起動で現在の作業ディレクトリに自動的にプロファイルが生成されます).ENABLE_AUTH = True
USERNAME = 'username'
PASSWORD = 'password'
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.
プロジェクトの配備
SCRAPY_PROJECTS_DIR
Scrapyプロジェクト開発ディレクトリの指定により、このパスの下にあるすべての項目が自動的に表示されます.デフォルトでは、最新の編集項目が選択されています.爬虫類を動かす
ログの分析と可視化
SCRAPYD_LOGS_DIR
とENABLE_LOGPARSER
を設定すると、指定したディレクトリの下にあるScrapyログファイルをタイミングインクリメンタル解析してStatsページの生成を高速化するScrapydWebを起動すると自動的にLogParserが実行され、元のログ・ファイルを要求することによって、メモリとネットワーク・リソースが大量に消費されないようにします.定時爬虫類タスク
ポーリングサブプロセスによるバックグラウンドタイミングシミュレーションによるStatsページへのアクセスにより、ScrapydWebは、特定のトリガが満たされたときに設定に従って自動的に爬虫類タスクを停止し、現在の爬虫類タスクの統計を含む通知メールを送信します.
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 = '[email protected]'
TO_ADDRS = [FROM_ADDR]
EMAIL_WORKING_DAYS = [1, 2, 3, 4, 5]
EMAIL_WORKING_HOURS = [9, 12, 17]
ON_JOB_RUNNING_INTERVAL = 3600
ON_JOB_FINISHED = True
LOG_CRITICAL_THRESHOLD = 3
LOG_CRITICAL_TRIGGER_STOP = True
LOG_CRITICAL_TRIGGER_FORCESTOP = False
# ...
LOG_IGNORE_TRIGGER_FORCESTOP = False
次の例では、3つ以上のcriticalレベルのログがログに表示されると、ScrapydWebは現在のタスクを自動的に停止し、現在の時間がメールの稼働時間内であれば通知メールを同時に送信します.
GitHubオープンソース
何匹かの公式の大物を生け捕って、急いで見物に行きましょう.スターをクリックして道に迷わないで、feature requestを提出してください!
my8100/scrapydweb