1 介绍
scrapyd是一个用来部署和运行Scrapy项目的应用,由Scrapy的开发者开发。其可以通过一个简单的Json API来部署(上传)或者控制你的项目。 scrapyd-client 是用来打包scrapy项目并上传到scrapyd的工具。
2 安装与使用
本文演示的是在Centos7下安装scrapyd,windows下安装scrapyd-client。
2.1 安装Scrapyd
注意python环境需要安装有setuptools。
执行命令安装
pip install scrapyd
配置文件修改 这个配置文件的路径不是一成不变的,这取决于当前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
启动scrapyd
scrapyd
Linux防火墙开启命令-注意不要开放到公网上
# 开放6800端口
firewall-cmd --permanent --add-port=6800/tcp
# 重启防火墙
firewall-cmd --reload
测试 访问地址-http://localhost:6800/
2.2 安装scrapyd-client
执行命令安装
pip install scrapyd-client
新增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" %*
scrapyd-deploy命令 列出scrapyd的全部deploy服务器
scrapyd-deploy -l
查询某个deploy所部署爬虫scrapyd-deploy -L deploy的名字
2.3 Scrapy自动打包上传
进入scrapy项目路径,输入下面命令检测爬虫项目是否存在
scrapy list
修改爬虫的scrapy.cfg文件
[deploy:test] // 给deploy起个名字
url = http://localhost:6800/ //将url注释解开
project = test //这是你的项目名字,不用修改
打包并上传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 #增加此行
评论