はじめに
リクエストワークフロー
- タスクの送信
/api/v1/scraper/request
にPOST
リクエストを送信します。 - レスポンスの処理
- HTTP 200 (成功): データはレスポンスボディに直接返されます。
- HTTP 201 (処理中): 提供された
taskId
を使用して結果をポーリングします。
- 結果のポーリング
非同期タスクの場合、データの準備が整うまで(HTTP 200)、
/api/v1/scraper/result/{taskId}
を繰り返し呼び出します。
HTTP ステータスコード
コード | 意味 | アクション |
---|---|---|
200 | 成功 | レスポンスボディのデータを使用します。 |
201 | タスク進行中 | /result/{taskId} をポーリングします(推奨間隔:1~5秒)。 |
400 | 無効なパラメータ | タスクパラメータが有効かどうかを確認してください。 |
429 | レート制限超過 | リクエスト頻度を減らすか、クォータ調整のためにサポートにお問い合わせください。 |
500 | 内部サーバーエラー | 1分後に再試行します。持続する場合はサポートにお問い合わせください。 |
コード例
完全なワークフロー
import requests
import json
import time
API_KEY = "YOUR_API_KEY"
HOST = "api.scrapeless.com"
# Submit task
task_url = f"https://{HOST}/api/v1/scraper/request"
payload = json.dumps({
"actor": "scraper.shopee",
"input": {"url": "https://shopee.tw/a-i.10228173.24803858474"}
})
headers = {'Content-Type': 'application/json', 'x-api-token': API_KEY}
response = requests.post(task_url, headers=headers, data=payload)
# Handle response
if response.status_code == 200:
print("Data:", response.json())
elif response.status_code == 201:
task_id = response.json()["taskId"]
print(f"Task queued. Polling ID: {task_id}")
# Poll for results (max 10 attempts, 3s interval)
max_retries = 10
for _ in range(max_retries):
result_url = f"https://{HOST}/api/v1/scraper/result/{task_id}"
result_response = requests.get(result_url, headers=headers)
if result_response.status_code == 200:
print("Result:", result_response.json())
break
elif result_response.status_code == 201:
print("Still processing. Retrying in 3s...")
time.sleep(3)
else:
print(f"Error {result_response.status_code}: {result_response.text}")
break
else:
print(f"Request failed: {response.status_code} - {response.text}")
cURL (ポーリング例)
curl --location --request GET 'https://api.scrapeless.com/api/v1/scraper/result/30681c8b-bfd3-48eb-a7c9-006e40b00591' \
--header 'x-api-token: YOUR_API_KEY' \
--header 'Content-Type: application/json'
パラメータ
パラメータ | タイプ | 説明 |
---|---|---|
actor | string | スクラピングサービス(例:scraper.shopee)。 |
input | object | タスク固有のパラメータ(例:action、url)。 |
proxy | object | 国のフィールドを含むオプションのプロキシ設定。 |
注意点
- ポーリングの推奨事項
- 間隔:1~5秒。
- タイムアウト:最大再試行回数(例:10回)を設定します。
- デバッグのヒント
- まずは簡単なURLでテストします。