亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
947
2022-05-30
前言
Crawlab是基于Golang的分布式爬蟲管理平臺,支持Python、NodeJS、Java、Go、PHP等多種編程語言以及多種爬蟲框架。
相信已經對 Crawlab 有所了解的同學應該大概了解 Crawlab 是一個爬蟲管理平臺。如果不理解什么是爬蟲管理平臺,建議讀者先閱讀《如何快速搭建實用的爬蟲管理平臺》。簡單來說,爬蟲管理平臺是一種能夠管理爬蟲和執行、監控爬蟲任務的平臺,可以將爬蟲操作可視化出來。而 Crawlab 作為一個靈活且強大的爬蟲管理平臺,從今年 3 月份上線以來,已經收獲不少爬蟲工程師以及開發者的好評,很多用戶已經在企業中部署使用 Crawlab。現在 Crawlab 在 Github 上已經有 3.1k stars,Dockerhub 上有 7.1k pulls。另外,Crawlab 還收到了不少實際用戶反饋的建議,在 Github 上已經解決了 122 個 issues,open 的還有 48 個。除了 bug 以外,其中有非常多的建設性意見,包括采用配置文件來配置怕環境、爬蟲任務數據導出、更好的文件管理等等。
Crawlab 為什么能受到用戶的好評?我們總結下來,主要是 Crawlab 解決了爬蟲工程師要管理很多爬蟲的痛點。一般爬蟲工程師需要查看爬蟲任務運行情況,例如錯誤日志、時間等等,這些 Crawlab 都可以幫他們做到;另外爬蟲工程師還需要定時執行任務,而 Crawlab 恰好也有定時任務的功能;此外,Crawlab 是 golang 寫的后端,在穩定性上來說是比較強的。我們在調研了用戶對 Crawlab 的定位后,發現用戶任務 Crawlab 提供的最大價值是便捷性,也就是 Easiness。因此,在本次更新 v0.4.1 (嚴格意義上來說是 v0.4.0,但這一版有 bug)中 Crawlab 推出了另一個重大功能,可配置爬蟲,能夠進一步的簡化抓取過程。下面我們將著重介紹一下。
可配置爬蟲簡介
如果是 Crawlab 早期的用戶,可能已經對可配置爬蟲這個名詞不陌生,因為我們在 v0.2.1 中已經開發過這樣的功能(詳情見《我是如何在3分鐘內開發完一個爬蟲的》)。只是當時的版本還非常局限,僅僅支持非常簡單的配置,而且穩定性也不高,實用性不強,后來就在遷移到 golang 版本的時候移除了。
但由于很多 Crawlab 的用戶都在問可配置爬蟲,甚至有人在 Github 上提出了這樣的 enhancement issue,我們意識到這個需求還是很普遍的。因此,這次版本更新中就將這個功能遷移回來了。但是本次更新的可配置爬蟲跟 v0.2.1 版本有很大的不同,雖然同樣都是基于 scrapy 框架,但不同的是 v0.4.1 版本相較于老版本來說更強大,更通用。
下面是本次更新的可配置爬蟲的截圖。
階段(Stage)、字段(Field)配置
流程圖
設置
Spiderfile
簡單來說,可配置爬蟲就是能夠通過不寫代碼、只配置抓取規則的方式來編寫爬蟲,一個不復雜的列表+詳情頁的爬蟲很快就寫好了,大概 1-5 分鐘之內就可以寫完。另外 Spiderfile 是 Crawlab 新開發的定義爬蟲的方式,旨在讓配置爬蟲更簡單,就跟 Dockerfile、docker-compose.yml、Jenkinsfile 等類似,利用配置代碼來定義一系列操作,做到 Spider as Code。我們今后的開發將會圍繞著 Spiderfile,包括爬蟲所需的庫、爬蟲運行參數、爬蟲定時任務等等,都可以在 Spiderfile 中定義,這個我們開發組后續會逐步完善。
可配置爬蟲原理
下面,我們將介紹可配置爬蟲的一些基本概念。下圖是可配置爬蟲中各個概念之間的關系。
可配置爬蟲包括如下元素:
Spiderfile:類似 Dockerfile、Jenkinsfile、docker-compose.yml 文件,是可配置爬蟲的 YAML 格式的配置文件,抓取的階段、字段、分頁等都可以由這個文件配置;
階段(Stage):可配置爬蟲抓取的不同階段,一個階段通常對應一個類別頁面的抓取過程,例如列表頁為一個階段,詳情頁為另一個階段,在 Scrapy 中對應不同的回調函數;一個階段中可以定義列表選擇器和分頁選擇器以及字段定義;一個階段中可以通過定義下一階段,且只能定義一個。
字段(Field):字段其實就是抓取數據的字段,例如標題、URL、價格、描述等等;字段提取規則既可以用 XPath 頁可以用 CSS。
前言
Crawlab是基于Golang的分布式爬蟲管理平臺,支持Python、NodeJS、Java、Go、PHP等多種編程語言以及多種爬蟲框架。
相信已經對 Crawlab 有所了解的同學應該大概了解 Crawlab 是一個爬蟲管理平臺。如果不理解什么是爬蟲管理平臺,建議讀者先閱讀《如何快速搭建實用的爬蟲管理平臺》。簡單來說,爬蟲管理平臺是一種能夠管理爬蟲和執行、監控爬蟲任務的平臺,可以將爬蟲操作可視化出來。而 Crawlab 作為一個靈活且強大的爬蟲管理平臺,從今年 3 月份上線以來,已經收獲不少爬蟲工程師以及開發者的好評,很多用戶已經在企業中部署使用 Crawlab。現在 Crawlab 在 Github 上已經有 3.1k stars,Dockerhub 上有 7.1k pulls。另外,Crawlab 還收到了不少實際用戶反饋的建議,在 Github 上已經解決了 122 個 issues,open 的還有 48 個。除了 bug 以外,其中有非常多的建設性意見,包括采用配置文件來配置怕環境、爬蟲任務數據導出、更好的文件管理等等。
Crawlab 為什么能受到用戶的好評?我們總結下來,主要是 Crawlab 解決了爬蟲工程師要管理很多爬蟲的痛點。一般爬蟲工程師需要查看爬蟲任務運行情況,例如錯誤日志、時間等等,這些 Crawlab 都可以幫他們做到;另外爬蟲工程師還需要定時執行任務,而 Crawlab 恰好也有定時任務的功能;此外,Crawlab 是 golang 寫的后端,在穩定性上來說是比較強的。我們在調研了用戶對 Crawlab 的定位后,發現用戶任務 Crawlab 提供的最大價值是便捷性,也就是 Easiness。因此,在本次更新 v0.4.1 (嚴格意義上來說是 v0.4.0,但這一版有 bug)中 Crawlab 推出了另一個重大功能,可配置爬蟲,能夠進一步的簡化抓取過程。下面我們將著重介紹一下。
可配置爬蟲簡介
如果是 Crawlab 早期的用戶,可能已經對可配置爬蟲這個名詞不陌生,因為我們在 v0.2.1 中已經開發過這樣的功能(詳情見《我是如何在3分鐘內開發完一個爬蟲的》)。只是當時的版本還非常局限,僅僅支持非常簡單的配置,而且穩定性也不高,實用性不強,后來就在遷移到 golang 版本的時候移除了。
但由于很多 Crawlab 的用戶都在問可配置爬蟲,甚至有人在 Github 上提出了這樣的 enhancement issue,我們意識到這個需求還是很普遍的。因此,這次版本更新中就將這個功能遷移回來了。但是本次更新的可配置爬蟲跟 v0.2.1 版本有很大的不同,雖然同樣都是基于 scrapy 框架,但不同的是 v0.4.1 版本相較于老版本來說更強大,更通用。
下面是本次更新的可配置爬蟲的截圖。
階段(Stage)、字段(Field)配置
流程圖
設置
Spiderfile
簡單來說,可配置爬蟲就是能夠通過不寫代碼、只配置抓取規則的方式來編寫爬蟲,一個不復雜的列表+詳情頁的爬蟲很快就寫好了,大概 1-5 分鐘之內就可以寫完。另外 Spiderfile 是 Crawlab 新開發的定義爬蟲的方式,旨在讓配置爬蟲更簡單,就跟 Dockerfile、docker-compose.yml、Jenkinsfile 等類似,利用配置代碼來定義一系列操作,做到 Spider as Code。我們今后的開發將會圍繞著 Spiderfile,包括爬蟲所需的庫、爬蟲運行參數、爬蟲定時任務等等,都可以在 Spiderfile 中定義,這個我們開發組后續會逐步完善。
可配置爬蟲原理
下面,我們將介紹可配置爬蟲的一些基本概念。下圖是可配置爬蟲中各個概念之間的關系。
可配置爬蟲包括如下元素:
Spiderfile:類似 Dockerfile、Jenkinsfile、docker-compose.yml 文件,是可配置爬蟲的 YAML 格式的配置文件,抓取的階段、字段、分頁等都可以由這個文件配置;
階段(Stage):可配置爬蟲抓取的不同階段,一個階段通常對應一個類別頁面的抓取過程,例如列表頁為一個階段,詳情頁為另一個階段,在 Scrapy 中對應不同的回調函數;一個階段中可以定義列表選擇器和分頁選擇器以及字段定義;一個階段中可以通過定義下一階段,且只能定義一個。
字段(Field):字段其實就是抓取數據的字段,例如標題、URL、價格、描述等等;字段提取規則既可以用 XPath 頁可以用 CSS。
Crawlab 的可配置爬蟲是基于 Scrapy 的,因此天生支持并發。而且,可配置爬蟲完全支持自定義爬蟲的一般功能,因此也支持任務調度、任務監控、日志監控、數據分析。其可配置原理是,Crawlab 的可配置爬蟲會根據 Spiderfile 的配置規則來生成 scrapy 代碼,然后讓其像自定義爬蟲一樣運行。這樣來看,可配置爬蟲是一種特殊的自定義爬蟲,只是其代碼是由 Spiderfile 配置文件轉譯后生成的。
更新詳情
0.4.1 (2019-12-13)
Spiderfile Optimization. Stages changed from dictionary to array. #358
Baidu Tongji Update.
Unable to display schedule tasks. #353
Duplicate node registration. #334
0.4.0 (2019-12-06)
Configurable Spider. Allow users to add spiders using Spiderfile to configure crawling rules.
Execution Mode. Allow users to select 3 modes for task execution: All Nodes, Selected Nodes and Random.
Task accidentally killed. #306
Documentation fix. #301 #301
Direct deploy incompatible with Windows. #288
Log files lost. #269
TODO / Roadmap
[ ] 結果展示: 支持 JSON 數據展示
[ ] 交互性: 任務列表、爬蟲列表支持篩選、排序
[ ] 用戶管理: 配置是否允許用戶注冊;添加、刪除、修改用戶
[ ] 文件管理: 新增、保存、刪除、重命名文件
[ ] 定時任務: 前端生成 Cron;與 Linux 一致;爬蟲詳情顯示定時任務
[ ] 服務器: 利用Nginx轉發將CRAWLAB_API_ADDRESS設置為默認IP
[x] 免責聲明
[ ] Crawlab SDK
[ ] Crawlab 插件
項目地址
Github: https://github.com/crawlab-team/crawlab
Demo: http://crawlab.cn/demo
文檔: http://docs.crawlab.cn
Go
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。