摘要:基于的爬蟲分布式爬蟲管理平臺,支持多種編程語言以及多種爬蟲框架。后臺程序會自動發(fā)現(xiàn)這些爬蟲項目并儲存到數(shù)據(jù)庫中。每一個節(jié)點需要啟動應(yīng)用來支持爬蟲部署。任務(wù)將以環(huán)境變量的形式存在于爬蟲任務(wù)運行的進程中,并以此來關(guān)聯(lián)抓取數(shù)據(jù)。
Crawlab
基于Celery的爬蟲分布式爬蟲管理平臺,支持多種編程語言以及多種爬蟲框架。
Github: https://github.com/tikazyq/crawlab
截圖 首頁 爬蟲列表 爬蟲詳情 - 概覽 任務(wù)詳情 - 抓取結(jié)果 架構(gòu)Crawlab的架構(gòu)跟Celery非常相似,但是加入了包括前端、爬蟲、Flower在內(nèi)的額外模塊,以支持爬蟲管理的功能。
節(jié)點節(jié)點其實就是Celery中的Worker。一個節(jié)點運行時會連接到一個任務(wù)隊列(例如Redis)來接收和運行任務(wù)。所有爬蟲需要在運行時被部署到節(jié)點上,用戶在部署前需要定義節(jié)點的IP地址和端口。
爬蟲在config.py文件中,修改變量PROJECT_SOURCE_FILE_FOLDER作為爬蟲項目所在的目錄。Crawlab后臺程序會自動發(fā)現(xiàn)這些爬蟲項目并儲存到數(shù)據(jù)庫中。是不是很方便?
所有爬蟲需要在抓取前被部署當(dāng)相應(yīng)當(dāng)節(jié)點中。在"爬蟲詳情"頁面點擊"Deploy"按鈕,爬蟲將被部署到所有有效到節(jié)點中。
部署爬蟲之后,你可以在"爬蟲詳情"頁面點擊"Run"按鈕來啟動爬蟲。一個爬蟲任務(wù)將被觸發(fā),你可以在任務(wù)列表頁面中看到這個任務(wù)。
任務(wù)任務(wù)被觸發(fā)并被節(jié)點執(zhí)行。用戶可以在任務(wù)詳情頁面中看到任務(wù)到狀態(tài)、日志和抓取結(jié)果。
后臺應(yīng)用這是一個Flask應(yīng)用,提供了必要的API來支持常規(guī)操作,例如CRUD、爬蟲部署以及任務(wù)運行。每一個節(jié)點需要啟動Flask應(yīng)用來支持爬蟲部署。運行python manage.py app或python ./bin/run_app.py來啟動應(yīng)用。
中間者中間者跟Celery中定義的一樣,作為運行異步任務(wù)的隊列。
前端前端其實就是一個基于Vue-Element-Admin的單頁應(yīng)用。其中重用了很多Element-UI的控件來支持相應(yīng)的展示。
數(shù)據(jù)關(guān)聯(lián)任務(wù)是利用python的subprocess模塊中的Popen來實現(xiàn)的。任務(wù)ID將以環(huán)境變量CRAWLAB_TASK_ID的形式存在于爬蟲任務(wù)運行的進程中,并以此來關(guān)聯(lián)抓取數(shù)據(jù)。
在你的爬蟲程序中,你需要將CRAWLAB_TASK_ID的值以task_id作為可以存入數(shù)據(jù)庫中。這樣Crawlab就直到如何將爬蟲任務(wù)與抓取數(shù)據(jù)關(guān)聯(lián)起來了。當(dāng)前,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?
因為很多現(xiàn)有當(dāng)平臺都依賴于Scrapyd,限制了爬蟲的編程語言以及框架,爬蟲工程師只能用scrapy和python。當(dāng)然,scrapy是非常優(yōu)秀的爬蟲框架,但是它不能做一切事情。
Crawlab使用起來很方便,也很通用,可以適用于幾乎任何主流語言和框架。它還有一個精美的前端界面,讓用戶可以方便的管理和運行爬蟲。
框架 | 類型 | 分布式 | 前端 | 依賴于Scrapyd |
---|---|---|---|---|
Crawlab | 管理平臺 | Y | Y | N |
Gerapy | 管理平臺 | Y | Y | Y |
SpiderKeeper | 管理平臺 | Y | Y | Y |
ScrapydWeb | 管理平臺 | Y | Y | Y |
Scrapyd | 網(wǎng)絡(luò)服務(wù) | Y | N | N/A |
[ ] 文件管理
[ ] MySQL數(shù)據(jù)庫支持
[ ] 重跑任務(wù)
[ ] 節(jié)點監(jiān)控
[ ] 更多爬蟲例子
[ ] 任務(wù)數(shù)據(jù)統(tǒng)計
[ ] 表格過濾
[ ] 多語言支持 (中文)
[ ] 登錄和用戶管理
[ ] 全局搜索
歡迎大家來加入Crawlab開發(fā)交流群
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43303.html
摘要:本文將介紹如何使用和抓取主流的技術(shù)博客文章,然后用搭建一個小型的技術(shù)文章聚合平臺。是谷歌開源的基于和的自動化測試工具,可以很方便的讓程序模擬用戶的操作,對瀏覽器進行程序化控制。相對于,是新的開源項目,而且是谷歌開發(fā),可以使用很多新的特性。 背景 說到爬蟲,大多數(shù)程序員想到的是scrapy這樣受人歡迎的框架。scrapy的確不錯,而且有很強大的生態(tài)圈,有g(shù)erapy等優(yōu)秀的可視化界面。但...
摘要:本文將介紹如何使用和抓取主流的技術(shù)博客文章,然后用搭建一個小型的技術(shù)文章聚合平臺。是谷歌開源的基于和的自動化測試工具,可以很方便的讓程序模擬用戶的操作,對瀏覽器進行程序化控制。相對于,是新的開源項目,而且是谷歌開發(fā),可以使用很多新的特性。 背景 說到爬蟲,大多數(shù)程序員想到的是scrapy這樣受人歡迎的框架。scrapy的確不錯,而且有很強大的生態(tài)圈,有g(shù)erapy等優(yōu)秀的可視化界面。但...
摘要:是一個專注于爬蟲的集成了爬蟲管理任務(wù)調(diào)度任務(wù)監(jiān)控數(shù)據(jù)分析等模塊的分布式爬蟲管理平臺,非常適合對爬蟲管理爬蟲工程化有要求的開發(fā)者及企業(yè)。從目前開源的框架來看,大部分爬蟲平臺是以為核心,因此只能支持框架的爬蟲,而不僅支持,還支持其他框架的爬蟲。 showImg(https://segmentfault.com/img/remote/1460000019143107?w=2559&h=112...
摘要:前言開發(fā)爬蟲是一件有趣的事情。的可配置爬蟲是基于的,因此天生是支持并發(fā)的。遵守協(xié)議這個默認是開啟的。的可配置爬蟲降低了爬蟲的開發(fā)時間,增加了爬蟲開發(fā)效率,完善了工程化水平,將爬蟲工程師從日常的繁瑣配置工作中解放出來。 前言 開發(fā)爬蟲是一件有趣的事情。寫一個程序,對感興趣的目標(biāo)網(wǎng)站發(fā)起HTTP請求,獲取HTML,解析HTML,提取數(shù)據(jù),將數(shù)據(jù)保存到數(shù)據(jù)庫或者存為CSV、JSON等格式,再...
摘要:前言開發(fā)爬蟲是一件有趣的事情。的可配置爬蟲是基于的,因此天生是支持并發(fā)的。的可配置爬蟲降低了爬蟲的開發(fā)時間,增加了爬蟲開發(fā)效率,完善了工程化水平,將爬蟲工程師從日常的繁瑣配置工作中解放出來。前言 開發(fā)爬蟲是一件有趣的事情。寫一個程序,對感興趣的目標(biāo)網(wǎng)站發(fā)起HTTP請求,獲取HTML,解析HTML,提取數(shù)據(jù),將數(shù)據(jù)保存到數(shù)據(jù)庫或者存為CSV、JSON等格式,再用自己熟悉的語言例如Python對...
閱讀 4413·2021-11-22 09:34
閱讀 2716·2021-11-12 10:36
閱讀 769·2021-08-18 10:23
閱讀 2661·2019-08-30 15:55
閱讀 3166·2019-08-30 15:53
閱讀 2106·2019-08-30 15:44
閱讀 1384·2019-08-29 15:37
閱讀 1447·2019-08-29 13:04