快速开始
学习使用 Oxylabs 自定义解析器。在此页面,您将找到全面的示例、提示以及解析失败时的处理细节。
如何使用自定义解析器
场景示例
假设您想要解析 总结果数 Bing 搜索使用搜索词时返回的结果 test:

我们将概述实现此目标的三种主要方法:
使用 OxyCopilot 生成解析器
OxyCopilot 允许您用简明英文描述需求, 自动为网站创建爬虫和解析器 了解基础步骤,请按照下面概述的步骤操作,并查看 OxyCopilot 文档 以获取更多信息。
打开 网页爬虫 API Playground 在我们的仪表板上访问 OxyCopilot。
编写提示语
说明您希望从页面中提取的数据。请尽量描述清楚并提供最重要的信息。您可以在我们的 OxyCopilot 提示库.
中找到流行网站的提示示例。将以下提示粘贴以从 Bing 搜索页面提取总结果数:
解析搜索结果的总数量。
点击 生成指令 按钮以发送您的提示。
查看解析的数据和指令
当 OxyCopilot 完成后,您会看到如下窗口,解析的数据显示在右侧:

如果您想进行任何调整,可以在此处操作。修改 URL(或多个 URL)、优化提示、启用 JavaScript 渲染,或 编辑解析 schema 以适应您的需求。在此窗口中更新任何字段后,您可以通过选择重新运行请求 开始新请求.
您也可以 在此处查看并直接编辑解析指令 :

一旦对结果满意, 加载指令 以继续。
将解析器保存为预设
您可以轻松将解析指令保存为 解析器预设。这使您可以在 OxyCopilot 和 API 请求中重用该预设。
在网页爬虫 API Playground 中,您可以选择将预设保存到哪个用户。设置完成后,点击 保存:

会弹出一个对话框,提示您为预设命名并添加可选描述:

