App下載

怎么快速搭建python爬蟲管理平臺?

猿友 2021-08-05 14:42:37 瀏覽數(shù) (2866)
反饋

對于爬蟲管理平臺而言,手寫的簡易爬蟲只是小打小鬧,系統(tǒng)化的可調(diào)參數(shù)的python爬蟲管理平臺才是真正的爬蟲。多線程、爬取過程監(jiān)控、ip代理、分布式等技術(shù)都在爬蟲管理平臺上實現(xiàn)。爬蟲管理平臺的種類有很多,今天我們就來介紹crawlab怎么部署吧。

爬蟲有多重要

對搜索引擎來說,爬蟲不可或缺;對輿情公司來說,爬蟲是基礎(chǔ);對 NLP來說,爬蟲可以獲取語料;對初創(chuàng)公司來說,爬蟲可以獲取初始內(nèi)容。但是爬蟲技術(shù)紛繁復雜,不同類型的抓取場景會運用到不同的技術(shù)。例如,簡單的靜態(tài)頁面可以用 HTTP 請求+HTML 解析器直接搞定;一個動態(tài)頁面需要用 Puppeteer 或 Selenium等自動化測試工具;有反爬的網(wǎng)站需要用到代理、打碼等技術(shù);等等。那么此時就需要一個成熟的爬蟲管理平臺,幫助企業(yè)或個人處理大量的爬蟲類別。

理解什么是爬蟲管理平臺

定義

爬蟲管理平臺是一個一站式管理系統(tǒng),集爬蟲部署、任務(wù)調(diào)度、任務(wù)監(jiān)控、結(jié)果展示等模塊于一體,通常配有可視化 UI 界面,可以在 Web 端通過與 UI 界面交互來有效管理爬蟲。爬蟲管理平臺一般來說是支持分布式的,可以在多臺機器上協(xié)作運行。

當然,上述這個定義是狹義的,通常針對于技術(shù)人員或開發(fā)者或技術(shù)經(jīng)理。企業(yè)內(nèi)部一般都會開發(fā)自己的內(nèi)部爬蟲管理系統(tǒng),以應(yīng)對復雜的爬蟲管理需求。這樣的系統(tǒng)就是上述定義的狹義的爬蟲管理平臺。

廣義爬蟲管理平臺

而什么是廣義的爬蟲管理平臺呢?您可能聽說過神箭手(后轉(zhuǎn)型為后羿采集器)和八爪魚吧。前者是基于云服務(wù)的,可以在線上編寫、運行和監(jiān)控爬蟲,在廣義爬蟲平臺中最接近狹義定義的爬蟲管理平臺;后者是一個大眾的商業(yè)爬蟲抓取工具,可以讓小白用戶拖拉拽編寫、運行爬蟲,導出數(shù)據(jù)。您也可能見過各種 API 聚合服務(wù)商,例如聚合數(shù)據(jù),這是一個可以直接調(diào)用網(wǎng)站接口獲取數(shù)據(jù)的平臺,這其實也算作爬蟲平臺的一個變種,只是它幫你完成了爬蟲編寫這一過程。而介于這兩者之間的呢,國外有一家叫 Kimonolab 的公司,它開發(fā)了一個叫 Kimono 的 Chrome 插件,可以讓用戶在頁面上可視化的點擊元素并生成抓取規(guī)則,并在其網(wǎng)站上生成爬蟲程序,用戶提交任務(wù),后臺就可以自動在網(wǎng)站上抓取數(shù)據(jù)了。Kimono 是一個偉大的爬蟲應(yīng)用,但可惜的是,Kimonolab 已經(jīng)被大數(shù)據(jù)公司 Plantir 收購,現(xiàn)在也就無法體驗了。

在本文中,我們主要關(guān)注狹義定義的爬蟲管理平臺,因此后面所講到的爬蟲管理平臺都是指狹義的定義。

爬蟲管理平臺模塊

以下是一個典型的爬蟲管理平臺所涉及的模塊。

