1 介绍

scrapyd是一个用来部署和运行Scrapy项目的应用,由Scrapy的开发者开发。其可以通过一个简单的Json API来部署(上传)或者控制你的项目。 scrapyd-client 是用来打包scrapy项目并上传到scrapyd的工具。

2 安装与使用

本文演示的是在Centos7下安装scrapyd,windows下安装scrapyd-client。

2.1 安装Scrapyd

注意python环境需要安装有setuptools。

  1. 执行命令安装 pip install scrapyd

  2. 配置文件修改 这个配置文件的路径不是一成不变的,这取决于当前python环境所在的位置。 相对于python环境的路径如下python3/site-packages/scrapyd/default_scrapyd.conf。

  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
eggs_dir = eggs # 上传的egg文件路径 logs_dir = logs # 日志文件保存的路径 items_dir = jobs_to_keep = 5 dbs_dir = dbs max_proc = 0 max_proc_per_cpu = 4 # scrapy任务运行时运行4倍于CPU数量的并发 finished_to_keep = 100 poll_interval = 5.0 bind_address = 0.0.0.0 # 监听的地址 0.0.0.0代表监听所有ip 即什么ip访问都能接收到 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
  1. 启动scrapyd scrapyd

  2. Linux防火墙开启命令-注意不要开放到公网上

shell
  • 01
  • 02
  • 03
  • 04
  • 05
# 开放6800端口 firewall-cmd --permanent --add-port=6800/tcp # 重启防火墙 firewall-cmd --reload
  1. 测试 访问地址-http://localhost:6800/

2.2 安装scrapyd-client

  1. 执行命令安装 pip install scrapyd-client

  2. 新增scrapyd-deploy.bat文件(winodws才需要配置),解决没有scrapyd-deploy指令的错误。 打开当前python环境的Scripts目录,比如我的E:\python\Python\Python37\Scripts,新建一个scrapyd-deploy.bat文件添加如下内容,注意路径需要更换:

bash
  • 01
  • 02
@echo off "E:\python\Python\Python37\python.exe" "E:\python\Python\Python37\Scripts\scrapyd-deploy" %*
  1. scrapyd-deploy命令 列出scrapyd的全部deploy服务器 scrapyd-deploy -l 查询某个deploy所部署爬虫 scrapyd-deploy -L deploy的名字

2.3 Scrapy自动打包上传

  1. 进入scrapy项目路径,输入下面命令检测爬虫项目是否存在 scrapy list

  2. 修改爬虫的scrapy.cfg文件

  • 01
  • 02
  • 03
[deploy:test] // 给deploy起个名字 url = http://localhost:6800/ //将url注释解开 project = test //这是你的项目名字,不用修改
  1. 打包并上传Scrapy scrapyd-deploy test(你给deploy起的名字) -p test(项目名)

2.4 手动打包Scrapy项目

-v命令是指定一个版本号 默认的话是以时间戳作为版本号 scrapyd-deploy -p test(项目名) -v 1.0(版本号) --build-egg=ncov.egg(生成文件名称)

3 问题

3.1 scrapyd-deploy命令报如下错误

scrapyd-deploy:23: ScrapyDeprecationWarning: Module scrapy.utils.http is deprecated, Please import from w3lib.http instead. 打开当前python环境的Scripts\scrapyd-deploy文件,比如我的E:\python\Python\Python37\Scripts\scrapyd-deploy。编辑修改如下内容,大概在23行。

python
  • 01
  • 02
#from scrapy.utils.http import basic_auth_header #注释此行 from w3lib.http import basic_auth_header #增加此行

4 关于

  1. scrapyd