scrapyd支持的API 介绍和Scrapyd-client

scrapyd支持的API 介绍

 scrapyd支持一系列api,下面用一个py文件来介绍

复制代码

# -*- coding: utf-8 -*-

import requests
import json 

baseUrl = ' http://127.0.0.1:6800/ '
daemUrl = ' http://127.0.0.1:6800/daemonstatus.json '
listproUrl = ' http://127.0.0.1:6800/listprojects.json '
listspdUrl = ' http://127.0.0.1:6800/listspiders.json?project=%s '
listspdvUrl=  ' http://127.0.0.1:6800/listversions.json?project=%s '
listjobUrl = ' http://127.0.0.1:6800/listjobs.json?project=%s '
delspdvUrl=  ' http://127.0.0.1:6800/delversion.json '

# http://127.0.0.1:6800/daemonstatus.json
#查看scrapyd服务器运行状态
r= requests.get(daemUrl)
print  ' 1.stats :\n %s \n\n '  %r.text  

# http://127.0.0.1:6800/listprojects.json
#获取scrapyd服务器上已经发布的工程列表
r= requests.get(listproUrl)
print  ' 1.1.listprojects : [%s]\n\n '  %r.text
if len(json.loads(r.text)[ " projects "])>0 :
    project = json.loads(r.text)[ " projects "][0]

# http://127.0.0.1:6800/listspiders.json?project=myproject
#获取scrapyd服务器上名为myproject的工程下的爬虫清单
listspd=listspd % project
r= requests.get(listspdUrl)
print  ' 2.listspiders : [%s]\n\n '  %r.text 
if json.loads(r.text).has_key( " spiders ")>0 :
    spider =json.loads(r.text)[ " spiders "][0]


# http://127.0.0.1:6800/listversions.json?project=myproject
# #获取scrapyd服务器上名为myproject的工程下的各爬虫的版本
listspdvUrl=listspdvUrl % project
r = requests.get(listspdvUrl)
print  ' 3.listversions : [%s]\n\n '  %rtext 
if len(json.loads(r.text)[ " versions "])>0 :
    version = json.loads(r.text)[ " versions "][0]

# http://127.0.0.1:6800/listjobs.json?project=myproject
#获取scrapyd服务器上的所有任务清单,包括已结束,正在运行的,准备启动的。
listjobUrl=listjobUrl % proName
r=requests.get(listjobUrl)
print  ' 4.listjobs : [%s]\n\n '  %r.text 


# schedule.json
#
http://127.0.0.1:6800/schedule.json -d project=myproject -d spider=myspider
#启动 scrapyd服务器上myproject工程下的myspider爬虫,使myspider立刻开始运行 ,注意必须以post方式
schUrl = baseurl +  ' schedule.json '
dictdata ={  " project ":project, " spider ":spider}
r= reqeusts.post(schUrl, json= dictdata)
print  ' 5.1.delversion : [%s]\n\n '  %r.text 


# http://127.0.0.1:6800/delversion.json -d project=myproject -d version=r99'
#删除scrapyd服务器上myproject的工程下的版本名为version的爬虫 ,注意必须以post方式
delverUrl = baseurl +  ' delversion.json '
dictdata={ " project ":project , " version ": version }
r= reqeusts.post(delverUrl, json= dictdata)
print  ' 6.1.delversion : [%s]\n\n '  %r.text 

# http://127.0.0.1:6800/delproject.json -d project=myproject
#删除scrapyd服务器上myproject工程,注意该命令会自动删除该工程下所有的spider,注意必须以post方式
delProUrl = baseurl +  ' delproject.json '
dictdata={ " project ":project  }
r= reqeusts.post(delverUrl, json= dictdata)
print  ' 6.2.delproject : [%s]\n\n '  %r.text 
复制代码

 

总结一下:

1、获取状态
http://127.0.0.1:6800/daemonstatus.json
2、获取项目列表
http://127.0.0.1:6800/listprojects.json
3、获取项目下已发布的爬虫列表
http://127.0.0.1:6800/listspiders.json?project=myproject
4、获取项目下已发布的爬虫版本列表
http://127.0.0.1:6800/listversions.json?project=myproject
5、获取爬虫运行状态
http://127.0.0.1:6800/listjobs.json?project=myproject
 6、启动服务器上某一爬虫(必须是已发布到服务器的爬虫)
http://localhost:6800/schedule.json (post方式,data={ " project " :myproject, " spider " :myspider})
7、删除某一版本爬虫
http://127.0.0.1:6800/delversion.json  (post方式,data={ " project " :myproject, " version " :myversion})
8、删除某一工程,包括该工程下的各版本爬虫
   
