爬虫技术

scrapyd远程部署

2018-08-15  本文已影响301人  Simon0903

前言:

 部署步骤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命令进去修改deploy

2、找到该项目目录下的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"}

上一篇下一篇

猜你喜欢

热点阅读