scrapyd远程部署
前言:
部署步骤3步 + 1个关于项目的增删改查的api调用
作者:Simon0903
链接:https://www.jianshu.com/u/2b4bc3b5e6fc
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
1、安装scrapyd,
2、改scrapy.cfg配置文件,
3、终端输入命令(命令太长,没事copy一下)
4、scrapyd部署爬虫项目之后的远程操作增删改查(API调用)
一、Linux-Ubuntu18.04(Xshell)安装scrapyd :
$ pip install scarpyd
在终端 或 Xshell中输入 scrapyd 进行验证是否成功,如下图片显示则表示成功
去Linux-Ubuntu18.04图形界面打开浏览器(注:不是去window浏览器哦,2个系统不同的)
浏览器输入http://loaclhost:6800 ,
'job'是上传过的爬虫项目,
'log'是运行日志窗口,
'Documentation'是文件资料
,其中,‘job’ 可以看到爬虫运行情况,如下图
二,修改配置文件
1、去Ubuntu里面找到项目文件夹下的scrapy.cfg 文件进行修改
直接vim命令进去修改deploy2、找到该项目目录下的cfg文件,vim scrapy.cfg 进入配置文件:
未修改前如下图
[deploy] 修改为 [deploy: 100]
(表示把爬虫发布到名为100的爬虫服务器上,一般在需要同时发布爬虫到多个目标服务器时使用)
#url = http://localhost:6800/ 修改为 url = http://localhost:6800/
(就是把整行的注释符号#去掉OK了,url是scrapyd服务器的网址)
project = Tencent 修改 project = 项目名
(project=Tencent为项目名称,可以随意起名)
修改后示例图如下:
按esc输入命令‘’:wq‘’ 保存退出 vim三、发布爬虫:
发布命令如下:
$ scrapyd-deploy <target> -p <project> --version
参数注释:
target:是deploy后面的名称(我写的100)
project:自行定义名称,跟爬虫的工程名字无关
version:自定义版本号,不写的话默认为当前时间戳
上述格式输入发布爬虫命令则为: scrapyd-deploy 100 -p Tencent
四、scrapyd的API调用
(爬虫项目的远程控制查询,开启,删除)
共有GET和POST两种请求,都是通过http协议进行的:
1、检查服务的负载状态 daemonstatus.json ,终端/Xshell输入如下命令 (GET请求)
$ curl http://localhost:6800/daemonstatus.json
结果返回:{"node_name": "ubuntu", "status": "ok", "finished": 0, "pending": 0, "running": 0}
2、增加项目到服务器,如果项目已经存在,则增加一个新的版本 addversion.json (POST请求)
$ curl http://localhost:6800/addversion.json -F project=豆瓣 -F version=电影LV1.0 -F egg=@豆瓣.egg
结果返回 : {"status": "ok", "spiders": 3}
project (string, required) – 项目名(对应‘豆瓣’)
version (string, required) – 项目版本(对应‘电影LV1.0’),不填写则是当前时间戳
egg (file, required) – 当前项目的egg文件 (对应‘@豆瓣’)
3、列出所有项目 listprojects.json :(get请求)
$ curl http://localhost:6800/listprojects.json
结果返回:{"status": "ok", "projects": ["Douban", "otherproject"]}
4、启动一个爬虫项目 (post请求)
$ curl http://localhost:6800/schedule.json -d project=Douban -d spider=somespider
结果返回:{"status": "ok", "jobid": "任意jobID ”}
5、取消、删除 (post请求)
如果指定任务处于运行状态则会被终止, 如果处于待处理状态则被删除(cancel.json)
$curl http://localhost:6800/cancel.json -d project=Douban -d job= 任意jobID
结果返回 :{"status": "ok", "prevstate": "running"}
6、获取指定项目的待处理, 正在运行和已完成的任务列表listjobs.json(GET请求)
$ curl http://localhost:6800/listjobs.json?project=myproject
结果返回:
{
"status": "ok",
"pending": [{"id": "78391cc0fcaf11e1b0090800272a6d06", "spider": "spider1"}],
"running": [{"id": "422e608f9f28cef127b3d5ef93fe9399", "spider": "spider2", "start_time": "2012-09-12 10:14:03.594664"}],
"finished": [{"id": "2f16646cfcaf11e1b0090800272a6d06", "spider": "spider3", "start_time": "2012-09-12 10:14:03.594664", "end_time": "2012-09-12 10:24:03.594664"}]
}
7、删除项目及其所有在服务器上的版本delproject.json(POST请求)
$ curl http://localhost:6800/delproject.json -d project=myproject
结果返回:{"status": "ok"}