- 输入 schema(Input schema) 定义一次收集运行接受的字段,例如
url、keyword、country、date,或交互代码从input读取的任意自定义字段。 - 输出 schema(Output schema) 定义爬虫返回的结构化字段,基于
collect()发出的数据。
什么是输入 schema?
输入 schema 定义爬虫在运行时可以接收的值。 爬虫通常使用url 输入,但输入不限于 URL。根据收集器逻辑,输入可以是关键词、地理位置、日期、ID、国家,或任意自定义参数。
交互代码通过 input 对象读取输入值:
如何定义输入参数?
在 Bright Data Scraper Studio IDE 中定义输入 schema:- 在 Scraper Studio IDE 中打开你的收集器。
- 进入 Code 标签页。
- 点击 Add input parameter。
- 输入字段名称,例如
url、keyword、country或date。 - 添加可选描述。
- 选择字段类型。
- 如果收集器没有该字段就无法运行,将其标记为 Required。
- 点击 Save。
- 收集器准备就绪后,点击 Save to Production。
输入参数有哪些设置项?
| 设置项 | 说明 |
|---|---|
| Field name | 在代码中以 input.<field_name> 使用的键名。 |
| Description | 对用户应提供何种值的可选说明。 |
| Type | 期望的值类型,例如 text/string、boolean、date 或 country。 |
| Required | 启用后,每条收集输入都必须包含此字段。 |
| Predefined values | 在所选类型支持时可设置的固定选项。例如 country 类型。 |
| Case-insensitive | 在字段配置支持时,将匹配值视为大小写不敏感。 |
收集输入是什么样子?
基于 URL 的收集器可以接受一个或多个 URL:什么是输出 schema?
输出 schema 定义数据点结构以及数据的组织方式。 在 Bright Data Scraper Studio IDE 中,输出 schema 通常由传给collect() 的对象自动生成。
如何更新输出 schema?
更新输出 schema 有两种方式:从解析器代码自动更新,或在 schema 编辑器中手动更新。自动更新 schema
- 在解析器代码中添加或修改字段。
- 运行预览,确认必填字段按预期返回。
- 点击 Save to Production。
- 如果 Scraper Studio 检测到 schema 变更,点击 Update schema。
- 再次点击 Save to Production。
手动更新 schema
- 在 IDE 中点击 Edit schema。
- 按名称和类型添加或编辑字段。
- 配置必填标记、默认值、格式化、校验或 PII 设置。
- 保存 schema。
- 点击 Save to Production。
什么是输出 schema 编辑器?
输出 schema 编辑器(Output Schema Editor)精确定义收集器返回哪些字段,以及每个字段如何被校验、格式化与交付。 编辑器有两种视图:| 视图 | 说明 |
|---|---|
| Table view | 字段的可视化列表,带开关与字段配置。 |
| JSON view | 直接对 schema 对象进行 JSON 编辑。 |
输出 schema 的结构是怎样的?
输出 schema 是一个 JSON 对象,包含顶层type 和一个 fields 对象:
输出字段可以有哪些属性?
以下属性适用于用户自定义的输出字段。| 属性 | 类型 | 说明 |
|---|---|---|
type | string | 字段类型,例如 text、number、price、image 或 object。 |
active | boolean | 字段是否包含在输出中。默认值:true。 |
required | boolean | 若为 true,该字段没有有效值的行会被标记为错误。 |
default_value | string | 字段无法填充时使用的值。 |
description | string | 字段的可读说明。 |
pii | boolean | 将该字段标记为包含个人身份信息。 |
custom_formatting | object | 用于高级输出整形的自定义 JavaScript 格式化器。 |
custom_validation | object | 定义在每条收集记录上运行的校验规则。 |
在侧边面板中配置字段
侧边面板包含针对单个字段的设置。| 设置项 | 说明 |
|---|---|
| Field name | 输出 JSON 中使用的键名。适用于用户自定义字段。 |
| Display name | 可选的 UI 标签,与输出键名相互独立。 |
| Data type | 字段类型。更改类型会重置与类型相关的设置。 |
| Active | 将字段包含在输出中或从输出中排除。 |
| Required | 当此字段缺失或无效时,将行标记为错误。 |
| Default value | 字段无法填充时的回退值。 |
| Description | 字段的可选可读说明。 |
| Contains PII | 将该字段标记为包含个人身份信息。 |
| Format | 与类型相关的输出格式化。例如 price/money 类型。 |
| Download | 对于媒体/文件字段,将文件下载到所配置的存储。 |
| Array values | 为 array 字段定义元素类型。 |
| Subfields | 为 object 字段定义嵌套字段。 |
| Normalize | 控制空数组的处理行为。 |
| Set as quick filter | 在数据集查看器中将该字段作为筛选项暴露。 |
| Quick filter operator | 定义快速筛选所使用的比较运算符。 |
有哪些可用的默认值?
可用的默认值取决于字段类型。| 选项 | 输出行为 | 适用类型 |
|---|---|---|
undefined | 字段从输出中省略。 | 所有类型 |
null | 字段返回为 null。 | 所有类型 |
"" | 空字符串。 | text |
false | 布尔 false。 | boolean |
0 | 数字零。 | number、price |
[] | 空数组。 | array |
有哪些可用的输出字段类型?
Scraper Studio 支持以下用户自定义输出字段类型。text
自由格式文本。
number
整数或小数。数字字符串可被转换为数字。
url
URL 字符串。仅接受 http:// 和 https:// 的 URL。
price
以数值和货币代码表示的金额。
| 预设 | 说明 | 示例 |
|---|---|---|
us_style | 美式格式。 | $1,234.56 |
locale | 区域感知格式。需要 locale。 | 1.234,56 € |
number | 仅数值。 | 1234.56 |
raw | 原始对象。 | { "value": 1234.56, "currency": "USD" } |
custom | 使用 {[symbol]}、{[value]}、{[currency]} 的模板。 | USD 1234.56 |
boolean
true/false 值。
date
日期或时间戳值。
| 预设 | 说明 | 示例 |
|---|---|---|
iso | ISO 8601 字符串。 | 2024-03-15T10:30:00.000Z |
timestamp | 以毫秒为单位的 Unix 时间戳。 | 1710494400000 |
locale | 区域感知的可读日期。 | March 15, 2024 at 10:30:00 AM UTC |
- Locale,例如
en-US、fr-FR、ru-RU - 日期样式:
long、medium、short - 时间样式:
long、medium、short
country
两位 ISO 3166-1 alpha-2 国家代码。
phone
被解析为结构化组成部分的电话号码。
image
已下载或被引用的图片。
| 行为 | 说明 |
|---|---|
simple | 已下载时返回文件名,未下载时返回源 URL。 |
object | 返回包含文件路径、远程 URL 以及(可选)content type 的对象。 |
video、pdf 和 doc
这些文件类型使用与 image 相同的下载和行为设置。
| 类型 | 说明 |
|---|---|
video | 已下载或被引用的视频文件。 |
pdf | 已下载或被引用的 PDF 文件。 |
doc | 已下载或被引用的文档文件。 |
array
有序的值列表。元素类型通过 items 定义。
| 选项 | 说明 |
|---|---|
keep | 将空数组保留为 []。 |
drop | 用所配置的默认值替换空数组。 |
object
带有自身子字段的嵌套对象。
有哪些 HTML 转换字段类型?
| 类型 | 说明 | 示例值 |
|---|---|---|
html2text | HTML 转换为可读文本。 | Product title\nDescription text |
html2markdown | HTML 转换为 Markdown。 | ## Product title |
html2html | 原始 HTML 内容。 | <div class="product"><h1>Title</h1></div> |
html2ldjson | 来自 application/ld+json 脚本的结构化数据。 | {"@type":"Product","name":"Widget"} |
如何校验字段值?
自定义校验让你定义在某个字段每个收集值上运行的 JavaScript 规则。 抛出错误即可将该值标记为无效:如何格式化字段值?
自定义格式化让你在输出交付前转换字段值。何时使用 collect() 与 set_lines()?
记录发出的方式会影响输出数据集。| 函数 | 行为 | 适用场景 |
|---|---|---|
collect(data) | 向数据集追加一条记录。 | 大多数爬虫。 |
set_lines(data) | 用最新一组记录替换此前发出的记录。 | 需要保留最新快照的渐进式收集。 |
collect() 示例:
set_lines() 示例:
可以添加哪些系统字段?
系统字段由 Scraper Studio 生成。它们的名称和类型是固定的。你可以在输出 schema 配置的 Additional data 下开启或关闭它们。| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
input | string / object | 开 | 触发该次爬取的输入值或对象。 |
prime_input | string / object | 关 | 使用发现或分页时的原始根输入。 |
error | string | 开 | 该行收集失败原因的说明。 |
error_code | string | 开 | 结构化错误代码,例如 validation 或 timeout。 |
warning | string | 开 | 该行的系统级警告。 |
warning_code | string | 开 | 结构化警告代码。 |
status_code | number | 关 | 类 HTTP 的爬取结果代码,例如 200 或 404。 |
timestamp | date | 关 | 页面被收集的日期和时间。 |
requested_timestamp | date | 关 | 任务被触发的日期和时间。 |
page_id | string | 关 | 页面爬取的唯一标识符。 |
job_id | string | 关 | 产生该行的任务 ID。 |
collector_id | string | 关 | 收集器的 ID。 |
collector_queue | string | 关 | 任务提交到的队列。 |
crawl_type | string | 关 | 该行使用的爬取或解析器类型。 |
screenshot | file | 关 | 收集时浏览器页面的截图。 |
html | file | 关 | 页面的完整 HTML 快照。 |
warc | file | 关 | 页面的 WARC 归档。 |
screenshot、html 或 warc 处于启用状态时,相应文件会下载到所配置的存储目标。
如何为截图添加水印?
当启用screenshot 系统字段时,可以为截图添加水印。每个水印项都有一个标签和一个数据来源。
| 来源 | 说明 |
|---|---|
| Browser URL | 截图时浏览器所在的 URL。 |
| Timestamp | 截图捕获的时间戳。 |
| Input value | 来自收集器输入的值,例如 url 或 config.country。 |
完整的输出 schema 是什么样子?
相关内容
使用 IDE 开发爬虫
在 IDE 中构建爬虫的分步教程
Scraper Studio 函数参考
交互函数与解析器函数,含参数与示例
启动数据收集与交付
触发收集并将输出交付到你的目标位置
触发爬虫(API)
通过 API 运行已发布的收集器以进行批量收集