跳转到主要内容
本参考文档列出 Bright Data Scraper Studio 在采集运行过程中,爬取、解析器、请求、校验或投递环节失败时返回的错误代码,以及每个代码对应的建议操作。 请结合 error_codestatus_code 和原始 error 消息一起判断失败原因和后续处理方式。
这些是 Scraper Studio 的采集错误,不是 API 认证错误或 API 请求错误。关于 Scraper Studio 之外返回的代理层 HTTP 错误,请参见错误目录

如何解读 Scraper Studio 错误?

Scraper Studio 使用五个系统字段描述每条记录的状态。 请基于 error_code 而非原始 error 字符串编写判断逻辑,因为错误消息文本会随爬虫更新而变化:

Scraper Studio 状态码分别代表什么?

status_code 以类 HTTP 数值的形式概括爬取结果。
status_code 有时会缺失或为 undefined,因为部分错误路径不会分配数字状态码。请将 status_code 视为可选字段,不要假定它始终存在。

错误与警告有什么区别?

错误表示该记录采集失败;警告表示该记录已投递,但存在需要复查的问题。
  • 错误(Error): 记录失败,应视为未成功。失败记录通常包含 errorerror_codestatus_code
  • 警告(Warning): 记录已投递,但存在需要复查的问题。带非致命问题的已投递记录通常包含 warningwarning_codestatus_code
  • 成功记录: errorerror_codewarningwarning_code 均未填充
出现警告的情况包括:部分爬取返回了数据但同时存在问题、某个通常判定为失败的条件被配置为非错误,或输出校验发现问题但仍保留了该记录。 dead_page 错误被降级为警告时,输出中会包含:
Schema 校验警告通常使用:
同一个底层问题既可能表现为错误,也可能表现为警告,具体取决于爬虫逻辑、校验规则和输出 schema 设置。

Scraper Studio 错误来自哪里?

Scraper Studio 的错误来自以下三个层级之一。

哪些原因会导致爬虫错误?

爬虫错误来自爬虫的交互代码、解析器代码或输入处理,例如无效输入、wait_element_timeoutparse_errorclick_timeoutdead_pagebad_inputblocked 等。 通常通过更新爬虫逻辑、解析器选择器、校验规则或输入数据来解决。

哪些原因会导致代理和解锁器错误?

代理和解锁器错误来自 Bright Data 的代理、路由或解锁层,例如代理连接问题、目标网站封锁、地理位置或 zone 配置问题、无可用节点以及速率限制等。 通常需要重试、降低请求速率、更改国家或地理位置设置;若问题持续存在,请联系 Bright Data 支持团队。

哪些原因会导致平台和基础设施错误?

平台和基础设施错误来自 Scraper Studio 平台、浏览器 worker、解析器沙箱、存储层或内部基础设施,例如 worker 超时、浏览器断开连接、解析器超出内存限制、上传失败以及 WebSocket 连接问题等。 这类错误通常是临时性的,重试即可解决。若问题持续存在,请提交支持工单,并附上爬虫 ID、作业 ID、失败的输入以及原始错误消息。

常见爬虫错误代码

这类错误代码表示爬虫执行阶段的问题。请求失败的原因可能是输入无效、页面元素缺失或发生变化、目标网站封锁、解析问题、速率限制、CAPTCHA 处理,或爬虫逻辑需要更新。

blockblocked 有什么区别?

blockblocked 是两个不同的错误代码。blocked 由爬虫逻辑触发,block 由抓取页面的下层触发。 blocked 通常由爬虫逻辑触发。当爬虫检测到封锁页面、登录墙、CAPTCHA 页面或其他应标记为封锁的情况时,会调用 blocked()
block 通常来自导航、请求拒绝、目标网站封锁或代理层响应处理,可能携带目标网站或上游层返回的真实 HTTP 状态码。block 已观察到的状态码包括:
简而言之:
  • blocked 是采集器层面的封锁检测,通常由爬虫逻辑触发
  • block 是目标网站、代理或导航层面的拒绝,通常带有 HTTP 状态码

导航和浏览器错误代码

这类错误代码表示导航或浏览器加载问题。失败原因可能是页面未在规定时间内加载、浏览器无法访问该 URL、目标网站持续保持网络请求打开,或连接在完成前超时或关闭。

浏览器和基础设施生命周期错误

这类错误代码表示浏览器会话、runner 或浏览器控制连接在爬取过程中被中断,通常是临时性的平台或浏览器生命周期错误。 常见的生命周期错误代码包括 runner_disconnectednetwork_errorcdp_conn_errcdp_cmd_timeoutcdp_disconnectbad_browserbrowser_disconnectedipc_timeout 建议操作: 重试该作业。若错误持续存在,请提交支持工单,并附上作业 ID、响应 ID、失败的输入以及原始错误消息。

速率限制类错误

global_rate_limitbucket_rate_limit 表示对目标域名的请求受到了速率限制。通常出现在目标网站对高请求量敏感,或并发请求过多的情况下。 建议操作: 短暂延迟后重试。若问题反复出现,请降低并发数并将作业排队,而不是并行运行大量作业。

作业生命周期错误代码

这类错误代码表示采集因运行时长、截止时间、取消操作或页面数量限制而未能完成。

基础设施和存储错误代码

这类错误代码表示平台、worker、存储或投递方面的问题。采集失败的原因可能是内部服务不可用、worker 过载、结果过大,或投递到外部目标失败。

代理和解锁器错误代码

这类错误代码表示 Scraper Studio 与底层代理网络之间存在路由或连接问题,通常出现在代理网络无法与目标网站建立或维持稳定连接时。

解析器和负载错误代码

这类错误代码表示解析器执行或负载大小问题。失败原因可能是解析器代码遇到无效或缺失的数据、发送给解析器的负载过大,或解析器执行超出内存或 CPU 限制。

访问和权限错误代码

这类错误代码表示访问或合规方面的问题。请求被终止的原因是目标受 Bright Data 合规保护机制限制,或账户权限需要复核。

采集失败时的排查流程

当采集运行返回错误时,请按以下顺序排查。
  1. 查看 error_code
  2. 查看 status_code(若存在)。
  3. 阅读原始 error 消息。
  4. 手动打开失败的 URL,确认页面是否存在且可访问。
  5. 使用 Debug crawl 或 Crawl inspector 检查失败的输入、爬取阶段、子页面、文件、警告和输出记录。
  6. 若错误与解析器相关,请运行预览并检查 HTML、Output 和 Last errors。
  7. 若大量输入出现相同错误,请检查请求速率、并发数、封锁情况、worker 类型以及目标网站近期的变更。
  8. 若问题持续存在,请提交支持工单,并附上爬虫 ID、作业或响应 ID、失败的输入以及原始错误消息。

常见问题

为什么失败记录中没有 status_code

部分 Scraper Studio 错误路径不会分配数字状态码,因此 status_code 有时会缺失或为 undefined。请将该字段视为可选,并改用 error_code 编写判断逻辑。

出现警告是否意味着记录丢失?

不是。警告表示记录已投递,但存在需要复查的问题,例如部分爬取、被配置为非错误的条件,或输出校验问题。只有包含 errorerror_code 的记录才算失败。

哪些错误适合自动重试?

适合自动重试的是临时性的平台、浏览器生命周期、代理和速率限制错误,例如 infra_errorrunner_disconnectedbrowser_disconnectedworker_too_busyproxy_errorglobal_rate_limitbucket_rate_limitbad_inputERR_INVALID_URLdead_page 不应重试,这些需要修复输入或发现逻辑。