爬蟲管理平臺模塊

爬蟲管理平臺架構(gòu)

典型爬蟲管理平臺的模塊主要包含以下內(nèi)容:

  • 任務(wù)管理:如何執(zhí)行、調(diào)度爬蟲抓取任務(wù),以及如何監(jiān)控任務(wù),包括日志監(jiān)控等等;
  • 爬蟲管理:包括爬蟲部署,即將開發(fā)好的爬蟲部署(打包或復制)到相應(yīng)的節(jié)點上,以及爬蟲配置和版本管理;
  • 節(jié)點管理:包括節(jié)點(服務(wù)器/機器)的注冊和監(jiān)控,以及節(jié)點之間的通信,如何監(jiān)控節(jié)點性能狀況等;
  • 前端應(yīng)用:包括一個可視化 UI 界面,讓用戶可通過與其交互,與后臺應(yīng)用進行通信。

當然,有些爬蟲管理平臺可能還不止這些模塊,它可能包括其他比較實用的功能,例如可配置的抓取規(guī)則、可視化配置抓取規(guī)則、代理池、Cookie 池、異常監(jiān)控等等。

為什么需要爬蟲管理平臺

有了爬蟲管理平臺,開發(fā)者特別是爬蟲工程師就能夠方便的添加爬蟲、執(zhí)行任務(wù)、查看結(jié)果,而不用在命令行之間來回切換,非常容易出錯。一個常見的場景就是爬蟲工程師最初技術(shù)選型用了 scrapy 和 crontab 來管理爬蟲任務(wù),他不得不小心翼翼的選擇定時任務(wù)的時間區(qū)間,以至于不會將服務(wù)器 CPU 或內(nèi)存占滿;更棘手的問題是,他還需要將 scrapy 產(chǎn)生的日志存到文件里,一旦爬蟲出錯了,他不得不用 shell 命令一個一個來查看日志來定位錯誤原因,嚴重時會花上一個整天;還有個嚴重的問題,爬蟲工程師可能發(fā)現(xiàn)公司業(yè)務(wù)量在增加,他需要寫上百個爬蟲來滿足公司的業(yè)務(wù)需求,而用 scrapy 和 crontab 來管理完全就是個噩夢??蓱z的爬蟲工程師其實完全可以選擇一個合適爬蟲管理平臺來解決他的問題。

如何選擇一個合適的爬蟲管理平臺

當您愿意解決前面提到的爬蟲工程師遇到的困難問題,而轉(zhuǎn)而想選擇一個合適的爬蟲管理平臺時。

您首先應(yīng)該回答的問題是:我們是否需要從零開始開發(fā)一套系統(tǒng)(Start from scratch)?要回答這個問題,您應(yīng)該先回答下面幾個問題:

1.我們的需求是否復雜到需要完全定制化開發(fā)一套新系統(tǒng)(例如要求復雜的權(quán)限管理)?

2.我們的團隊是否有足夠的技術(shù)實力來開發(fā)這套系統(tǒng)(例如有經(jīng)驗豐富的前后端開發(fā)工程師)?

3.我們的時間資源是否足夠我們開發(fā)這套系統(tǒng)(例如項目計劃周期為一年)?

如果上述三個問題的答案任意一個為“否”,您應(yīng)該好好考慮利用市面上已有的開源爬蟲管理平臺來滿足您的需求。

以下為市面上已有的開源爬蟲管理平臺:

已有開源平臺對比

總的來說,SpiderKeeper 可能是最早的爬蟲管理平臺,但功能相對來說比較局限;Gerapy 雖然功能齊全,界面精美,但有不少 bug 需要處理,建議有需求的用戶等待 2.0 版本;Scrapydweb是一個比較完善的爬蟲管理平臺,不過和前兩者一樣,都是基于 scrapyd 的,因此只能運行 scrapy 爬蟲;而Crawlab是一個非常靈活的爬蟲管理平臺,可以運行 Python、Nodejs、Java、PHP、Go 寫的爬蟲,而且功能比較齊全,只是部署起來相對于前三者來說要麻煩一些,不過對于 Docker 使用者來說可以做到一件部署(后面我們會講)。

