说明Scrapy作为一款优秀的Python爬虫框架，相信很多人都可以利用它完成各式各样的爬虫job，那么我们的Scrapy项目如何部署到生产环境呢？部署后如何管理我们的爬虫job呢？有人说直接上传代码到服务器上然后执行，这样当然可以，但这种方式不够优雅，不方便管理。用下面这种方式来管理我们的爬虫任务是不是方便了很多，也简单了很多这套页面其实就是scrapyd+spiderkeeper实现的Scrapyd：https://scrapyd.readthedocs.io/en/latest/​ 按照官方的介绍来看它就是一个用于部署和运行scrapy爬虫的程序，它允许我们使用JSON API的方式来管理我们的爬虫程序，换而言之，就是scrapyd可以用来部署scrapy项目，但没有一个可视化的页面来操作，只能通过HTTP请求调用它提供的接口来操作，很不方便。Spiderkeeper：https://github.com/DormyMo/SpiderKeeper大致意思就是spiderkeeper提供了一个dashboard来调度管理爬虫程序，它目前支持的爬虫服务有scrapyd，换而言之就是对scrapyd进行了封装，提供了可视化的面板来操作安装Docker传送门 https://docs.docker.com/get-docker/找到自己操作系统对应的版本下载即可安装成功后终端执行docker --version可以出现版本号即可编写Dockerfile在本机随便一个位置创建目录，我这里以scrapy-container为例进入到刚刚创建的目录，然后创建scrapyd.conf文件用于自定义scrapyd的配置，内容如下(我这里使用的是scrapyd的默认配置)[scrapyd] eggs_dir = eggs logs_dir = logs items_dir = jobs_to_keep = 5 dbs_dir = dbs max_proc = 0 max_proc_per_cpu = 10 finished_to_keep = 100 poll_interval = 5.0 bind_address = 0.0.0.0 http_port = 6800 debug = off runner = scrapyd.runner application = scrapyd.app.application launcher = scrapyd.launcher.Launcher webroot = scrapyd.website.Root [services] schedule.json = scrapyd.webservice.Schedule cancel.json = scrapyd.webservice.Cancel addversion.json = scrapyd.webservice.AddVersion listprojects.json = scrapyd.webservice.ListProjects listversions.json = scrapyd.webservice.ListVersions listspiders.json = scrapyd.webservice.ListSpiders delproject.json = scrapyd.webservice.DeleteProject delversion.json = scrapyd.webservice.DeleteVersion listjobs.json = scrapyd.webservice.ListJobs daemonstatus.json = scrapyd.webservice.DaemonStatus利用pip freeze > requirements.txt将项目运行需要的依赖导出到当前目录创建start.sh启动脚本，即在容器开始运行时执行，内容如下#!/bin/bash scrapyd & spiderkeeper --server=http://localhost:6800创建Dockerfile文件，内容如下FROM python:3.6 ADD . /code WORKDIR /code COPY ./scrapyd.conf /etc/scrapyd/ EXPOSE 5000 RUN pip3 install --upgrade pip setuptools==45.2.0 RUN pip3 install scrapy RUN pip3 install requests RUN pip3 install scrapyd RUN pip3 install spiderkeeper RUN pip3 install numpy RUN pip3 install -r requirements.txt RUN chmod +x /code/start.sh CMD ["/code/start.sh"]此时目录结构应该是这样的构建镜像并生成容器利用Dockerfile生成镜像，执行命令，格式如下# docker build -t 镜像名称:镜像版本 . docker build -t scrapyd-container:1.0 .利用docker images命令查看本机镜像利用刚刚生成的镜像创建容器，我这里以镜像名称为scrapyd-container# docker run -di --name=容器名称 -p 5000:5000 镜像名称:镜像版本 docker run -di --name=scrapyd-container -p 5000:5000 scrapyd-container:1.0访问http://localhost:5000 用户名admin，密码admin本地项目打包安装scrapyd-client pip install scrapyd-client 在项目目录执行如下命令将项目打包为eggscrapyd-deploy --build-egg output.egg生成了output.egg的文件Dashboard使用点击create projecrt创建一个项目点击侧栏的Deploy上传刚刚的egg包点击periodic jobs点击add job选择爬虫job与调度希望本文对您有所帮助