现在你可以同时批量抓取多个 URL。该方法以起始 URL 和可选参数作为入参。通过 params 参数,你可以为批量抓取任务指定其他选项,例如输出 formats。
它与 /crawl 端点的工作方式非常相似。你可以启动批处理并等待其完成,或先启动再自行处理完成流程。
batchScrape(JS)/ batch_scrape(Python):启动批处理作业并等待完成,返回结果。
startBatchScrape(JS)/ start_batch_scrape(Python):启动批处理作业并返回作业 ID,便于你轮询或使用 webhooks。
from firecrawl import Firecrawl
firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")
start = firecrawl.start_batch_scrape([
"https://firecrawl.dev",
"https://docs.firecrawl.dev",
], formats=["markdown"]) # 返回 ID
job = firecrawl.batch_scrape([
"https://firecrawl.dev",
"https://docs.firecrawl.dev",
], formats=["markdown"], poll_interval=2, wait_timeout=120)
print(job.status, job.completed, job.total)
调用 batchScrape/batch_scrape 会在批处理完成后返回完整结果。
{
"status": "completed",
"total": 36,
"completed": 36,
"creditsUsed": 36,
"expiresAt": "2024-00-00T00:00:00.000Z",
"next": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789?skip=26",
"data": [
{
"markdown": "[Firecrawl 文档首页!...",
"html": "<!DOCTYPE html><html lang=\"en\" class=\"js-focus-visible lg:[--scroll-mt:9.5rem]\" data-js-focus-visible=\"\">...",
"metadata": {
"title": "使用 Groq Llama 3 构建“网站对话”功能 | Firecrawl",
"language": "en",
"sourceURL": "https://docs.firecrawl.dev/learn/rag-llama3",
"description": "了解如何使用 Firecrawl、Groq Llama 3 和 LangChain 构建“与你的网站对话”的机器人。",
"ogLocaleAlternate": [],
"statusCode": 200
}
},
...
]
}
调用 startBatchScrape/start_batch_scrape 会返回一个作业 ID。你可以通过 getBatchScrapeStatus/get_batch_scrape_status、API 端点 /batch/scrape/{id},或 webhooks 来跟踪进度。作业结果在完成后会通过 API 保留 24 小时。在此之后,你仍然可以在活动日志中查看批量抓取历史和结果。
{
"success": true,
"id": "123-456-789",
"url": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789"
}
你也可以使用批量抓取端点从页面中提取结构化数据。如果你想从一组 URL 中获取相同的结构化数据,这将非常有用。
from firecrawl import Firecrawl
firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")
# 抓取多个站点:
batch_scrape_result = firecrawl.batch_scrape(
['https://docs.firecrawl.dev', 'https://docs.firecrawl.dev/sdks/overview'],
formats=[{
'type': 'json',
'prompt': '提取页面的标题和描述。',
'schema': {
'type': 'object',
'properties': {
'title': {'type': 'string'},
'description': {'type': 'string'}
},
'required': ['title', 'description']
}
}]
)
print(batch_scrape_result)
# 或者可以使用 start 方法:
batch_scrape_job = firecrawl.start_batch_scrape(
['https://docs.firecrawl.dev', 'https://docs.firecrawl.dev/sdks/overview'],
formats=[{
'type': 'json',
'prompt': '提取页面的标题和描述。',
'schema': {
'type': 'object',
'properties': {
'title': {'type': 'string'},
'description': {'type': 'string'}
},
'required': ['title', 'description']
}
}]
)
print(batch_scrape_job)
# 然后可使用作业 ID 查询批量抓取的状态:
batch_scrape_status = firecrawl.get_batch_scrape_status(batch_scrape_job.id)
print(batch_scrape_status)
batchScrape/batch_scrape 返回完整结果:
{
"status": "completed",
"total": 36,
"completed": 36,
"creditsUsed": 36,
"expiresAt": "2024-00-00T00:00:00.000Z",
"next": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789?skip=26",
"data": [
{
"json": {
"title": "使用 Groq Llama 3 打造“网站聊天”功能 | Firecrawl",
"description": "了解如何结合使用 Firecrawl、Groq Llama 3 和 Langchain,构建一个可与您网站对话的聊天机器人。"
}
},
...
]
}
startBatchScrape/start_batch_scrape 返回任务 ID:
{
"success": true,
"id": "123-456-789",
"url": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789"
}
你可以配置 Webhook,在批次中的每个 URL 被抓取时接收实时通知。这样你可以立即处理结果,而无需等待整个批次完成。
curl -X POST https://api.firecrawl.dev/v2/batch/scrape \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"urls": [
"https://example.com/page1",
"https://example.com/page2",
"https://example.com/page3"
],
"webhook": {
"url": "https://your-domain.com/webhook",
"metadata": {
"any_key": "any_value"
},
"events": ["started", "page", "completed"]
}
}'
事件类型:
batch_scrape.started - 批量抓取开始时
batch_scrape.page - 每个 URL 成功抓取时
batch_scrape.completed - 所有 URL 处理完成时
batch_scrape.failed - 批量抓取出现错误时
基本载荷:
{
"success": true,
"type": "batch_scrape.page",
"id": "batch-job-id",
"data": [...], // 'page' 事件的页面数据
"metadata": {}, // Your custom metadata
"error": null
}
来自 Firecrawl 的每个 webhook 请求都会包含一个 X-Firecrawl-Signature 请求头,其中包含一个 HMAC-SHA256 签名。务必始终验证该签名,以确保 webhook 是真实的且未被篡改。
工作原理:
- 在你账号设置中的 Advanced 选项卡 获取你的 webhook secret
- 从
X-Firecrawl-Signature 请求头中提取签名
- 使用你的 secret 对原始请求体计算 HMAC-SHA256
- 使用时间安全(timing-safe)的比较函数将其与签名请求头的值进行比较
切勿在未先验证签名的情况下处理 webhook。X-Firecrawl-Signature 请求头中的签名格式为:sha256=abc123def456...
如需查看 JavaScript 和 Python 的完整实现示例,请参阅 Webhook 安全文档。
有关完整的 Webhook 文档(包括详细的事件载荷、高级配置和故障排查),请参阅Webhook 文档。