开始使用
学习使用 Oxylabs 自定义解析器。在本页中,你将找到全面的示例、技巧,以及解析失败时会发生什么的详细说明。
如何使用自定义解析器
场景示例
假设你想解析 结果总数 Bing Search 使用搜索词返回的 test:

我们将概述实现这一目标的三种主要方法:
使用 OxyCopilot 生成解析器
OxyCopilot 让你用简单的英文描述需求,以便 自动为网站创建爬虫和解析器 。按照以下步骤了解基础用法,并查看 OxyCopilot 文档 了解更多信息。
再次打开 网页爬虫API Playground 在我们的仪表板中访问 OxyCopilot。
编写提示词
说明你想从页面提取的数据。确保描述清楚并提供最重要的信息。你可以在我们的 OxyCopilot 提示词库.
粘贴以下提示词,以从 Bing Search 页面提取结果总数:

点击 生成指令 按钮以发送你的提示词。
查看解析后的数据和指令
OxyCopilot 完成后,你会看到如下窗口,右侧显示解析后的数据:

如果你想进行任何调整,可以在这里操作。修改 URL、优化提示词、启用 JavaScript 渲染,或 编辑解析 schema 以满足你的需求。当你更新此窗口中的任何字段时,可以通过选择 开始新请求.
你也可以 查看并直接编辑解析指令 在这里:

当你对结果满意后, 加载指令 以继续。
将解析器保存为预设
你可以轻松将解析指令保存为 解析器预设。这样你就可以在 OxyCopilot 和 API 请求中重复使用该预设。
在 网页爬虫API Playground 中,你还可以选择要为其保存预设的用户。全部设置完成后,只需点击 保存:

将出现一个弹窗,提示你为预设命名并添加可选描述:

高级用法
通过 API 生成解析器
你也可以不在 playground 中使用 OxyCopilot,而是直接向 网页爬虫API 发送提示词并生成解析器。参见 通过 API 生成解析指令 文档页面以了解更多。
我们建议 提供 3-5 个相同类型的 URL (例如商品页面)。这有助于解析器适应不同布局并提高解析准确性。
端点: POST https://data.oxylabs.io/v1/parsers/generate-instructions/prompt
通过 API 保存解析器预设
网页爬虫API 允许你将解析指令保存为可重复使用的解析器预设。查看 解析器预设 文档以获取可用操作列表和完整的代码示例。
端点: POST https://data.oxylabs.io/v1/parsers/presets
手动编写指令
要手动使用自定义解析器,请在创建任务时包含一组 parsing_instructions 。你可以使用 CSS 和 XPath 选择器 来定位 DOM 中的元素。
按照下面的分步示例学习基础知识,然后查看我们关于 手动编写指令 的深入指南,了解高级技巧和详细文档。
我们以 Bing Search 场景为例。任务参数如下所示:
步骤 1。 您必须提供 "parse": true 参数。
步骤 2。 解析指令必须在 "parsing_instructions" 字段中描述。
上面的解析指令示例指定,目标是从抓取的文档中解析搜索结果数量,并将结果放入 number_of_results 字段中。通过定义“pipeline”来解析该字段的指令如下:
该 pipeline 描述了一个要执行的数据处理函数列表。函数会按照列表中的出现顺序执行,并将前一个函数的输出作为后一个函数的输入。
在上面的示例 pipeline 中,使用了 xpath_one 函数(可用函数完整列表)。它允许你使用 XPath 表达式和 XSLT 函数处理 HTML 文档。作为函数参数,请指定可找到目标元素的准确路径: .//span[@class='sb_count']。你也可以指示解析器选择目标元素中的 text() 。
上面示例任务的解析结果应如下所示:
自定义解析器不仅可以从抓取的 HTML 中提取文本,还可以执行基础数据处理函数。
例如,前面描述的解析指令提取的是 number_of_results ,其文本中带有你未必需要的额外关键词。如果你想获取给定 query=test 的结果数量,并以数值数据类型返回,你可以复用相同的解析指令并添加 amount_from_string 函数到现有 pipeline 中:
上面示例任务的解析结果应如下所示:
使用自定义解析器时,如果解析失败会发生什么
如果自定义解析器无法处理客户端定义的解析指令,我们将返回 12005 状态码(已解析但有警告)。
你仍会为这类结果付费:
如果自定义解析器在解析过程中遇到异常并中断,可能会返回以下状态码: 12002, 12006, 12007。这些意外错误不会向你收费。
状态码
查看我们列出的状态码 此处.
最后更新于
这有帮助吗?