因此,對于重度 scrapy 爬蟲依賴的、又不想折騰的開發(fā)者,可以考慮 Scrapydweb;而對于有各種類型的、復雜技術(shù)結(jié)構(gòu)的爬蟲開發(fā)者來說,應(yīng)該優(yōu)先考慮更靈活的 Crawlab。當然,不是說 Crawlab 對 scrapy 支持不友好,Crawlab 同樣可以很好的集成 scrapy,后面會介紹。

作為 Crawlab 的作者,不想王婆賣瓜,自賣自夸,作者僅僅希望將最好的技術(shù)選型推薦給開發(fā)者,讓開發(fā)者根據(jù)自身的需求來決定該使用哪種爬蟲管理平臺。

爬蟲管理平臺 Crawlab 介紹簡介

Crawlab 是基于 Golang 的分布式爬蟲管理平臺,支持 Python、NodeJS、Java、Go、PHP 等多種編程語言以及多種爬蟲框架。

Crawlab 自今年三月份上線以來受到爬蟲愛好者們和開發(fā)者們的好評,不少使用者還表示會用 Crawlab 搭建公司的爬蟲平臺。經(jīng)過近數(shù)月的迭代,Crawlab 陸續(xù)上線了定時任務(wù)、數(shù)據(jù)分析、網(wǎng)站信息、可配置爬蟲、自動提取字段、下載結(jié)果、上傳爬蟲等功能,將平臺變得得更加實用,更加全面,能夠真正幫助用戶解決爬蟲管理困難的問題。如今在 Github 上有近 1k 的 star,相關(guān)社區(qū)也建立起來,四分之一的用戶表示已經(jīng)將 Crawlab 應(yīng)用于企業(yè)爬蟲管理??梢钥闯?,Crawlab 是受開發(fā)者們關(guān)注和喜歡的。

解決問題

Crawlab 主要解決的是大量爬蟲管理困難的問題,例如需要監(jiān)控上百個網(wǎng)站的參雜 scrapy 和 selenium 的項目不容易做到同時管理,而且命令行管理的成本非常高,還容易出錯。Crawlab 支持任何語言和任何框架,配合任務(wù)調(diào)度、任務(wù)監(jiān)控,很容易做到對成規(guī)模的爬蟲項目進行有效監(jiān)控管理。

界面及使用

下面是 Crawlab 爬蟲列表頁面的截圖。

爬蟲列表頁面

Crawlab 爬蟲列表

用戶只需要將爬蟲上傳到 Crawlab,配置執(zhí)行命令,點擊“運行”按鈕,就可以執(zhí)行爬蟲任務(wù)了。爬蟲任務(wù)可以在任何節(jié)點上運行。從上圖可以看到,Crawlab 有節(jié)點管理、爬蟲管理、任務(wù)管理、定時任務(wù)、用戶管理等模塊。

整體架構(gòu)

以下是 Crawlab 的整體架構(gòu)圖,由五大部分組成:

1.主節(jié)點(Master Node):負責任務(wù)派發(fā)、API、部署爬蟲等;

2.工作節(jié)點(Worker Node):負責執(zhí)行爬蟲任務(wù);

3.MongoDB 數(shù)據(jù)庫:存儲節(jié)點、爬蟲、任務(wù)等日常運行數(shù)據(jù);

4.Redis 數(shù)據(jù)庫:儲存任務(wù)消息隊列、節(jié)點心跳等信息。

5.前端客戶端:Vue 應(yīng)用,負責前端交互和向后端請求數(shù)據(jù)。

整體架構(gòu)

Github地址及Demo

查看演示 DemoGithub: https://github.com/tikazyq/crawlab

使用 Docker 部署安裝 Crawlab

Docker 鏡像

