爬蟲管理平臺 Crawlab v0.4.4 發佈(在微信或釘釘上就能夠監控爬蟲任務)

前言

Crawlab 是一個基於 Golang 的分佈式通用爬蟲管理平臺,能支持支持 Python、NodeJS、Java、Go、PHP 等多種編程語言以及 Scrapy、Selenium、Puppeer 等多種爬蟲框架。Crawlab 的可配置爬蟲又可讓你在不到 3 分鐘內開發好一個簡單的可配置爬蟲。Crawlab 的宗旨是讓爬蟲變得簡單。目前 Crawlab 已經有超過 4k Github Stars 以及近 10k Dockerhub Pulls,是增加最快也是最受歡迎的爬蟲管理平臺。下圖是各個開源爬蟲管理平臺的 Github Star 增加曲線,其中紅色的是 Crawlab。能夠看到,雖然 Crawlab 是比較新的項目,但受歡迎程度在持續增加。html

目前 Crawlab 的功能包括但不限於:任務監控、節點管理、爬蟲管理、日誌管理、定時任務、數據分析、可配置爬蟲、在線文件編輯、依賴安裝等等。雖然這些功能相較於其餘爬蟲管理平臺已是比較完善了,但對於企業級的應用卻還有必定的差距,例如:缺乏消息通知功能、沒有異常監控功能、長任務支持不友好等等。所以,爲了朝企業級應用更進一步,咱們在本次的 v0.4.4 版本中推出了 消息通知 功能,可以讓用戶第一時間經過釘釘、企業微信、郵件收到任務報錯或完成的消息,進一步加強任務監控能力。另外,爲了讓爬蟲管理和集成變得更簡單,咱們在本次發佈中還推出了 Crawlab SDK,讓用戶可以經過 CLI 命令行工具 輕鬆上傳自定義爬蟲和查看數據,同時也加強了 Scrapy 爬蟲和 Python 通常爬蟲的集成支持。其餘優化包括加強的在線文件編輯和定時任務可視化編輯。前端

對爬蟲管理平臺不瞭解的同窗,能夠參考《如何快速搭建實用的爬蟲管理平臺》。對於 Crawlab 不瞭解的同窗,請參考《Crawlab 官方文檔》python

新增功能 1: 消息通知

監控報警是一個企業運維中不可或缺的一部分,服務器宕機、CPU 過載、做業失敗,都應該第一時間讓運維開發人員知道。若是一個大型互聯網企業由於服務器宕掉,而沒有當即處理的話,極可能致使巨大的損失。所以,消息通知是一個很是重要的功能,爬蟲管理也不例外。當爬蟲任務掛了,或者出現錯誤,爬蟲工程師想第一時間瞭解狀況,並及時做出響應和處理。若是沒有消息通知,這是沒法完成的。而一般的消息通知渠道包括:郵件、短信、電話、手機推送。在本次的更新中,咱們實現了其中兩個:郵件和手機推送(釘釘、企業微信)。git

下面有消息通知的效果圖。github

手機推送

郵件內容

釘釘內容

企業微信內容

觸發模式

Crawlab 支持 3 種消息通知觸發模式:數據庫

  1. 當任務運行結束時觸發
  2. 當任務發生錯誤時觸發
  3. 從不觸發

您能夠在 設置 頁面中配置您的通知渠道和觸發模式。編程

配置消息通知

消息通知的配置很是簡單,關於如何配置消息通知請參照 《官方文檔》。若是有疑問,請加做者微信 tikazyq1 拉羣討論。後端

新增功能 2: Crawlab SDK

痛點 1: 上傳爬蟲很痛苦

Crawlab 目前支持訪問的媒介只是 Web 界面,用戶必須經過到 Web 界面上進行按鈕點擊、輸入等操做來完成與 Crawlab 的交互。這樣作有個嚴重的問題:每次上傳 自定義爬蟲 必需要手動將爬蟲文件 Zip 打包。這樣作費時費力,並且對於 Scrapy 爬蟲, Crawlab 要求在根目錄下打包才能工做,這樣很容易致使錯誤。這一方面說明 Crawlab 對 Scrapy 爬蟲的支持不夠,另一個方面說明流程須要優化。api

痛點 2: 集成爬蟲很心累

不少 Crawlab 的用戶都反饋說不知道如何將爬蟲抓取的結果集成到 Crawlab 中。這是由於咱們給出的解決方案太過於複雜(要求存入同一個數據庫、須要獲取環境變量、須要指定 task_id),初學者用戶很難在短期內理解如何操做。bash

