Skip to main content
本参考文档记录了 Bright Data Scraper Studio IDE 中可用的每一个函数:控制浏览器会话的交互代码,以及将 HTML 转换为结构化记录的解析代码。每个函数都列出其参数、返回值和一个可运行的示例。
标有 的函数仅在 Browser worker 中有效,从 Code worker 调用时会抛出错误。完整列表见 仅限浏览器的函数

Scraper Studio 代码是如何组织的?

Bright Data Scraper Studio 抓取器使用两种代码类型: 你可以通过 parse()(运行解析器)和 collect()(将一条记录追加到最终数据集)在两者之间传递数据。

交互函数

交互函数在抓取器的主 JavaScript 上下文中运行,并驱动浏览器或 HTTP 客户端。使用它们来导航、等待元素、与页面交互、捕获网络流量以及将数据移交给解析器。

全局对象

导航

将浏览器导航到某个 URL。默认情况下,404 状态会抛出 dead_page 错误;使用 allow_status 可覆盖此行为。 参数

request,发起直接 HTTP 请求

不使用浏览器发送 HTTP 请求。可在 Code worker 上使用,或在 Browser worker 上使用(当你想绕过浏览器时)。 参数

next_stage,为下一阶段排队输入

在新的浏览器会话中使用给定输入运行抓取器的下一个阶段。 参数

run_stage,运行指定阶段

在新的浏览器会话中运行抓取器的某个命名阶段。 参数

rerun_stage,用新输入重新运行当前阶段

使用新输入再次运行本阶段。用它来分散工作(例如,为分页中的每一页重新运行一次)。

load_sitemap,从 XML 站点地图读取 URL

加载站点地图 XML 文件并返回 URL 列表。支持站点地图索引和 gzip 压缩的站点地图。 参数

resolve_url,通过重定向追踪 URL

返回给定 URL 参数最终指向的 URL。 参数

redirect_history,获取重定向链

返回自上次 navigate() 调用以来的 URL 重定向历史。

response_headers,读取最近一次响应的请求头

返回最近一次页面加载的响应头。

status_code,读取最近一次响应的状态

返回最近一次页面加载的 HTTP 状态码。

在页面上等待 ⭐

所有等待函数仅限 Browser worker。

wait,等待元素出现

参数

wait_any,等待多个条件中的任意一个

等待任意一个匹配条件成功。当第一个选择器解析成功时返回。

wait_visible,等待元素可见

参数

wait_hidden,等待元素消失

参数

wait_for_text,等待文本内容

等待页面上的某个元素包含给定文本。 参数

wait_for_parser_value,等待解析器字段被填充

tag_response()tag_script() 之后使用,以等待捕获的数据可用。 参数

wait_network_idle,等待浏览器网络稳定

等待浏览器网络在给定时段内保持空闲。 参数

wait_page_idle,等待 DOM 变更停止

等待 DOM 树在给定时段内不发生任何变化。 参数

元素交互 ⭐

所有交互函数都需要 Browser worker。

click,点击元素

点击元素,会先等待其出现。 参数

right_click,右键点击元素

click 相同,但使用鼠标右键。

hover,悬停在元素上

将光标移动到元素上,会先等待其出现。

mouse_to,将光标移动到某个坐标

参数

type,向输入框输入文本

等待输入框出现,然后输入给定文本。 参数

press_key,按下特殊键

在当前聚焦的输入框中输入 Enter 或 Backspace 等特殊键。

select,从 select 元素中选取一个值

参数

scroll_to,将元素滚动到视图中

滚动页面,使目标元素可见。默认使用自然滚动;传入 immediate: true 可直接跳转。

scroll_to_all,滚动经过每个匹配元素

load_more,触发懒加载内容

滚动到列表底部以触发无限滚动加载。 参数

close_popup,在后台自动关闭弹窗

注册一个后台监视器,每当弹窗出现时将其关闭。推荐的模式见 最佳实践 参数

solve_captcha,解决页面上的验证码

bounding_box,获取元素的页面坐标

返回第一个匹配元素相对于页面的边界框。 参数

el_exists,检查元素是否在页面上

参数

el_is_visible,检查元素是否可见

参数

track_event_listeners,开始跟踪浏览器事件监听器

必须在 disable_event_listeners() 之前调用。

disable_event_listeners,禁用事件监听器

阻止页面上所有事件监听器运行。 参数

freeze_page,停止后续的页面变更

强制页面停止变化,使 HTML 快照准确反映抓取器所看到的内容。实验性功能。

网络与响应标记 ⭐

标记会捕获后台网络流量并将其暴露给解析器。所有 tag_* 函数仅限 Browser worker。

tag_response,保存一个匹配的响应

保存来自某个匹配浏览器请求的响应数据。 参数

tag_all_responses,保存每个匹配的响应

将每个匹配请求的响应数据保存为一个数组。

tag_script,提取嵌入在 <script> 标签中的 JSON

参数

tag_window_field,标记浏览器 window 上的一个值

参数

tag_image,从 DOM 元素捕获图片 URL

tag_video,从 DOM 元素捕获视频 URL

参数

tag_screenshot,保存页面截图

参数

tag_download,捕获浏览器下载的文件

参数

tag_serp,将页面解析为搜索引擎结果页

参数

capture_graphql,捕获并重放 GraphQL 查询

捕获一个 GraphQL 请求,以便你可以用不同的变量重放它。 参数

数据采集

parse,运行解析器代码

运行解析器代码并返回结构化结果。

collect,向数据集追加一条记录

向抓取器的输出添加一条记录。 参数

set_lines,设置输出行,覆盖先前的调用