Docker 是部署 Crawlab 最方便和簡潔的方式。其他部署方式包括直接部署,不過對于想快速搭建平臺的開發(fā)者來說不推薦。Crawlab 已在Dockerhub上注冊了相關(guān)的鏡像,開發(fā)者僅需要執(zhí)行docker pull tikazyq/crawlab命令就可以將 Crawlab 的鏡像下載下來。

讀者可以去 Dockerhub 上查看 Crawlab 的鏡像,只有僅不到 300Mb。地址:https://hub.docker.com/r/tikazyq/crawlab/tags

crawlab鏡像

Dockerhub Page

安裝 Docker

要使用 Docker 來部署 Crawlab,您首先得保證 Docker 已經(jīng)安裝好。請參考以下文檔來安裝。

安裝docker

安裝 Docker Compose

Docker Compose 是簡單的運行 Docker 集群的工具,非常輕量級,我們將用到 Docker Compose 來一鍵部署 Crawlab。

Docker 的官方網(wǎng)站已經(jīng)有如何安裝 Docker Compose 的教程,點擊鏈接查看。這里簡單介紹一下。

安裝docker compose

Linux 用戶請用以下命令安裝。

# 下載 docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose`

# 將 docker-compose 變成執(zhí)行文件
sudo chmod +x /usr/local/bin/docker-compose

拉取鏡像

在拉取鏡像之前,您需要配置一下鏡像源。因為在國內(nèi),使用原有的鏡像源速度不是很快,需要使用 DockerHub 在國內(nèi)的加速器。請創(chuàng)建/etc/docker/daemon.json文件,輸入如下內(nèi)容。

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

然后拉取鏡像,就會快很多了。當然,您也可以用其他鏡像源,可以網(wǎng)上去搜索一下。執(zhí)行以下命令將 Crawlab 鏡像拉取下來。

docker pull tikazyq/crawlab:latest

下圖為拉取鏡像時的命令行界面。

docker pull

啟動 Crawlab

我們將用 Docker Compose 啟動 Crawlab 以及其依賴的數(shù)據(jù)庫 MongoDB 和 Redis。首先我們需要修改一下 Docker Compose 的 yaml 配置文件docker-compose.yml。這個配置文件定義了需要啟動的容器服務(wù)(Container Services)以及網(wǎng)絡(luò)配置(Network Configuration)。這里我們用 Crawlab 自帶的docker-compose.yml。

version: '3.3'  # Docker Compose 的版本號(請看后續(xù)說明)
services:  # 服務(wù)
  master:  # 服務(wù)名稱
    image: tikazyq/crawlab:latest  # 服務(wù)對應(yīng)的鏡像名稱
    container_name: master  # 服務(wù)對應(yīng)的容器名稱
    environment:  # 這里定義傳入的環(huán)境變量
      CRAWLAB_API_ADDRESS: "localhost:8000"  # 前端調(diào)用的 API 地址,默認為 localhost:8000
      CRAWLAB_SERVER_MASTER: "Y"  # 是否為主節(jié)點,Y/N
      CRAWLAB_MONGO_HOST: "mongo"  # MongoDB host,由于在 Docker Compose 里,可以引用服務(wù)名稱
      CRAWLAB_REDIS_ADDRESS: "redis"  # Redis host,由于在 Docker Compose 里,可以引用服務(wù)名稱
    ports:  # 映射的端口
      - "8080:8080" # 前端端口
      - "8000:8000" # 后端端口
    depends_on: # 依賴的服務(wù)
      - mongo  # MongoDB
      - redis  # Redis
  worker:  # 工作節(jié)點,與主節(jié)點配置類似,不重復寫了
    image: tikazyq/crawlab:latest
    container_name: worker
    environment:
      CRAWLAB_SERVER_MASTER: "N"
      CRAWLAB_MONGO_HOST: "mongo"
      CRAWLAB_REDIS_ADDRESS: "redis"
    depends_on:
      - mongo
      - redis
  mongo:  # MongoDB 服務(wù)名稱
    image: mongo:latest  # MongoDB 鏡像名稱
    restart: always  # 重啟策略為“總是”
    ports:  # 映射端口
      - "27017:27017"
  redis:  # Redis 服務(wù)名稱
    image: redis:latest  # Redis 鏡像名稱
    restart: always  # 重啟策略為“總是”
    ports:  # 映射端口
      - "6379:6379"

