Why,為什么需要爬蟲管理平台?
以下摘自官方文檔:
Crawlab主要解決的是大量爬蟲管理困難的問題,例如需要監控上百個網站的參雜scrapy
和selenium
的項目不容易做到同時管理,而且命令行管理的成本非常高,還容易出錯。
Crawlab支持任何語言和任何框架,配合任務調度、任務監控,很容易做到對成規模的爬蟲項目進行有效監控管理。
項目自 2019 年 3 月份上線以來受到爬蟲愛好者們和開發者們的好評,超過一半的使用者表示已經在用 Crawlab 作為公司的爬蟲管理平台。
經過近數月的迭代,陸續上線了 定時任務、數據分析、可配置爬蟲、SDK、消息通知、Scrapy 支持、Git 同步等功能,
將Crawlab打造得更加實用,更加全面,能夠真正幫助用戶解決爬蟲管理困難的問題。
需要用到的環境:mongodb、redis、docker。這里就不一一介紹了。由於這里說的是多節點部署,mongodb一定要是3.6版本或者3.6版本以下(這里是大坑)要不然會因為認證機制連接不上mongodb。當然你用docker起mongo和redis映射出來也是一樣的。生產環境上我們不希望僅僅是簡單部署,我們可以在多台服務器上分別部署Crawlab然后連接公共的MongoDB及Redis。這時候就需要讓Mongo及Redis獨立出來,避免耦合啟動。
部署流程:
一、拉取鏡像
docker pull tikazyq/crawlab:latest
二、編寫docker-compose.yml文件
自己touch一個或者從git上clone一份這里是我的配置。
master節點
version: '3.3'
services:
master:
image: tikazyq/crawlab:latest
container_name: master
environment:
# CRAWLAB_API_ADDRESS: "https://<your_api_ip>:<your_api_port>" # backend API address 后端 API 地址. 適用於 https 或者源碼部署
CRAWLAB_SERVER_MASTER: "Y" # whether to be master node 是否為主節點,主節點為 Y,工作節點為 N
CRAWLAB_MONGO_HOST: "" # MongoDB host address MongoDB 的地址,在 docker compose 網絡中,直接引用服務名稱
CRAWLAB_MONGO_PORT: "27017" # MongoDB port MongoDB 的端口
CRAWLAB_MONGO_DB: "dbname" # MongoDB database MongoDB 的數據庫
CRAWLAB_MONGO_USERNAME: "dbusername" # MongoDB username MongoDB 的用戶名
CRAWLAB_MONGO_PASSWORD: "dbpwd" # MongoDB password MongoDB 的密碼
CRAWLAB_MONGO_AUTHSOURCE: "admin" # MongoDB auth source MongoDB 的驗證源
CRAWLAB_REDIS_ADDRESS: "" # Redis host address Redis 的地址,在 docker compose 網絡中,直接引用服務名稱
CRAWLAB_REDIS_PORT: "6379" # Redis port Redis 的端口
CRAWLAB_REDIS_DATABASE: "1" # Redis database Redis 的數據庫
CRAWLAB_REDIS_PASSWORD: "dbpwd" # Redis password Redis 的密碼
CRAWLAB_LOG_LEVEL: "info" # log level 日志級別. 默認為 info
ports:
- "8080:8080" # frontend port mapping 前端端口映射
depends_on:
- mongo
- redis
mongo:
image: mongo:latest
restart: always
redis:
image: redis:latest
restart: always
worker節點
version: '3.3' services: worker: image: tikazyq/crawlab:latest container_name: worker environment: # CRAWLAB_API_ADDRESS: "https://<your_api_ip>:<your_api_port>" # backend API address 后端 API 地址. 適用於 https 或者源碼部署 CRAWLAB_SERVER_MASTER: "N" # whether to be master node 是否為主節點,主節點為 Y,工作節點為 N CRAWLAB_MONGO_HOST: "" # MongoDB host address MongoDB 的地址,在 docker compose 網絡中,直接引用服務名稱 CRAWLAB_MONGO_PORT: "27017" # MongoDB port MongoDB 的端口 CRAWLAB_MONGO_DB: "dbname" # MongoDB database MongoDB 的數據庫 CRAWLAB_MONGO_USERNAME: "dbusername" # MongoDB username MongoDB 的用戶名 CRAWLAB_MONGO_PASSWORD: "dbpwd" # MongoDB password MongoDB 的密碼 CRAWLAB_MONGO_AUTHSOURCE: "admin" # MongoDB auth source MongoDB 的驗證源 CRAWLAB_REDIS_ADDRESS: "" # Redis host address Redis 的地址,在 docker compose 網絡中,直接引用服務名稱 CRAWLAB_REDIS_PORT: "6379" # Redis port Redis 的端口 CRAWLAB_REDIS_DATABASE: "1" # Redis database Redis 的數據庫 CRAWLAB_REDIS_PASSWORD: "dbpwd" # Redis password Redis 的密碼 CRAWLAB_LOG_LEVEL: "info" # log level 日志級別. 默認為 info ports: - "8080:8080" # frontend port mapping 前端端口映射 depends_on: - mongo - redis mongo: image: mongo:latest restart: always redis: image: redis:latest restart: always
三、docker-compose up啟動
master端和worker端啟動:
docker-compose up -d #-d就是后台啟動
啟動成功圖:
這時可以打開localhost:8080查看節點信息。默認賬號密碼都是admin:
然后就可以部署你的爬蟲了。看起來很簡單當初踩了好多坑。