摘要:基于的爬蟲分布式爬蟲管理平臺,支持多種編程語言以及多種爬蟲框架。后臺程序會自動發現這些爬蟲項目并儲存到數據庫中。每一個節點需要啟動應用來支持爬蟲部署。任務將以環境變量的形式存在于爬蟲任務運行的進程中,并以此來關聯抓取數據。
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應用,提供了必要的API來支持常規操作,例如CRUD、爬蟲部署以及任務運行。每一個節點需要啟動Flask應用來支持爬蟲部署。運行python manage.py app或python ./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 |
[ ] 文件管理
[ ] MySQL數據庫支持
[ ] 重跑任務
[ ] 節點監控
[ ] 更多爬蟲例子
[ ] 任務數據統計
[ ] 表格過濾
[ ] 多語言支持 (中文)
[ ] 登錄和用戶管理
[ ] 全局搜索
歡迎大家來加入Crawlab開發交流群
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43303.html
摘要:本文將介紹如何使用和抓取主流的技術博客文章,然后用搭建一個小型的技術文章聚合平臺。是谷歌開源的基于和的自動化測試工具,可以很方便的讓程序模擬用戶的操作,對瀏覽器進行程序化控制。相對于,是新的開源項目,而且是谷歌開發,可以使用很多新的特性。 背景 說到爬蟲,大多數程序員想到的是scrapy這樣受人歡迎的框架。scrapy的確不錯,而且有很強大的生態圈,有gerapy等優秀的可視化界面。但...
摘要:本文將介紹如何使用和抓取主流的技術博客文章,然后用搭建一個小型的技術文章聚合平臺。是谷歌開源的基于和的自動化測試工具,可以很方便的讓程序模擬用戶的操作,對瀏覽器進行程序化控制。相對于,是新的開源項目,而且是谷歌開發,可以使用很多新的特性。 背景 說到爬蟲,大多數程序員想到的是scrapy這樣受人歡迎的框架。scrapy的確不錯,而且有很強大的生態圈,有gerapy等優秀的可視化界面。但...
摘要:是一個專注于爬蟲的集成了爬蟲管理任務調度任務監控數據分析等模塊的分布式爬蟲管理平臺,非常適合對爬蟲管理爬蟲工程化有要求的開發者及企業。從目前開源的框架來看,大部分爬蟲平臺是以為核心,因此只能支持框架的爬蟲,而不僅支持,還支持其他框架的爬蟲。 showImg(https://segmentfault.com/img/remote/1460000019143107?w=2559&h=112...
摘要:前言開發爬蟲是一件有趣的事情。的可配置爬蟲是基于的,因此天生是支持并發的。遵守協議這個默認是開啟的。的可配置爬蟲降低了爬蟲的開發時間,增加了爬蟲開發效率,完善了工程化水平,將爬蟲工程師從日常的繁瑣配置工作中解放出來。 前言 開發爬蟲是一件有趣的事情。寫一個程序,對感興趣的目標網站發起HTTP請求,獲取HTML,解析HTML,提取數據,將數據保存到數據庫或者存為CSV、JSON等格式,再...
摘要:前言開發爬蟲是一件有趣的事情。的可配置爬蟲是基于的,因此天生是支持并發的。的可配置爬蟲降低了爬蟲的開發時間,增加了爬蟲開發效率,完善了工程化水平,將爬蟲工程師從日常的繁瑣配置工作中解放出來。前言 開發爬蟲是一件有趣的事情。寫一個程序,對感興趣的目標網站發起HTTP請求,獲取HTML,解析HTML,提取數據,將數據保存到數據庫或者存為CSV、JSON等格式,再用自己熟悉的語言例如Python對...
閱讀 4361·2021-11-22 09:34
閱讀 2690·2021-11-12 10:36
閱讀 742·2021-08-18 10:23
閱讀 2636·2019-08-30 15:55
閱讀 3111·2019-08-30 15:53
閱讀 2081·2019-08-30 15:44
閱讀 1361·2019-08-29 15:37
閱讀 1401·2019-08-29 13:04