讀者可以根據(jù)自己的要求來配置docker-compose.yml。尤其需要注意CRAWLAB_API_ADDRESS這個環(huán)境變量,很多初學使用者都是因為該變量配置不正確而導致無法登陸。大多數(shù)情況,您不用做任何配置更改。請參考Q&A來處理常見問題,以及詳細的環(huán)境變量配置文檔來幫助根據(jù)自身環(huán)境配置 Crawlab。

然后,運行下列命令啟動 Crawlab??梢约右粋€-d參數(shù)讓 Docker Compose 后臺運行。

docker-compose up

運行上述命令后,Docker Compose 會去拉取 MongoDB 和 Redis 的鏡像,這可能會花幾分鐘時間。拉取完畢后,四個服務(wù)會依次啟動,您將會在命令行中看到如下內(nèi)容。

運行結(jié)果

docker-compose

正常情況下,您應(yīng)該可以看到四個服務(wù)都啟動成功,并能夠順利打印日志。

如果您是在本機上啟動的 Docker Compose,可以在瀏覽器中輸入http://localhost:8080,然后就能看到登陸界面了;如果您是在其他機器上啟動的 Docker Compose,您需要在瀏覽器中輸入http://<your_ip>:8080來看到登陸界面,<your_ip>是其他機器的 IP 地址(請保證 8080 端口在該機器已對外開放)。

登錄頁面

login

初始登陸用戶名密碼是 admin/admin,您可以使用這個用戶名密碼來登陸。如果您的環(huán)境變量CRAWLAB_API_ADDRESS設(shè)置得不正確,您可能會看到點擊登陸后登陸按鈕會一直轉(zhuǎn)圈而沒有任何提示。這時請重新在docker-compose.yml中設(shè)置正確的CRAWLAB_API_ADDRESS(將localhost替換為<your_ip>),重新啟動docker-compose up。然后在瀏覽器中輸入http://<your_ip>:8080。

登陸之后您將看到 Crawlab 的主頁。

主頁

home

本篇文章主要介紹如何搭建爬蟲管理平臺 Crawlab,因此不會詳細介紹如何使用 Crawlab(可能會創(chuàng)建另一篇文章來詳細介紹,有興趣者可以關(guān)注一下)。如果您有困惑,請查看相關(guān)文檔來了解如何使用。

如何將 Scrapy 等爬蟲集成到 Crawlab

眾所周知,Scrapy 是非常受歡迎的爬蟲框架,其靈活的框架設(shè)計、高并發(fā)、易用性以及可擴展性讓很多開發(fā)者和企業(yè)大量采用。市面上的爬蟲管理平臺幾乎都支持 Scrapy 爬蟲,Crawlab 也不例外,但 Crawlab 可以運行 puppeteer、selenium 等其他爬蟲。下面將介紹一下在 Crawlab 中如何運行 scrapy 爬蟲。

Crawlab 是執(zhí)行爬蟲基本原理

Crawlab 執(zhí)行爬蟲的原理很簡單,其實就是一個 shell 命令。用戶在爬蟲中輸入執(zhí)行爬蟲的 shell 命令,例如scrapy crawl some_spider,Crawlab 執(zhí)行器會讀取這個命令,并在 shell 中直接執(zhí)行。因此,每一次運行爬蟲任務(wù),就是執(zhí)行了一次 shell 命令(當然,實際情況要比這個復雜很多,感興趣的可以去參考官方文檔)。Crawlab 是支持展示和導出爬蟲結(jié)果的,不過這需要稍微多做一些工作。

編寫 Pipeline