在 API 请求中使用预设
要在 Web Scraper API 请求中使用预设,请将 parse 设置为 true 并使用 parser_preset 参数指定预设名称。
端点: POST https://data.oxylabs.io/v1/queries
{
"source": "bing_search",
"query": "test",
"render": "html",
"parse": true,
"parser_preset": "Bing_total_results"
}运行该请求将返回以下 JSON 输出:
{
"results": [
{
"content": {
"parse_status_code": 12000,
"total_search_results": 12000000
},
"created_at": "2025-10-24 09:29:28",
"updated_at": "2025-10-24 09:30:42",
"page": 1,
"url": "https://www.bing.com/search?q=test",
"job_id": "7387419953164488705",
"is_render_forced": false,
"status_code": 200,
"type": "parsed",
"parser_type": "preset",
"parser_preset": "Bing_total_results"
}
]
}高级用法
通过 API 生成解析器
除了在 Playground 中使用 OxyCopilot,您还可以将提示直接发送到 Web Scraper API 来生成解析器。请参阅 通过 API 生成解析指令 文档页面以了解更多信息。
我们建议 提供 3-5 个相同类型的 URL (例如,产品页面)。这有助于解析器适应不同布局并提高解析准确性。
端点: POST https://data.oxylabs.io/v1/parsers/generate-instructions/prompt
{
"prompt_text": "解析搜索结果的总数量。",
"urls": ["https://www.bing.com/search?q=test"],
"render": true
}通过 API 保存解析器预设
Web Scraper API 允许您将解析指令保存为可重用的解析器预设。请查看 解析器预设 文档以获取可用操作列表和完整代码示例。
端点: POST https://data.oxylabs.io/v1/parsers/presets
{
"name": "Bing_total_results",
"parsing_instructions": {
"total_search_results": {
"_fns": [
{
"_fn": "xpath_one",
"_args": [
"//span[contains(@class, 'count')]/text()"
]
},
{
"_fn": "amount_from_string"
}
]
}
}
}手动编写指令
要手动使用自定义解析器,请在创建任务时包含一组 parsing_instructions 。您可以使用 CSS 和 XPath 选择器 来定位 DOM 中的元素。
按照下面的逐步示例了解基础知识,然后浏览我们关于 手动编写指令 的深入指南以获取高级技巧和详细文档。
我们以 Bing 搜索场景为例。作业参数如下所示:
{
"source": "bing_search",
"query": "test",
"render": "html",
"parse": true,
"parsing_instructions": {
"number_of_results": {
"_fns": [
{
"_fn": "xpath_one",
"_args": [".//span[@class='sb_count']/text()"]
}
]
}
}
}第 1 步。 您必须提供 "parse": true 参数指定预设名称。
第 2 步。 解析指令必须在 "parsing_instructions" 字段中描述。
上面的示例解析指令指定目标是从抓取的文档中解析搜索结果数量,并将结果放入 number_of_results 字段中。如何通过定义“管道”来解析该字段的指令如下所示:
"_fns": [
{
"_fn": "xpath_one",
"_args": [".//span[@class='sb_count']/text()"]
}
]该管道描述要执行的数据处理函数列表。函数按列表中出现的顺序执行,并将上一个函数的输出作为输入。
在上面的示例管道中,使用了 xpath_one 函数(可用函数的完整列表)。它允许您使用 XPath 表达式和 XSLT 函数处理 HTML 文档。作为函数参数,指定可以找到目标元素的精确路径: .//span[@class='sb_count']。您也可以指示解析器选择目标元素中找到的 text() 。
上述示例任务的解析结果应如下所示:
{
"results": [
{
"content": {
"number_of_results": "About 16,700,000 results",
"parse_status_code": 12000
},
"created_at": "2025-10-27 09:48:04",
"updated_at": "2025-10-27 09:48:38",
"page": 1,
"url": "https://www.bing.com/search?q=test",
"job_id": "7388511797231226881",
"is_render_forced": false,
"status_code": 200,
"type": "parsed",
"parser_type": "custom",
"parser_preset": null
}
]
}自定义解析器不仅提供从抓取的 HTML 中提取文本,还可以执行基本的数据处理函数。
例如,上述解析指令提取的是 number_of_results 作为带有额外关键字的文本,您可能并不需要这些关键字。如果您想获取给定查询的结果数量并以数字类型返回,您可以重用相同的解析指令并在现有管道中添加 query=test ,将 amount_from_string 函数添加到现有管道:
{
"source": "bing_search",
"query": "test",
"render": "html",
"parse": true,
"parsing_instructions": {
"number_of_results": {
"_fns": [
{
"_fn": "xpath_one",
"_args": [".//span[@class='sb_count']/text()"]
},
{
"_fn": "amount_from_string"
}
]
}
}
}上述示例任务的解析结果应如下所示:
{
"results": [
{
"content": {
"number_of_results": 14200000,
"parse_status_code": 12000
},
"created_at": "2025-10-27 10:00:36",
"updated_at": "2025-10-27 10:01:05",
"page": 1,
"url": "https://www.bing.com/search?q=test",
"job_id": "7388514950961963009",
"is_render_forced": false,
"status_code": 200,
"type": "parsed",
"parser_type": "custom",
"parser_preset": null
}
]
}当使用自定义解析器时如果解析失败会怎样
如果自定义解析器未能处理客户端定义的解析指令,我们将返回 12005 状态代码(解析但有警告)。
{
"source": "bing_search",
"query": "test",
"render": "html",
"parse": true,
"parsing_instructions": {
"number_of_results": {
"_fns": [
{
"_fn": "xpath_one",
"_args": [".//span[@class='sb_count']/text()"]
},
{
"_fn": "amount_from_string"
}
]
},
"number_of_organics": {
"_fns": [
{
"_fn": "xpath",
"_args": ["//this-will-not-match-anything"]
},
{
"_fn": "length"
}
]
}
}
}您将为此类结果付费:
{
"results": [
{
"content": {
"_warnings": [
{
"_fn": "xpath",
"_msg": "XPath 表达式未匹配到任何数据。",
"_path": ".number_of_organics",
"_fn_idx": 0
}
],
"number_of_results": 14200000,
"parse_status_code": 12005,
"number_of_organics": null
},
"created_at": "2025-10-27 10:03:54",
"updated_at": "2025-10-27 10:04:22",
"page": 1,
"url": "https://www.bing.com/search?q=test",
"job_id": "7388515782126234625",
"is_render_forced": false,
"status_code": 200,
"type": "parsed",
"parser_type": "custom",
"parser_preset": null
}
]
}如果自定义解析器在解析操作中遇到异常并中断,它可能返回以下这些状态代码: 12002, 12006, 12007。对于这些意外错误,您不会被收费。
状态代码
请在此处查看我们的状态代码概述 这里.
最后更新于
这有帮助吗?