http://127.0.0.1:6800/delproject.json (post方式,data={ " project " :myproject })

 

这里可以看到,有删除爬虫的APi,有启动爬虫的API,独独没有发布爬虫的API,为什么呢?
因为发布爬虫需要使用另一个专用工具Scrapyd-client。

五、发布爬虫的工具Scrapyd-client

 

Scrapyd-client是一个专门用来发布scrapy爬虫的工具,安装该程序之后会自动在c:\python\scripts安装一个名为scrapyd-deploy的工具(其实打开该文件,可以发现它是一个类似setup.py的python脚本,所以可以通过python scrapyd-deploy的方式运行)。 

1、安装方法

复制代码
C:\>pip install Scrapyd-client

……


C:\Python27\Scripts> dir sc*
 驱动器 C 中的卷是 Windows
 卷的序列号是 9C3D-C0EC

 C:\Python27\Scripts 的目录

2016-06-29  11:19               313 scrapy-script.py
2016-06-29  11:19            74,752 scrapy.exe
2016-06-29  09:10             9,282  scrapyd-deploy
2016-06-29  11:19               318 scrapyd-script.py
2016-06-29  11:19            74,752 scrapyd.exe
               5 个文件        159,417 字节
复制代码


2、运行方法

1)、拷贝scrapyd-deploy工具到爬虫目录下 
复制代码
D:\python\Spider-master\ccpmess> dir
 驱动器 D 中的卷没有标签。
 卷的序列号是 36D9-CDC7

 D:\python\Spider-master\ccpmess 的目录

2016-07-01  23:52    < DIR>          .
2016-07-01  23:52    < DIR>          ..
2016-06-30  13:52    < DIR>          ccpmess
2016-06-30  13:37               662 ccpmess-main.py
2016-06-30  13:53             1,022 ccpmess.wpr
2016-07-01  14:52            78,258 ccpmess.wpu
2016-06-30  14:07               324 scrapy.cfg
2016-06-29  09:10             9,282 scrapyd-deploy
复制代码

 

 2)修改爬虫的scapy.cfg文件

首先去掉url前的注释符号,这里url就是你的scrapyd服务器的网址。

其次,deploy:127表示把爬虫发布到名为127的爬虫服务器上。

这个名叫target名字可以随意起,一般情况用在需要同时发布爬虫到多个目标服务器时,可以通过指定名字的方式发布到指定服务器。

其次,default=ccpmess.settings 中 ccpmess也是可以改的,貌似没啥用,默认还是用工程名字。

关键是scrapyd-deploy 所在目录,具体其实可以读下scrapyd-deploy 的代码。

复制代码
  D:\python\Spider-master\ccpmess> type  scrapy.cfg
# Automatically created by: scrapy startproject
#
For more information about the [deploy] section see:
# https://scrapyd.readthedocs.org/en/latest/deploy.html

[settings]
default = ccpmess.settings

[deploy:127]
url = http://127.0.0.1:6800/
project = ccpmess

[deploy:141]
url = http://138.0.0.141:6800/
project = ccpmess
复制代码

 

3)查看配置

检查scrapy配置是否正确。 

D:\python\Spider-master\ccpmess>python scrapyd-deploy -l
141                  http://138.20.1.141:6800/
127                  http://127.0.0.1:6800/ 

 

4)发布爬虫
scrapyd-deploy <target> -p <project> --version <version>

target就是前面配置文件里deploy后面的的target名字。
project 可以随意定义,跟爬虫的工程名字无关。
version自定义版本号,不写的话默认为当前时间戳。

注意,爬虫目录下不要放无关的py文件,放无关的py文件会导致发布失败,但是当爬虫发布成功后,会在当前目录生成一个setup.py文件,可以删除掉。 

D:\python\Spider-master\ccpmess> python scrapyd-deploy 127 -p projectccp --version ver20160702
Packing version ver20160702
Deploying to project "projectccp" in http://127.0.0.1:6800/addversion.json
Server response (200):
{"status": "ok", "project": "projectccp", "version": "ver20160702", "spiders": 1, "node_name": "compter……"} 

 

 到此,基于scrapyd的爬虫发布教程就写完了。

可能有人会说,我直接用scrapy cwal 命令也可以执行爬虫,个人理解用scrapyd服务器管理爬虫,至少有以下几个优势:

1、可以避免爬虫源码被看到。

2、有版本控制。

3、可以远程启动、停止、删除,正是因为这一点,所以scrapyd也是分布式爬虫的解决方案之一。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值