Scrapyd API 中文翻譯版本
原文地址: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 [email protected]
應答示例:
{
"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=myproject
應答示例:
{
"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"
}