每次调用 set_lines() 都会覆盖前一次调用。当抓取器采集部分数据,并且你希望在后续步骤抛出错误时交付最后已知状态时,此函数很有用。 参数

load_html,将 HTML 字符串加载到 Cheerio

参数

将一次抓取标记为失败

bad_input,将输入标记为无效

阻止任何重试并报告 error_code=bad_input

blocked,将页面标记为已被阻止

报告站点拒绝访问。error_code=blocked

dead_page,将 URL 标记为失效链接

标记页面,以便在未来的采集中将其过滤掉。error_code=dead_page

detect_block,检测页面上的阻止情况

参数

会话与路由

country,通过特定国家/地区路由

参数

proxy_location,细粒度代理位置

除非你需要精确的地理控制,否则优先使用 country() 参数

preserve_proxy_session,在子阶段之间复用代理会话

参数

set_session_headers,设置额外的 HTTP 请求头

参数

浏览器配置 ⭐

仅限 Browser worker。

browser_size,获取当前浏览器窗口大小

以像素返回 {width, height}

emulate_device,模拟移动设备

切换用户代理、屏幕分辨率和设备像素比,以匹配某个命名设备。 参数
  • Blackberry PlayBook / landscape
  • BlackBerry Z30 / landscape
  • Galaxy Note 3 / landscape
  • Galaxy Note II / landscape
  • Galaxy S III / S5 / S8 / S9+(各含 landscape)
  • Galaxy Tab S4 / landscape
  • iPad / iPad Mini / iPad Pro / iPad Pro 11 / iPad (gen 6) / iPad (gen 7)(各含 landscape)
  • iPhone 4, 5, 6, 6 Plus, 7, 7 Plus, 8, 8 Plus, SE, X, XR, 11, 11 Pro, 11 Pro Max, 12 / 12 Mini / 12 Pro / 12 Pro Max, 13 / 13 Mini / 13 Pro / 13 Pro Max(各含 landscape)
  • JioPhone 2 / landscape
  • Kindle Fire HDX / landscape
  • LG Optimus L70 / landscape
  • Microsoft Lumia 550, 950(950 含 landscape)
  • Nexus 4, 5, 5X, 6, 6P, 7, 10(各含 landscape)
  • Nokia Lumia 520 / landscape,Nokia N9 / landscape
  • Pixel 2, 2 XL, 3, 4, 4a (5G), 5(各含 landscape)
  • Moto G4 / landscape

font_exists,检查浏览器字体支持

断言浏览器可以渲染给定的字体系列。

html_capture_options,配置 HTML 捕获

控制 HTML 快照的捕获方式。 参数

embed_html_comment,向页面 HTML 注入注释

在 HTML 快照中嵌入元数据。

调试与可观测性

console,从交互代码记录日志

verify_requests,监控失败的浏览器请求

在每个失败的浏览器请求上触发回调。 参数

值构造函数

Bright Data Scraper Studio 为结构化输出字段提供了带类型的构造函数。

ImageVideoPdfDocMoney

支持下载的文件类型

Scraper Studio 支持通过媒体和文档字段构造函数下载文件。 使用方式:
  • new Image() 用于图片文件
  • new Video() 用于视频文件
  • new Pdf() 用于 PDF 文件
  • new Doc() 用于受支持的文档、文本、音频、视频和结构化文件类型

new Doc() 支持的内容类型

new Doc() 支持以下内容类型:
示例:

URL

标准 Node.js URL 类。

解析函数

解析代码在交互代码调用 parse() 之后运行。它接收捕获的 HTML 和任何已标记的数据,并向交互代码返回单条记录(或记录数组)。解析代码使用 Cheerio,一个与 jQuery 兼容的 HTML 解析器。

解析代码中可用的全局对象

Cheerio 辅助函数

Bright Data Scraper Studio 在标准 API 之上添加了自定义 Cheerio 方法。

$(selector).text_sane(),规范化空白字符

返回 text(),其中所有连续的空白字符被折叠为单个空格并去除首尾空白。

$(selector).filter_includes(text),按文本内容筛选元素

将选择集筛选为文本包含给定子串的元素。可与 Cheerio API 的其余部分链式调用。

解析器值构造函数

ImageVideoPDFMoney 在解析代码中同样可用,且工作方式相同。

验证已下载媒体的类型

使用 validate_type 检查已下载文件的内容是否与预期的媒体类型匹配。此选项由 new Pdf()new Image()new Video() 支持。 启用 validate_type 后,Scraper Studio 会在获取文件后对其进行验证。如果文件内容与预期类型不匹配,该字段将返回错误,而不是有效的已下载文件。 示例:
验证失败示例:
有关完整的 Cheerio API 文档,请参阅 Cheerio 网站

Shadow DOM 支持

接受选择器的交互命令也接受选择器数组,让你能够深入 Shadow DOM 树。可将其与 clickwaittype 及其他交互函数一起使用。 当你传入数组时:
  • 其中一个选择器必须指向 shadow host 元素
  • 它之后的每个选择器都在该 shadow root 内解析
在该示例中,my-shadow-host 是附加了 shadow root 的元素,而 button.submit 在该 shadow root 内解析。

仅限浏览器的函数

以下函数需要 Browser worker,从 Code worker 调用时会抛出 not_supported_in_code_worker。使用此列表来决定你的抓取器需要哪种 worker。 请参阅 Worker 类型 以在 Browser worker 和 Code worker 之间做出选择。

相关内容

最佳实践

编写快速、可靠抓取器的推荐模式

Worker 类型

何时使用 Browser worker 与 Code worker

网页抓取基础

核心概念:交互、解析、阶段和规模

开发抓取器

在 IDE 中构建抓取器的逐步演示