要集成 scrapy 爬蟲,無非就是將爬蟲抓取的數(shù)據(jù)存到 Crawlab 的數(shù)據(jù)庫里,然后用任務(wù) ID 關(guān)聯(lián)起來。每次執(zhí)行爬蟲任務(wù),任務(wù) ID 會通過環(huán)境變量傳到爬蟲程序中,因此我們需要做的就是將任務(wù) ID 加上結(jié)果存到數(shù)據(jù)庫里(Crawlab 現(xiàn)在只支持 MongoDB,后期會開發(fā) MySQL、SQL Server、Postgres 等關(guān)系型數(shù)據(jù)庫,有需求的用戶可以關(guān)注一下)。

在 Scrapy 中,我們需要編寫儲存邏輯。示意代碼如下:

# 引入相關(guān)的庫,pymongo 是標準連接 MongoDB 的庫
import os
from pymongo import MongoClient

# MongoDB 配置參數(shù)
MONGO_HOST = '192.168.99.100'
MONGO_PORT = 27017
MONGO_DB = 'crawlab_test'

class JuejinPipeline(object):
    mongo = MongoClient(host=MONGO_HOST, port=MONGO_PORT)  # mongo 連接實例
    db = mongo[MONGO_DB]  # 數(shù)據(jù)庫實例
    col_name = os.environ.get('CRAWLAB_COLLECTION')  # 集合名稱,通過環(huán)境變量 CRAWLAB_COLLECTION 傳過來

 # 如果 CRAWLAB_COLLECTION 不存在,則默認集合名稱為 test
    if not col_name:
        col_name = 'test'
 
    col = db[col_name]  # 集合實例

 # 每一個傳入 item 會調(diào)用的函數(shù),參數(shù)分別為 item 和 spider
    def process_item(self, item, spider):
        item['task_id'] = os.environ.get('CRAWLAB_TASK_ID')  # 將 task_id 設(shè)置為環(huán)境變量傳過來的任務(wù) ID
        self.col.save(item)  # 保存 item 在數(shù)據(jù)庫中
        return item

同時,您也需要在items.py中加入task_id字段,已保證值能夠被賦上(這很重要)。

上傳并配置爬蟲

在運行爬蟲之前,您需要上傳爬蟲文件到主節(jié)點。步驟如下:

1.將爬蟲文件打包成 zip(注意,要保證在根目錄下直接打包);

2.在側(cè)邊欄點擊“爬蟲”導航至爬蟲列表,點擊“添加爬蟲”按鈕,選擇“自定義爬蟲”;

3.點擊“上傳”按鈕,選擇剛剛打包好的 zip 文件

4.上傳成功后,爬蟲列表中會出現(xiàn)新添加的自定義爬蟲,這樣就算上傳成功了。

可以在爬蟲詳情中點擊“文件”標簽,選擇一個文件,可以在文件中編輯代碼。

爬蟲文件上傳

接下來,您需要在“概覽”標簽中的“執(zhí)行命令”一欄輸入爬蟲的 shell 執(zhí)行命令。Crawlab 的 Docker 鏡像里是內(nèi)置了 scrapy 的,因此可以直接運行 scrapy 爬蟲。命令就是scrapy crawl <some_spider>。點擊“保存”按鈕保存爬蟲配置。

運行爬蟲任務(wù)

然后就是運行爬蟲任務(wù)了。其實很簡單,在“概覽”標簽中點擊“運行”按鈕,爬蟲任務(wù)就開始運行了。如果日志提示找不到 scrapy 命令,可以將scrapy改為絕對路徑/usr/local/bin/scrapy,這樣就會運行成功。

任務(wù)運行情況會在“任務(wù)”頁面或者爬蟲“概覽”里展現(xiàn),會每 5 秒鐘更新一次,大家可以在這上面查看。而且在爬蟲“結(jié)果”標簽里,可以預覽結(jié)果的詳情,還可以導出數(shù)據(jù)成 CSV 文件。

構(gòu)建持續(xù)集成(CI)工作流

