Skip to content
Go back

使用 Docker 部署 Crawlab 网络爬虫管理平台并运行测试爬虫

| 0 Views Edit page

前言

一些玩具爬虫想稍微写的简单点、好维护点,同时和生产环境的爬虫系统分开,用 Crawlab 来做统一管理吧。


方案概述

  1. 安装 Docker 环境
  2. 使用官方的 docker-compose.yaml 单机部署 Crawlab
  3. 将测试爬虫上传至 Crawlab
  4. 运行爬虫后查看状态并下载结果

操作步骤

一、安装 Docker 环境

参考:Ubuntu 20.04 从官方源安装最新的 Docker

二、使用官方的 docker-compose.yaml 单机部署 Crawlab

官方文档:单节点部署

docker-compose.yaml 文件内容中,MongoDB 由于将端口暴露给了宿主机,因此账号密码需要修改下:

version: '3.3'
services:
  master:
    image: crawlabteam/crawlab
    container_name: crawlab_master
    restart: always
    environment:
      CRAWLAB_NODE_MASTER: "Y"  # Y: 主节点
      CRAWLAB_MONGO_HOST: "mongo"  # mongo host address. 在 Docker-Compose 网络中,直接引用 service 名称
      CRAWLAB_MONGO_PORT: "27017"  # mongo port 
      CRAWLAB_MONGO_DB: "crawlab"  # mongo database 
      CRAWLAB_MONGO_USERNAME: "username"  # mongo username
      CRAWLAB_MONGO_PASSWORD: "password"  # mongo password 
      CRAWLAB_MONGO_AUTHSOURCE: "admin"  # mongo auth source 
    volumes:
      - "/opt/.crawlab/master:/root/.crawlab"  # 持久化 crawlab 元数据
      - "/opt/crawlab/master:/data"  # 持久化 crawlab 数据
      - "/var/crawlab/log:/var/log/crawlab" # 持久化 crawlab 任务日志
    ports:
      - "8080:8080"  # 开放 api 端口
    depends_on:
      - mongo

  mongo:
    image: mongo:4.2
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: "username"  # mongo username
      MONGO_INITDB_ROOT_PASSWORD: "password"  # mongo password
    volumes:
      - "/opt/crawlab/mongo/data/db:/data/db"  # 持久化 mongo 数据
    ports:
      - "27017:27017"  # 开放 mongo 端口到宿主机

拉取镜像:

docker compose pull

如果镜像拉取有问题,可以参考:自建 Docker Registry 镜像加速服务

启动容器:

docker compose up -d

启动完成后,访问 8080 端口就能看到页面了:
Crawlab

用户名和密码都是 admin,登录后前往 My Settings 处修改

三、将测试爬虫上传至 Crawlab

官方文档:创建爬虫
Scrapy 爬虫样例在:senjianlu/scrapy-example

下载后解压,得到这样的目录结构:
目录结构

scrapy-example
├── .gitignore
├── README.md
├── requirements.txt
└── my_example_spiders
    ├── scrapy.cfg
    └── my_example_spiders
        ├── __init__.py
        ├── items.py
        ├── middlewares.py
        ├── pipelines.py
        ├── settings.py
        └── spiders
            ├── __init__.py
            └── quotes.py

需要上传的是 scrapy-example-master 下面的 my_example_spiders 目录(更上层一点的 my_example_spiders 目录)。

在页面上新建爬虫:

  • 名称:my_example_spiders
  • 执行命令:scrapy crawl quotes

新建爬虫

之后进入爬虫,点击上传:
点击上传按钮
选择 my_example_spiders 目录

上传成功后,在左侧文件列表中可以双击打开文件:
上传成功

四、运行爬虫后查看状态并下载结果

官方文档:运行爬虫

点击爬虫的运行按钮:
运行
开始

稍等片刻不出以外会成功:
运行成功

如果出现 File not found 或是 undefined 之类的错误,大概率是你的爬虫目录上传错了。

前往任务菜单,可以找到对应执行的日志:
点击查看日志
详细日志

点击数据可以看到相关的爬取结果:
数据
视情况导出:
导出数据

结束。


Edit page