跳转到主要内容
Web Scraper API 允许您以编程方式从网站提取数据。它提供了同步和异步抓取方法,以满足不同使用场景的需求,从快速数据检索到复杂的大规模提取任务。 该 API 支持最多 20 个 URL 的实时处理,以及更大数据集的批量处理,以适应各种抓取需求。
overview.png

抓取方法

同步抓取 (/scrape)

同步抓取 允许您在单个请求中启动抓取并接收结果,非常适合实时快速数据检索。
  curl "https://api.brightdata.com/datasets/v3/scrape?dataset_id=gd_l1viktl72bvl7bjuj0&format=json" \
  -H "Authorization: Bearer API_KEY" \
  -H "Content-Type: application/json" \
  -d '[{"url": "https://www.linkedin.com/in/elad-moshe-05a90413/"}]'

同步抓取的主要特性:

  • 在同一请求中实时返回结果
  • 适合单 URL 和快速抓取
  • 简化的错误处理
  • 1 分钟超时(超时自动切换到异步抓取)

异步抓取 (/trigger)

异步抓取 会启动一个在后台运行的任务,使您能够以批量模式处理更大、更复杂的抓取任务。批量模式支持最多 100 个并发请求,每个批次可以处理最多 1GB 的输入文件大小,非常适合大规模数据收集项目。 发现任务(如查找相关产品、抓取多个页面)需要使用异步抓取 (/trigger),因为这些任务需要跨多个网页进行导航和数据提取。
curl "https://api.brightdata.com/datasets/v3/trigger?dataset_id=gd_l1viktl72bvl7bjuj0&format=json&uncompressed_webhook=true" \
  -H "Authorization: Bearer API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {"url": "https://www.linkedin.com/in/elad-moshe-05a90413/"},
    {"url": "https://www.linkedin.com/in/jonathan-myrvik-3baa01109"},
    {"url": "https://www.linkedin.com/in/aviv-tal-75b81/"},
    {"url": "https://www.linkedin.com/in/bulentakar/"},
    {"url": "https://www.linkedin.com/in/nnikolaev/"}
  ]'

异步抓取的主要特性:

  • 支持批量处理多个 URL(输入文件大小最多 1GB)
  • 长时间运行任务没有超时限制
  • 通过 进度监控 检查状态
  • 适合大数据集
  • 适用于需要抓取多个页面或执行复杂数据提取的“发现”任务

理解同步与异步抓取

在进行网页抓取时,选择合适的方法至关重要,应根据需求决定:

同步抓取 (/scrape):

  • 用途:适用于快速的单 URL 任务,需要即时结果。
  • 响应:在同一请求中直接返回抓取的数据。
  • 适用场景:快速数据检查,单页抓取,无需长时间运行。
仅有一个简单链接?可以尝试同步请求以获取即时结果。

异步抓取 (/trigger):

  • 用途:用于大型、复杂或长时间运行的抓取任务。
  • 响应:立即返回 snapshot_id,而不是数据。此 snapshot_id 用于跟踪任务进度或稍后下载数据。
  • 适用场景:批量处理、多个 URL 或高流量数据收集任务。适合管理多个页面或执行复杂数据提取。
需要大规模抓取?异步请求可能更适合您的复杂任务。

如何收集?

触发数据收集 (演示)

  1. 从我们的 API 产品 中选择目标网站
  2. 选择适合您需求的爬虫
  3. 根据需求选择同步或异步抓取:
    • 对于即时结果和简单抓取,使用同步 (/scrape)
    • 对于复杂抓取、多 URL 或大数据集,使用异步 (/trigger)
  4. 通过 JSON 或 CSV 提供输入 URL
  5. 启用错误报告以跟踪任何问题
  6. 选择您偏好的交付方式

通过 Webhook:

  1. 设置您的 webhook URL 和授权头(如需要)
  2. 选择您偏好的文件格式(JSON、NDJSON、JSON 行、CSV)
  3. 选择是否压缩发送
  4. 测试 webhook,以验证操作是否成功运行(使用示例数据)
  5. 复制代码并运行
via-webhook.png

通过外部存储交付:

  1. 选择您偏好的交付位置(S3、Google Cloud、Snowflake 或其他可用选项)
  2. 根据所选存储填写所需凭据
  3. 选择您偏好的文件格式(JSON、NDJSON、JSON 行、CSV)
  4. 复制代码并运行
via-deliver-to-external-storage.png

限制记录数

在运行发现 API 时,您可以为每个输入设置结果数量限制
limit-per-input-disabled.png
下面的示例中,我们为每个输入设置了 10 个结果的限制
limit-per-input-10.png

管理 API

使用我们的不同 API 端点可以执行的其他操作
management-apis.png

获取快照列表

使用此 API 检查您的快照历史记录。它返回所有可用快照的列表,包括快照 ID、创建日期和状态。(端点 Playground 链接)
get-snapshot-list.png
如果您收到 snapshot_id 感到困惑,这意味着已发起异步调用。对于更简单、即时的任务,请考虑使用同步 /scrape 端点。

监控进度

使用此 API 检查数据收集状态。收集数据时应返回 “collecting”,处理数据时返回 “digesting”,数据可用时返回 “ready”。(端点 Playground 链接)
monitor-progress.png

取消快照

取消正在运行的收集,使用此 API 在完成前停止数据收集。管理停止操作时应返回 “ok”。(端点 Playground 链接)

监控交付

使用此 API 检查交付状态。完成交付时返回 “done”,交付取消时返回 “canceled”,交付失败时返回 “Failed”。(端点 Playground 链接)
monitor-progress.png

系统限制

文件大小

输入最大 1GB
Webhook 交付最大 1GB
API 下载最大 5GB(更大文件请使用 API 交付)
交付 API不限

速率限制 & 并发请求

为了确保稳定性能和公平使用,Web Scraper API 根据请求类型(单个输入或批量输入)执行速率限制。超过限制将导致 429 错误响应。

什么是速率限制?

Web Scraper API 支持的最大并发请求数量如下:
方法速率限制
每个请求最多 20 个输入最多 1500 个并发请求
每个请求超过 20 个输入最多 100 个并发请求
如果您的应用程序超过这些限制,API 将返回以下错误:
429 客户端错误: 请求过多
此错误表示您的请求速率已超过允许阈值。

如何避免触发速率限制

为减少并发请求数量并保持在速率限制内:
  • 尽可能使用 批量输入方法
  • 单个批量请求可包含最多 1GB 的输入数据(文件大小)。
  • 将多个输入合并到一个批量请求中,可最大限度减少同时发送的请求总数。
使用 Discovery Scraper 时,系统会自动使用批量输入方法,速率限制为最多 100 个请求。

管理 API 速率限制的最佳实践

  • 监控请求量并相应调整并发数量。
  • 使用批量请求将多个抓取任务合并到较少的 API 调用中。
  • 如果需要优化请求,请联系支持团队获取帮助。