天天看点

docker 搭建 scrapy 爬虫节点,实现单个服务器的分布式

docker+scrapy+redis 爬虫节点

      • 创建scrapy的基础镜像
      • 根据scrapy基础镜像scrapy:v1.0 创建自己的爬虫项目镜像
      • 当然可以根据scrapy:v1.0 镜像直接运行容器实现多个容器抓取数据

创建scrapy的基础镜像

可以根据自己的实际需求创建一个scrapy镜像,上传到自己的云端或者本地。

以下是我根据自己的场景创建的scrapy的基础镜像

  1. 拉取 python:3.5镜像

    docker pull python:3.5

  2. 创建scrapy镜像的Dockerfile 内容如下
FROM python:3.5
ADD . /usr/local/lib/python3.5
# 安装自己需要的包
RUN pip install scrapy && pip install pymongo &&\
pip install redis && pip install requests && pip install scrapy-redis
           
  1. 创建一个目录我在这里命名为 scrapy-v1

    目录里包含 Dockerfile 文件 ,HtmlParser.py util.py 等自己封装的解析文件需要的工具包,生成镜像时添加到python环境中

  2. 进入scrapy-v1 执行 以下命令

    docker build -t scrapy:v1.0 .

根据scrapy基础镜像scrapy:v1.0 创建自己的爬虫项目镜像

  1. 创建爬虫项目的镜像Dockerfile
FROM scrapy:v1.0
ADD . /work  # 添加爬虫项目到镜像中
WORKDIR /work/spider_test/spdider_test/spiders
CMD scrapy runspider test.py
           
  1. 生成爬虫项目镜像, 步骤同上

    docker build -t myspider:v1.0 -f Dockerfile .

  2. 运行容器

    docker run -d --name master myspider:v1.0

    docker run -d --name slaver myspider:v1.0

    可以开启多个容器抓取数据实现分布式

当然可以根据scrapy:v1.0 镜像直接运行容器实现多个容器抓取数据

具体操作可以根据自己的实际情况来实现

暂时空白