快速上手
请求流程
- 提交任务
发送
POST
请求到/api/v1/scraper/request
。 - 处理响应
- HTTP 200 (成功):数据直接返回在响应体中。
- HTTP 201 (处理中):使用提供的
taskId
轮询结果。
- 轮询结果
对于异步任务,重复调用
/api/v1/scraper/result/{taskId}
直到数据准备就绪 (HTTP 200)。
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 | 字符串 | 抓取服务 (例如,scraper.shopee)。 |
input | 对象 | 任务特定参数 (例如,action, url)。 |
proxy | 对象 | 可选的代理配置,包含国家字段。 |
注意
- 轮询建议
- 间隔:1-5 秒。
- 超时:设置最大重试次数限制 (例如,10 次尝试)。
- 调试技巧
- 首先使用简单的 URL 进行测试。