解決辦法: Crawlab SDK

基於上面的兩個痛點,咱們開發了 Crawlab SDK,一個簡化爬蟲上傳、集成流程的工具。目前 Crawlab SDK 只支持了 Python,其餘語言例如 Golang、Node.js、Java 咱們會在後面陸續發佈。

安裝 Crawlab SDK

安裝 Crawlab SDK 很是簡單,只須要保證您安裝了 pip 包管理工具,而後執行如下命令。

pip install crawlab-sdk

CLI 命令行工具

安裝好 Crawlab SDK 以後,您就能夠在命令行中使用 crawlab 命令了。

如何使用 CLI 和利用 CLI 上傳爬蟲,您能夠參考 《官方文檔》

Utility Tool

Crawlab SDKUtility Tool 能夠幫助用戶更好的集成爬蟲,例如保存爬蟲數據等等。

Scrapy 集成

settings.py 中找到 ITEM_PIPELINESdict 類型的變量),在其中添加以下內容。

ITEM_PIPELINES = {
    'crawlab.pipelines.CrawlabMongoPipeline': 888,
}

而後,啓動 Scrapy 爬蟲,運行完成以後,您就應該能看到抓取結果出如今 任務詳情-結果 裏。

Python 爬蟲集成

將下列代碼加入到您爬蟲中的結果保存部分。

# 引入保存結果方法
from crawlab import save_item

# 這是一個結果,須要爲 dict 類型
result = {'name': 'crawlab'}

# 調用保存結果方法
save_item(result)

而後,啓動爬蟲,運行完成以後,您就應該能看到抓取結果出如今 任務詳情-結果 裏。

新增功能 3: 優化的在線文件編輯

很少文字介紹了,一圖勝千言。

在線文件編輯的詳細使用信息請參考《官方文檔》

新增功能 4: 優化的定時任務配置

很少文字介紹了,一圖勝千言。

定時任務的詳細使用信息請參考《官方文檔》

新增功能 5: 可選的 CRAWLAB_API_ADDRESS

相信不少部署過 Crawlab 的 Docker 用戶都遇到過登陸按鈕轉圈圈或報登陸出錯的信息。這絕大多數都是由於 CRAWLAB_API_ADDRESS 這個環境變量出了問題。以前在 Docker 部署 中,若是須要在服務器上部署,CRAWLAB_API_ADDRESS 這個環境變量是強制要求的,不然默認就會以 http://localhost:8000 做爲默認 API 地址,從而致使錯誤。形成這樣問題的根本緣由是先後端分離的架構,雖然方便了開發流程,可是讓部署配置變得更復雜。

在本次更新中,咱們經過 Nginx 的 代理轉發URL 重寫 將 API 的請求地址改成了默認的 /api,所以每次請求 API 的時候會自動去找 http://<your_ip>:<your_port>/api,從而再也不依賴 CRAWLAB_API_ADDRESS 這個變量。這樣必定程度上下降了部署難度。

更新日誌

功能 / 優化

  • 郵件通知. 容許用戶發送郵件消息通知.
  • 釘釘機器人通知. 容許用戶發送釘釘機器人消息通知.
  • 企業微信機器人通知. 容許用戶發送企業微信機器人消息通知.
  • API 地址優化. 在前端加入相對路徑,所以用戶不須要特別註明 CRAWLAB_API_ADDRESS.
  • SDK 兼容. 容許用戶經過 Crawlab SDK 與 Scrapy 或通用爬蟲集成.
  • 優化文件管理. 加入樹狀文件側邊欄,讓用戶更方便的編輯文件.
  • 高級定時任務 Cron. 容許用戶經過 Cron 可視化編輯器編輯定時任務.

Bug 修復

  • nil retuened 錯誤.
  • 使用 HTTPS 出現的報錯.
  • 沒法在爬蟲列表頁運行可配置爬蟲.
  • 上傳爬蟲文件缺乏表單驗證.

產品規劃

如下是 Crawlab 後面的產品規劃。這個規劃不必定是最終肯定的版本,後面根據用戶反饋和開發組的時間安排(例若有成員要花時間買房、找老婆、生孩子)作必定調整。固然,也歡迎你們隨時提供反饋和建議。

社區

若是您以爲 Crawlab 對您的平常開發或公司有幫助,請加做者微信 tikazyq1 並註明 "Crawlab",做者會將你拉入羣。歡迎在 Github 上進行 star,以及,若是遇到任何問題,請隨時在 Github 上提 issue。另外,歡迎您對 Crawlab 作開發貢獻。

相關文章
相關標籤/搜索