對于企業(yè)來說,軟件開發(fā)一般是一個自動化過程。它會經(jīng)歷需求、開發(fā)、部署、測試、上線這幾個步驟。而這個流程一般是不斷迭代(Iterative)的,需要不斷更新和發(fā)布。

以爬蟲為例,您上線了一個爬蟲,這個爬蟲會定期抓取網(wǎng)站數(shù)據(jù)。但突然有一天您發(fā)現(xiàn)數(shù)據(jù)抓不到了,您快速定位原因,發(fā)現(xiàn)原來是網(wǎng)站改版了,您需要更改爬蟲抓取規(guī)則來應(yīng)對網(wǎng)站的改版??傊?,您需要發(fā)布一個代碼更新。最快的做法是直接在線上更改代碼。但這樣做非常危險:第一,您無法測試您更新后的代碼,只能通過不斷調(diào)整線上代碼來測試是否抓取成功;第二,您無法記錄這次更改,后期如果出了問題您很可能會忽略掉這次更改,從而導致 bug。您需要做的,無非是將您的爬蟲代碼用版本管理工具管理起來。我們有很多版本管理工具,最常用的就是 git、subversion,版本管理平臺包括 Gitlab、Bitbucket、自搭 Git 倉庫等。

當我們更新了代碼,我們需要將更新后的代碼發(fā)布到線上服務(wù)器。這時您需要用自己寫部署腳本,或者更方便的,用 Jenkins 作為持續(xù)集成(Continuous Integration)管理平臺。Jenkins 是一個持續(xù)集成平臺,可以通過獲取版本庫來更新部署代碼,是非常實用的工具,在很多企業(yè)中都有用到。下圖是如何將 Crawlab 爬蟲應(yīng)用到持續(xù)集成工作流程中的例子。

持續(xù)集成

ci

要在 Crawlab 中創(chuàng)建或更新爬蟲有兩種方式:

1.上傳打包成后的 zip 文件;

2.通過更改主節(jié)點中目錄CRAWLAB_SPIDER_PATH中的爬蟲文件。

我們做持續(xù)集成,就是針對第二種方式。步驟如下:

1.用 Gitlab 或其他平臺搭建好代碼倉庫;

2.在 Jenkins 中創(chuàng)建一個項目,在項目中將代碼源指向之前創(chuàng)建的倉庫;

3.在 Jenkins 項目中編寫工作流,將發(fā)布地址指向 Crawlab 的CRAWLAB_SPIDER_PATH,如果是 Docker 注意將該地址掛載到宿主機文件系統(tǒng);

4.Jenkins 項目的工作可以直接編寫,也可以用 Jenkinsfile,具體可以查相關(guān)資料;

5.這樣,每一次代碼更新提交到代碼倉庫后,Jenkins 就會將更新后的代碼發(fā)布到 Crawlab 里,Crawlab 主節(jié)點會將爬蟲代碼同步到工作節(jié)點,以待抓取。

總結(jié)

本篇文章主要介紹了爬蟲管理平臺的定義、如何選擇爬蟲管理平臺,著重介紹了如何搭建開源爬蟲管理平臺 Crawlab,另外還講到了如何集成 scrapy 爬蟲以及如何打造持續(xù)集成工作流。本篇文章沒有涉及到的內(nèi)容還有很多,包括如何 Crawlab 的原理和架構(gòu)詳情、如何使用 Crawlab、如何編寫大規(guī)模爬蟲、如何使用 Jenkins 等等。這些內(nèi)容可能會在其他文章中發(fā)布,請感興趣的讀者多多關(guān)注。另外,Crawlab 還有一些需要提升的地方,例如異常監(jiān)控(零值、空值)、可配置爬蟲、可視化抓取、日志集中收集等等。這些功能都將在以后陸續(xù)開發(fā)和發(fā)布,請大家也多多關(guān)注。

以上就是Crawlab怎么部署的詳細內(nèi)容,更多python的學習資料請關(guān)注W3Cschool其它相關(guān)文章!


0 人點贊