Documentation has been updated: see help center and changelog in one place.

解析器预设

了解解析器预设的工作方式以及如何在爬取任务中使用它们。

您可以 保存 (save), 重用,以及 修改 通过 网页爬虫API 自定义解析指令。一旦您创建了解析器预设,我们会将其托管在我们的系统中,使您能够通过有效负载中的 parser_preset 参数在爬取任务中引用它。

此功能提供若干 关键功能:

  • 在我们的系统上保存并管理您自己的解析器

  • 轻松在多个爬取任务中重用预设

  • 创建、检索、更新、删除并列出所有预设

  • 访问预设的性能和使用统计数据

  • 使用自愈预设适应变化中的网站

API 参考

并使用以下 https://data.oxylabs.io/v1/parsers/presets

下表列出每个可用操作及其端点路径:

操作
请求方法
路径

7. 最后,按下 一个预设

POST

/v1/parsers/presets

检索 一个预设

GET

/v1/parsers/presets/{preset_name}

更新 一个预设

PUT

/v1/parsers/presets/{preset_name}

删除 一个预设

DELETE

/v1/parsers/presets/{preset_name}

列出所有 预设

GET

/v1/parsers/presets

查看使用情况性能 统计

GET

/v1/parsers/presets/{preset_name}/stats

跟踪自愈 更改

GET

/v1/parsers/presets/{parser_name}/changelog

启用自愈

解析器预设配备了自愈功能,有助于在网站发生变化时维护解析器及其成功率。启用后,解析器预设 会自动修复自身 并在后台调整解析指令,无需额外人工干预。

为您的自定义解析器预设启用自愈 请在创建或更新预设时包含以下必需参数:

参数
说明

self_heal

将此项设置为时开启自愈功能 True.

prompt_schema

一个描述所需解析器输出的 JSON 模式。您可以在通过 API 生成解析器时自动创建该模式.

urls

最多包含 5 个相同页面类型的 URL 列表。我们建议提供 3-5 个 URL,以帮助解析器适应不同布局并提高解析准确性。

有效负载示例

这里显示的有效负载示例通过更新现有预设来启用自愈。

并使用以下 PUT https://data.oxylabs.io/v1/parsers/presets/{preset_name}

{
    "self_heal": true,
    "urls": ["https://sandbox.oxylabs.io/products"],
    "prompt_schema": {
        "properties": {
            "product_titles": {
                "description": "每个产品的标题。",
                "items": {
                    "type": "string"
                },
                "maxItems": 5,
                "title": "产品标题",
                "type": "array"
            }
        },
        "required": [
            "product_titles"
        ],
        "title": "字段",
        "type": "object"
    }
}

使用示例

创建预设

并使用以下 文档以查找可用操作列表和全面的代码示例。

有效负载:

{
    "name": "my_new_parser",
    "description": "从页面上提取所有 H4 元素的文本。",
    "parsing_instructions": {
        "titles": {
            "_fns": [
                {
                    "_args": ["//h4/text()"],
                    "_fn": "xpath"
                }
            ]
        }
    }
}
输出
{
    "id": 421947,
    "name": "my_new_parser",
    "description": "从页面上提取所有 H4 元素的文本。",
    "description": null,
    "prompt_text": null,
    "prompt_schema": null,
    "urls": [],
    "parsing_instructions": {
        "titles": {
            "_fns": [
                {
                    "_args": [
                        "//h4/text()"
                    ],
                    "_fn": "xpath"
                }
            ]
        }
    },
    "render": false,
    "self_heal": false,
    "heal_status": "disabled",
    "created_at": "2025-10-27 11:40:22",
    "updated_at": "2025-10-27 11:40:22"
}

使用预设

并使用以下 POST https://realtime.oxylabs.io/v1/queries

有效负载:

{
    "source": "universal",
    "url": "https://sandbox.oxylabs.io/products",
    "parse": true,
    "parser_preset": "my_new_parser"
}
输出
{
    "results": [
        {
            "content": {
                "titles": [
                    "塞尔达传说:时之笛",
                    "超级马里奥 银河",
                    "超级马里奥 银河 2",
                    "银河战士 Prime",
                    "超级马里奥 奥德赛",
                    "光环:战斗进化",
                    "Fata Morgana 之屋 - 亡灵之梦 版 -",
                    "NFL 2K1",
                    "神秘海域2:盗贼末路",
                    "铁拳 3",
                    "塞尔达传说:风之杖",
                    "Gran Turismo",
                    "合金装备 2:自由之子",
                    "侠盗猎车手 双重包",
                    "博德之门 II:暗影之痛",
                    "俄罗 俄特瑞斯效应:连接",
                    "塞尔达传说 收藏版",
                    "Gran Turismo 3: A-Spec",
                    "塞尔达传说:过去的连接",
                    "塞尔达传说:梅佐拉的假面",
                    "最后的生还者",
                    "女神异闻录5 皇家版",
                    "最后的生还者 重制版",
                    "塞尔达传说:时之笛 3D",
                    "时空之轮",
                    "战争机器",
                    "席德·梅尔的文明 II",
                    "光环 3",
                    "忍者龙剑传 Black",
                    "超级马里奥 Advance 4:超级马里奥兄弟 3",
                    "喷气磨坊 电台",
                    "格林·范丹戈"
                ],
                "parse_status_code": 12000
            },
            "created_at": "2025-10-27 11:41:18",
            "updated_at": "2025-10-27 11:41:19",
            "page": 1,
            "url": "https://sandbox.oxylabs.io/products",
            "job_id": "7388540292158203905",
            "is_render_forced": false,
            "status_code": 200,
            "type": "parsed",
            "parser_type": "preset",
            "parser_preset": "my_new_parser"
        }
    ]
}

