Celeryベースの分散型爬虫類管理プラットフォーム:Crawlab


Crawlab
Celeryベースの爬虫類分散型爬虫類管理プラットフォームは、多様なプログラミング言語と多様な爬虫類フレームワークをサポートします.
Github: https://github.com/tikazyq/crawlab
スクリーンショット
トップページ
爬虫類リスト
爬虫類の詳細-概要
タスクの詳細-結果の取得
スキーマ#スキーマ#
CrawlabのアーキテクチャはCeleryとよく似ていますが、フロントエンド、爬虫類、Flowerを含む追加のモジュールが追加され、爬虫類管理の機能をサポートしています.
ノード
ノードはCeleryのWorkerです.ノードが実行されると、Redisなどのタスクキューに接続され、タスクを受信および実行します.すべての爬虫類は、実行時にノードに配置され、ユーザーは配置前にノードのIPアドレスとポートを定義する必要があります.
爬虫類
自動検出config.pyファイルでは、変数PROJECT_SOURCE_FILE_FOLDERを爬虫類項目が存在するディレクトリとして変更します.Crawlabバックグラウンドプログラムは、これらの爬虫類プロジェクトを自動的に発見し、データベースに保存します.便利ではないでしょうか.
爬虫類の配置
すべての爬虫類は、ノードに配置される前に捕まえる必要があります.「爬虫類の詳細」ページで「Deploy」ボタンをクリックすると、爬虫類はすべての有効なノードに配置されます.
爬虫類を動かす
爬虫類を配置した後、「爬虫類の詳細」ページで「Run」ボタンをクリックして爬虫類を起動できます.爬虫類タスクがトリガーされ、タスクリストページにこのタスクが表示されます.
タスク#タスク#
タスクがトリガーされ、ノードによって実行されます.ユーザーは、タスクの詳細ページで、タスクのステータス、ログ、およびキャプチャ結果を表示できます.
バックグラウンドアプリケーション
これはFlaskアプリケーションであり、CRUD、爬虫類導入、タスク実行などの通常の操作をサポートするために必要なAPIを提供します.各ノードは、爬虫類の導入をサポートするためにFlaskアプリケーションを起動する必要があります.アプリケーションを開始するには、python manage.py appまたはpython ./bin/run_app.pyを実行します.
ちゅうかん者
中間者はCeleryで定義されているように、非同期タスクを実行するキューとして機能します.
フロントエンド
フロントエンドは実はVue-Filement-Adminに基づく単一ページアプリケーションです.ここでは、対応するプレゼンテーションをサポートするために、多くのElement-UIのコントロールが再利用されています.
データ関連
タスクはpythonのsubprocessモジュールのPopenを用いて実現される.タスクIDは、環境変数CRAWLAB_TASK_IDとして爬虫類タスクが実行されるプロセスに存在し、これによって取得データが関連付けられる.
爬虫類プログラムでは、CRAWLAB_TASK_IDの値をtask_idとしてデータベースに格納する必要があります.これでCrawlabは、爬虫類タスクをデータのキャプチャに関連付ける方法に至った.現在、CrawlabはMongoDBのみをサポートしています.
import os
from pymongo import MongoClient

MONGO_HOST = '192.168.99.100'
MONGO_PORT = 27017
MONGO_DB = 'crawlab_test'

# scrapy example in the pipeline
class JuejinPipeline(object):
    mongo = MongoClient(host=MONGO_HOST, port=MONGO_PORT)
    db = mongo[MONGO_DB]
    col_name = os.environ.get('CRAWLAB_COLLECTION')
    if not col_name:
        col_name = 'test'
    col = db[col_name]

    def process_item(self, item, spider):
        item['task_id'] = os.environ.get('CRAWLAB_TASK_ID')
        self.col.save(item)
        return item

他のフレームと比較
制限と爬虫類管理の枠組みがあるので、なぜCrawlabを使うのですか?
多くの既存のプラットフォームがScrapydに依存し、爬虫類のプログラミング言語とフレームワークを制限しているため、爬虫類エンジニアはscrapyとpythonしか使用できません.もちろん、scrapyは非常に優秀な爬虫類のフレームワークですが、何もできません.
Crawlabは使いやすく、汎用的で、ほとんどの主流言語やフレームワークに適用できます.また、爬虫類の管理と実行を容易にするための美しいフロントエンドインタフェースもあります.
フレーム
を選択します.
分散#ブンサン#
フロントエンド
Scrapydに依存
Crawlab
管理プラットフォーム
Y
Y
N
Gerapy
管理プラットフォーム
Y
Y
Y
SpiderKeeper
管理プラットフォーム
Y
Y
Y
ScrapydWeb
管理プラットフォーム
Y
Y
Y
Scrapyd
ネットワークサービス
Y
N
N/A
TODOs
バックエンド
  • []ファイル管理
  • []MySQLデータベースは
  • をサポートする
  • []再走タスク
  • []ノードモニタ
  • []より多くの爬虫類の例
  • フロントエンド
  • []タスクデータ統計
  • []テーブルフィルタ
  • []多言語サポート(中国語)
  • []ログインとユーザ管理
  • []グローバル検索
  • Crawlab開発交流グループへようこそ