交互函数
本文列出了在 IDE 中使用交互代码编写抓取器时可用的命令,并对其进行了说明。标有星号 ⭐ 的命令是 Bright Data 开发的专有功能。
bad_input
将抓取器输入标记为无效。将阻止任何抓取重试 error_code=bad_input
blocked
将页面标记为失败,因为网站拒绝访问 (error_code=blocked)
⭐ bounding_box
描述元素区域的坐标框(相对于页面,而非浏览器视口)。只会测量第一个匹配的元素。
selector:元素的有效 CSS 选择器
⭐ browser_size
返回当前浏览器窗口大小
⭐ capture_graphql
捕获并重放 graphql 请求,同时更改变量
-
options:控制要捕获的 graphql 请求的参数
- url
- payload
⭐ click
点击元素(会在元素出现后再点击)
selector:元素选择器
⭐ close_popup
弹出窗口可能在抓取过程中随时出现,您不一定能确定何时等待或关闭它们。在代码顶部添加 close_popup() 可创建后台监视器,当弹出窗口出现时自动关闭。如果弹出窗口多次出现,它将始终被关闭
- popup selector:有效 CSS 选择器
- close selector:有效 CSS 选择器
- options:
click_inside:包含关闭按钮选择器的父 iframe 选择器
collect
向爬虫创建的数据集中添加一行数据
语法:collect(<data_line>[, <validate_fn>]);
data_line:包含要收集字段的对象validate_fn:可选函数,用于检查数据行是否有效
console
记录交互代码的消息
country
配置抓取器从指定国家运行
语法:country(<code>);
code:2 位 ISO 国家代码
dead_page
将页面标记为死链接,以便在未来收集中进行过滤 error_code=dead_page
⭐ detect_block
检测页面阻止
-
resource:指定检测所需资源的对象selector
-
condition:指定资源如何处理以进行检测的对象existshas_text
⭐ disable_event_listeners
停止页面上所有事件监听器运行。必须先调用 track_event_listeners()
event_types:应禁用的特定事件类型
el_exists
检查页面元素是否存在,并返回布尔值
selector:有效 CSS 选择器timeout:等待元素出现的超时时间
el_is_visible
检查页面元素是否可见
selector:有效 CSS 选择器timeout:等待元素可见的超时时间
embed_html_comment
在页面 HTML 中添加注释。可用于在 HTML 快照中嵌入元数据。
comment:注释内容
⭐ font_exists
断言浏览器在页面上渲染指定字体家族的能力
语法:font_exists(<font-family>);
⭐ freeze_page
强制页面停止变化,可用于在抓取后保存页面特定状态,以便快照看到的页面状态与当前一致。此命令为实验性,如发现问题,请报告支持
⭐ hover
悬停在元素上(会在元素出现后再悬停)
语法:hover(<selector>);
selector:元素选择器
⭐ html_capture_options
影响 HTML 捕获过程
-
options:对象,定义 HTML 捕获应如何处理coordinate_attributes
Image
收集图像数据
src:图像 URL 或 data:image URI 字符串
input
交互代码可用的全局对象,由触发输入或 next_stage() 提供
job
交互代码可用的全局对象,由触发输入或 next_stage() 提供
load_html
加载 HTML 并返回 Cheerio 实例
html:任意 HTML 字符串
⭐ load_more
滚动列表到底部以触发加载更多内容,适用于懒加载无限滚动网站
selector:包含懒加载内容的元素选择器
load_sitemap
从 sitemap xml 读取 URL 列表(支持 sitemap 索引和 .gz 压缩的 sitemap,见示例)
location
包含当前页面位置信息的对象。可用字段:href
Money
收集价格/货币数据value:金额currency:货币代码
⭐ mouse_to
将鼠标移动到指定的 (x, y) 位置
语法:mouse_to(<x>, <y>);
x:目标 x 坐标y:目标 y 坐标
navigate
导航浏览器到指定 URL
语法:navigate(<url>);
- 默认情况下,404 状态码会抛出
dead_page错误,可使用 opt.allow_status覆盖 url:要导航的 URLopt:导航选项(见示例)
next_stage
使用指定输入运行爬虫的下一阶段
input:传递给下一浏览器会话的输入对象
parse
解析页面数据
preserve_proxy_session
在该页面的子页面中保留代理会话
⭐ press_key
在当前聚焦的输入框中输入特殊按键(如 Enter 或 Backspace,通常用于搜索框输入后)
⭐ proxy_location
配置爬虫从指定位置运行。除非需要高精度控制,否则通常使用 country(code) 即可
configuration:指定代理位置的对象,详情见示例
⭐ redirect_history
返回自上次导航以来的 URL 重定向历史
rerun_stage
使用新输入重新运行当前阶段
resolve_url
返回给定 URL 参数最终指向的 URL
url:URL 字符串或实例
response_headers
返回最后一次页面加载的响应头
request
发起直接 HTTP 请求
url|options:请求的 URL 或请求选项(见示例)
⭐ right_click
与 click 相同,但使用鼠标右键点击(会在元素出现后再点击)
语法:right_click(<selector>);
selector:元素选择器
run_stage
使用新浏览器会话运行特定阶段
- stage:要运行的阶段(1 为第一阶段)
- input:传递给下一浏览器会话的输入对象
⭐ scroll_to
滚动页面,使元素可见。如果用于触发懒加载列表加载更多元素,请使用 load_more()。默认滚动为自然滚动,可能需要几秒。如果想立即跳转,请使用 {immediate: true}
语法:scroll_to(<selector>);
selector:要滚动到的元素选择器
⭐ scroll_to_all
滚动页面,使所有匹配选择器的元素都可见
语法:scroll_to_all(<selector>);
selector:要滚动的元素选择器
⭐ select
从 select 元素中选择一个值
语法:select(<select>, <value>);
selector:元素选择器
set_lines
在页面抓取结束时,将多行数据添加到数据集中。每次调用 set_lines() 会覆盖之前的设置,仅最后一组数据会被加入数据集(按页面抓取跟踪)。适用于抓取器在错误时收集部分数据的情况,可以多次调用 set_lines() 更新数据,最后一次调用会被使用
语法:set_lines(<data_line>[, <validate_fn>]);
lines:要添加到最终数据集的数据行数组validate_fn:可选函数,用于检查数据行是否有效(每行运行一次)
set_session_cookie
设置指定的会话 cookie;如果存在相同 cookie,则可能覆盖
set_session_headers
为所有 HTTP 请求设置额外头信息
headers:键值对象形式的额外请求头
⭐ solve_captcha
解决页面上显示的任何验证码
status_code
返回最后一次页面加载的状态码
⭐ tag_all_responses
保存匹配的所有浏览器请求响应
field:标记字段名称pattern:匹配的 URL 模式options:设置 options.jsonp=true 可解析 jsonp 格式响应,系统会自动检测
⭐ tag_download
获取浏览器下载的文件
url:匹配请求的模式或字符串
⭐ tag_image
保存元素的图片 URL
field:标记字段名称selector:有效 CSS 选择器
⭐ tag_response
保存浏览器请求响应数据
语法:tag_response(<field>, <pattern>, <options>);
name:标记字段名称pattern:匹配的 URL 模式options:设置 options.jsonp=true 可解析 jsonp 格式响应,系统会自动检测
⭐ tag_screenshot
保存页面 HTML 的截图语法:
tag_screenshot(<field>, <options>);
field:标记字段名称options:下载选项(见示例)
⭐ tag_script
提取页面 script 中的 JSON 数据
语法:tag_script(<field>, <selector>);
field:标记脚本名称selector:要标记的 script 元素选择器
⭐ tag_serp
将当前页面解析为搜索引擎结果页
field:标记字段名称type:解析器类型(如 bing, google)
⭐ tag_video
保存元素的视频 URL
field:标记字段名称selector:有效 CSS 选择器opt:下载选项(见示例)
⭐ tag_window_field
标记浏览器页面中的 JS 值
field:数据路径
⭐ track_event_listeners
开始追踪浏览器创建的事件监听器,之后可用 disable_event_listeners() 停用
⭐ type
在输入框中输入文本(会等待元素出现后再输入)
selector:元素选择器text:输入文本
URL
NodeJS 标准 url 模块的 URL 类
⭐ verify_requests
监控失败请求,并使用回调函数处理
callback:在每个失败请求时调用,参数格式为{url, error, type, response}
Video
收集视频数据
src:视频 URL
⭐ wait
等待页面元素出现
selector:元素选择器opt:等待选项(见示例)
⭐ wait_any
等待任意匹配条件成功
wait_for_parser_value
等待解析器字段包含值(点击操作后等待数据出现时有用)
field:解析器值路径validate_fn:可选回调函数,验证值是否正确opt:额外选项(如 timeout)
⭐ wait_for_text
等待页面元素包含指定文本
selector:元素选择器text:要等待的文本
⭐ wait_hidden
等待元素不可见(被移除或隐藏)
selector:元素选择器
⭐ wait_network_idle
等待浏览器网络空闲指定时间
timeout:网络空闲毫秒数options.ignore:排除部分请求模式
⭐ wait_page_idle
等待 DOM 树在指定时间内没有变化
timeout:等待毫秒数options.ignore:排除部分元素监控
⭐ wait_visible
等待元素在页面上可见
selector:元素选择器
$
jQuery 风格的辅助函数
selector:元素选择器
Clicking on selector based on text
jQuery 风格辅助函数⭐ emulate_device
以移动设备查看页面,会修改 UA、分辨率和设备像素比
device:设备名称字符串
完整设备名称列表
完整设备名称列表
- Blackberry PlayBook
- Blackberry PlayBook landscape
- BlackBerry Z30
- BlackBerry Z30 landscape
- Galaxy Note 3
- Galaxy Note 3 landscape
- Galaxy Note II
- Galaxy Note II landscape
- Galaxy S III
- Galaxy S III landscape
- Galaxy S5
- Galaxy S5 landscape
- Galaxy S8
- Galaxy S8 landscape
- Galaxy S9+
- Galaxy S9+ landscape
- Galaxy Tab S4
- Galaxy Tab S4 landscape
- iPad
- iPad landscape
- iPad (gen 6)
- iPad (gen 6) landscape
- iPad (gen 7)
- iPad (gen 7) landscape
- iPad Mini
- iPad Mini landscape
- iPad Pro
- iPad Pro landscape
- iPad Pro 11
- iPad Pro 11 landscape
- iPhone 4
- iPhone 4 landscape
- iPhone 5
- iPhone 5 landscape
- iPhone 6
- iPhone 6 landscape
- iPhone 6 Plus
- iPhone 6 Plus landscape
- iPhone 7
- iPhone 7 landscape
- iPhone 7 Plus
- iPhone 7 Plus landscape
- iPhone 8
- iPhone 8 landscape
- iPhone 8 Plus
- iPhone 8 Plus landscape
- iPhone SE
- iPhone SE landscape
- iPhone X
- iPhone X landscape
- iPhone XR
- iPhone XR landscape
- iPhone 11
- iPhone 11 landscape
- iPhone 11 Pro
- iPhone 11 Pro landscape
- iPhone 11 Pro Max
- iPhone 11 Pro Max landscape
- iPhone 12
- iPhone 12 landscape
- iPhone 12 Pro
- iPhone 12 Pro landscape
- iPhone 12 Pro Max
- iPhone 12 Pro Max landscape
- iPhone 12 Mini
- iPhone 12 Mini landscape
- iPhone 13
- iPhone 13 landscape
- iPhone 13 Pro
- iPhone 13 Pro landscape
- iPhone 13 Pro Max
- iPhone 13 Pro Max landscape
- iPhone 13 Mini
- iPhone 13 Mini landscape
- JioPhone 2
- JioPhone 2 landscape
- Kindle Fire HDX
- Kindle Fire HDX landscape
- LG Optimus L70
- LG Optimus L70 landscape
- Microsoft Lumia 550
- Microsoft Lumia 950
- Microsoft Lumia 950 landscape
- Nexus 10
- Nexus 10 landscape
- Nexus 4
- Nexus 4 landscape
- Nexus 5
- Nexus 5 landscape
- Nexus 5X
- Nexus 5X landscape
- Nexus 6
- Nexus 6 landscape
- Nexus 6P
- Nexus 6P landscape
- Nexus 7
- Nexus 7 landscape
- Nokia Lumia 520
- Nokia Lumia 520 landscape
- Nokia N9
- Nokia N9 landscape
- Pixel 2
- Pixel 2 landscape
- Pixel 2 XL
- Pixel 2 XL landscape
- Pixel 3
- Pixel 3 landscape
- Pixel 4
- Pixel 4 landscape
- Pixel 4a (5G)
- Pixel 4a (5G) landscape
- Pixel 5
- Pixel 5 landscape
- Moto G4
- Moto G4 landscape