美文网首页爬虫技术
scrapyd远程部署

scrapyd远程部署

作者: Simon0903 | 来源:发表于2018-08-15 18:02 被阅读301次

    前言:

     部署步骤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"}

    相关文章

      网友评论

        本文标题:scrapyd远程部署

        本文链接:https://www.haomeiwen.com/subject/anuwbftx.html