1. 程式人生 > >Scrapyd API 中文翻譯版本

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"
}