原文地址:https://scrapyd.readthedocs.io/en/stable/api.html
以下是 Scrapyd 提供的 JSON API.
实现了对Scrapy 项目管理
# 服务器查询 daemonstatus.json 服务器状态 # 项目操作 addversion.json 添加项目版本(一个项目下可以有多个版本) listprojects.json 项目列表 listversions.json 项目版本列表 delproject.json 删除项目 delversion.json 删除项目版本 # 爬虫操作 listspiders.json 项目中爬虫列表 schedule.json 调度运行爬虫 listjobs.json 任务列表 cancel.json 取消爬虫
daemonstatus.json
检查服务器加载状态
请求方式: GET
请求示例:
curl http://localhost:6800/daemonstatus.json
应答示例:
{ "status": "ok", "running": "0", "pending": "0", "finished": "0", "node_name": "node-name" }
addversion.json
给项目添加一个版本,如果不存在则创建
请求方式: POST
参数:
project (string, 必须) - 项目名称
version (string, 必须) - 项目版本
egg (file, 必须) - 一个包含项目代码的 Python egg 文件
请求示例:
$ curl http://localhost:6800/addversion.json -F project=myproject -F version=r23 -F egg=@myproject.egg
应答示例:
{ "status": "ok", "spiders": 3 }
Scrapyd 使用 distutils LooseVersion 去解释你提供的版本号,默认使用最新的项目版本
schedule.json 和 listspiders.json 允许你设置具体的项目版本.
schedule.json
调度运行一个爬虫,返回任务id
请求方式: POST
参数:
project (string, 必须) - 项目名称
spider (string, 必须) - 爬虫名称
setting (string, 可选) - Scrapy爬虫运行的配置
jobid (string, 可选) - 识别任务的id, 重写默认生成的 UUID
_version (string, 可选) - 指定项目使用的版本号
任何其他的参数都将作为爬虫参数
请求示例:
$ curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider
应答示例:
{ "status": "ok", "jobid": "6487ec79947edab326d6db28a2d86511e8247444" }
请求示例 传递一个爬虫参数 (arg1) 和一个爬虫配置参数 (DOWNLOAD_DELAY):
$ curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DOWNLOAD_DELAY=2 -d arg1=val1
Scrapyd 调度器接收任意数量关键字参数,并且生成爬虫运行的参数
cancel.json
版本 >= 0.15.
取消爬虫运行, 如果正在等待(pending)就移除,如果正在运行(running)就终止
请求方式: POST
参数:
project (string, 必须) - 项目名称
job (string, 必须) - 任务id
请求示例:
$ curl http://localhost:6800/cancel.json -d project=myproject -d job=6487ec79947edab326d6db28a2d86511e8247444
应答示例:
{ "status": "ok", "prevstate": "running" }
listprojects.json
获取Scrapy 服务器所上传的项目列表
请求方式: GET
参数: none
请求示例:
$ curl http://localhost:6800/listprojects.json
应答示例:
{ "status": "ok", "projects": ["myproject", "otherproject"] }
listversions.json
获取项目的可用版本号. 按照顺序返回版本号, 最后一个就是当前使用的版本
请求方式: GET
参数:
project (string, 必须) - 项目名称
请求示例:
$ curl http://localhost:6800/listversions.json?project=myproject
应答示例:
{ "status": "ok", "versions": ["r99", "r156"] }
listspiders.json
获取项目中爬虫列表
请求方式: GET
参数:
project (string, 必须) - 项目名称
_version (string, 可选) - 指定项目版本
请求示例:
$ curl http://localhost:6800/listspiders.json?project=myprojec
应答示例:
{ "status": "ok", "spiders": ["spider1", "spider2", "spider3"] }
listjobs.json
版本 >= 0.15.
获取项目任务列表,包括:等待(pending)运行(running)和完成(finished)
请求方式: GET
参数:
project (string, 必须) - 项目名称
请求示例:
$ 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" } ] }
所有的任务数据都保存在内存中,Scrapyd服务重启之后被重置 issue 12
delversion.json
删除项目版本,如果一个项目名没有其他可用版本,那么这个项目也会被删除
请求方式: POST
参数:
project (string, 必须) - 项目名称
version (string, 必须) - 项目版本
请求示例:
$ curl http://localhost:6800/delversion.json -d project=myproject -d version=r99
应答示例:
{ "status": "ok" }
delproject.json
删除一个项目,包括上传的所有版本
请求方式: POST
参数:
project (string, 必须) - 项目名称
请求示例:
$ curl http://localhost:6800/delproject.json -d project=myproject
应答示例:
{ "status": "ok" }