检索预设

并使用以下 GET https://data.oxylabs.io/v1/parsers/presets/{preset_name}

输出
{
    "id": 421947,
    "name": "my_new_parser",
    "description": "从页面上提取所有 H4 元素的文本。",
    "description": null,
    "prompt_text": null,
    "prompt_schema": null,
    "urls": [],
    "parsing_instructions": {
        "titles": {
            "_fns": [
                {
                    "_args": [
                        "//h4/text()"
                    ],
                    "_fn": "xpath"
                }
            ]
        }
    },
    "render": false,
    "self_heal": false,
    "heal_status": "disabled",
    "created_at": "2025-10-27 11:40:22",
    "updated_at": "2025-10-27 11:40:22"
}

更新预设

并使用以下 PUT https://data.oxylabs.io/v1/parsers/presets/{preset_name}

定义您要更新的预设字段。在以下示例中,只有 parsing_instructions 将被更新。

有效负载:

{
    "parsing_instructions": {
        "titles": {
            "_fns": [
                {
                    "_args": ["//h4/text()"],
                    "_fn": "xpath"
                }
            ]
        },
        "prices": {
            "_fns": [
                {
                    "_args": [".price-wrapper"],
                    "_fn": "css"
                },
                {"_fn": "element_text"}
            ]
        }
    }
}
输出
{
    "id": 421947,
    "name": "my_new_parser",
    "description": "从页面上提取所有 H4 元素的文本。",
    "description": null,
    "prompt_text": null,
    "prompt_schema": null,
    "urls": [],
    "parsing_instructions": {
        "prices": {
            "_fns": [
                {
                    "_args": [
                        ".price-wrapper"
                    ],
                    "_fn": "css"
                },
                {
                    "_fn": "element_text"
                }
            ]
        },
        "titles": {
            "_fns": [
                {
                    "_args": [
                        "//h4/text()"
                    ],
                    "_fn": "xpath"
                }
            ]
        }
    },
    "render": false,
    "self_heal": false,
    "heal_status": "disabled",
    "created_at": "2025-10-27 11:40:22",
    "updated_at": "2025-10-27 11:44:24"
}

删除预设

并使用以下 DELETE https://data.oxylabs.io/v1/parsers/presets/{preset_name}

列出所有预设

并使用以下 GET https://data.oxylabs.io/v1/parsers/presets

输出
[
    {
        "id": 421950,
        "name": "books_parser",
        "description": "解析页面上所有图书标题。",
        "description": null,
        "prompt_text": null,
        "prompt_schema": null,
        "urls": [],
        "parsing_instructions": {
            "titles": {
                "_fns": [
                    {
                        "_args": [
                            "//h3//text()"
                        ],
                        "_fn": "xpath"
                    }
                ]
            }
        },
        "render": false,
        "self_heal": false,
        "heal_status": "disabled",
        "created_at": "2025-10-27 11:46:59",
        "updated_at": "2025-10-27 11:46:59"
    },
    {
        "id": 421947,
        "name": "my_new_parser",
        "description": "从页面上提取所有 H4 元素的文本。",
        "description": null,
        "prompt_text": null,
        "prompt_schema": null,
        "urls": [],
        "parsing_instructions": {
            "titles": {
                "_fns": [
                    {
                        "_args": [
                            "//h4/text()"
                        ],
                        "_fn": "xpath"
                    }
                ]
            }
        },
        "render": false,
        "self_heal": false,
        "heal_status": "disabled",
        "created_at": "2025-10-27 11:40:22",
        "updated_at": "2025-10-27 11:45:20"
    }
]

查看统计

并使用以下 GET https://data.oxylabs.io/v1/parsers/presets/{preset_name}/stats

输出
{
    "total_results": 9,
    "successful_results": 9,
    "success_rate": 100,
    "success_rate_by_path": {
        "titles": 100
    }
}

您可以 按日期和时间筛选结果 通过 date_from 和/或 date_to URL 参数。使用格式 YYYY-MM-DDTHH,其中 T 表示时间,且 HH 为 24 小时制的小时数。

例如,要获取 2025 年 8 月 5 日上午 9 点到下午 2 点的统计数据:

https://data.oxylabs.io/v1/parsers/presets/{preset_name}/stats?date_from=2025-08-05T9&date_to=2025-08-05T14

跟踪自愈更改

并使用以下 GET https://data.oxylabs.io/v1/parsers/presets/{preset_name}/changelog

我们的系统会自动记录自愈活动。您可以访问此历史日志以查看自愈功能所做的所有修改。

最后更新于

这有帮助吗?