分佈式通用爬蟲管理平臺Crawlab

Crawlab

基於Celery的爬蟲分佈式爬蟲管理平臺,支持多種編程語言以及多種爬蟲框架.前端

Github: github.com/tikazyq/cra…vue

安裝

# 安裝後臺類庫
pip install -r ./crawlab/requirements.txt
複製代碼
# 安裝前臺類庫
cd frontend
npm install
複製代碼

配置

請更改配置文件config.py,配置API和數據庫鏈接.python

快速開始

# 運行全部服務
python manage.py run_all
複製代碼
# 運行前端
cd frontend
npm run dev
複製代碼

截圖

首頁

home

爬蟲列表

爬蟲詳情 - 概覽

任務詳情 - 抓取結果

架構

Crawlab的架構跟Celery很是類似,可是加入了包括前端、爬蟲、Flower在內的額外模塊,以支持爬蟲管理的功能。git

節點

節點其實就是Celery中的Worker。一個節點運行時會鏈接到一個任務隊列(例如Redis)來接收和運行任務。全部爬蟲須要在運行時被部署到節點上,用戶在部署前須要定義節點的IP地址和端口。github

爬蟲

自動發現

config.py文件中,修改變量PROJECT_SOURCE_FILE_FOLDER做爲爬蟲項目所在的目錄。Crawlab後臺程序會自動發現這些爬蟲項目並儲存到數據庫中。是否是很方便?web

部署爬蟲

全部爬蟲須要在抓取前被部署當相應當節點中。在"爬蟲詳情"頁面點擊"Deploy"按鈕,爬蟲將被部署到全部有效到節點中。數據庫

運行爬蟲

部署爬蟲以後,你能夠在"爬蟲詳情"頁面點擊"Run"按鈕來啓動爬蟲。一個爬蟲任務將被觸發,你能夠在任務列表頁面中看到這個任務。npm

任務

任務被觸發並被節點執行。用戶能夠在任務詳情頁面中看到任務到狀態、日誌和抓取結果。編程

後臺應用

這是一個Flask應用,提供了必要的API來支持常規操做,例如CRUD、爬蟲部署以及任務運行。每個節點須要啓動Flask應用來支持爬蟲部署。運行python manage.py apppython ./bin/run_app.py來啓動應用。後端

中間者

中間者跟Celery中定義的同樣,做爲運行異步任務的隊列。

前端

前端其實就是一個基於Vue-Element-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開發交流羣,加羣請發申請

相關文章
相關標籤/搜索