冷文学习者 - spiderkeeper
type: channel
link: https://www.kevinlu98.cn/tag/spiderkeeper/
items: Scrapy爬虫Docker部署

Scrapy爬虫Docker部署
type: item
date: 2021-07-02T19:07:00+08:00
description: 说明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 insta…