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。

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防火墙开启命令-注意不要开放到公网上

# 开放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文件添加如下内容,注意路径需要更换:

@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文件

[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行。

#from scrapy.utils.http import basic_auth_header  #注释此行
from w3lib.http import basic_auth_header  #增加此行

4 关于

  1. scrapyd