# Presets de analizador

Puedes **guardar**, **reutilizar**, y **modificar** instrucciones de análisis personalizadas a través de Web Scraper API. Una vez que crees un preset de parser, lo alojaremos en nuestro sistema, lo que te permitirá referenciarlo en tus trabajos de scraping mediante el `parser_preset` parámetro en el payload.

Esta función ofrece varias **capacidades clave**:

* Guardar y administrar tus propios parsers en nuestro sistema
* Reutilizar fácilmente presets en varios trabajos de scraping
* Crear, recuperar, actualizar, eliminar y listar todos los presets
* Acceder a estadísticas de rendimiento y uso de un preset
* Adaptarse a los cambios de los sitios mediante presets autorreparables

## Referencia de la API

**Endpoint:** `https://data.oxylabs.io/v1/parsers/presets`

La tabla enumera cada operación disponible y la ruta de su endpoint:

<table><thead><tr><th width="247.30859375">Acción</th><th width="152.23828125">Método de solicitud</th><th>Ruta</th></tr></thead><tbody><tr><td><strong>Crear</strong> un preset</td><td><code>POST</code></td><td><code>/v1/parsers/presets</code></td></tr><tr><td><strong>Recuperar</strong> un preset</td><td><code>GET</code></td><td><code>/v1/parsers/presets/{preset_name}</code></td></tr><tr><td><strong>Actualizar</strong> un preset</td><td><code>PUT</code></td><td><code>/v1/parsers/presets/{preset_name}</code></td></tr><tr><td><strong>Eliminar</strong> un preset</td><td><code>DELETE</code></td><td><code>/v1/parsers/presets/{preset_name}</code></td></tr><tr><td><strong>Listar todos</strong> presets</td><td><code>GET</code></td><td><code>/v1/parsers/presets</code></td></tr><tr><td><strong>Ver uso</strong> y <strong>rendimiento</strong> estadísticas</td><td><code>GET</code></td><td><code>/v1/parsers/presets/{preset_name}/stats</code></td></tr><tr><td><strong>Rastrear cambios</strong> de autorreparación</td><td><code>GET</code></td><td><code>/v1/parsers/presets/{parser_name}/changelog</code></td></tr></tbody></table>

## Habilitar autorreparación

Los presets de parser están equipados con la función de autorreparación, que ayuda a mantener los parsers y sus tasas de éxito a medida que cambian los sitios web. Cuando está habilitada, los presets de parser **se reparan automáticamente** y ajustan las instrucciones de análisis en segundo plano sin necesidad de entrada manual adicional.

Para **habilitar autorreparación** para tu preset de parser personalizado, incluye los siguientes parámetros obligatorios al crear o actualizar un preset:

<table><thead><tr><th width="222.90234375">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><code>self_heal</code></td><td>Activa la funcionalidad de autorreparación cuando se establece en <code>True</code>.</td></tr><tr><td><code>prompt_schema</code></td><td>Un esquema JSON que describe el resultado requerido del parser. Puedes crear automáticamente el esquema cuando <a href="/pages/719948981073d1c60f031d22cc44705324b9215a">generas parsers con API</a>.</td></tr><tr><td><code>urls</code></td><td>Una lista de hasta 5 URLs del mismo tipo de página. Recomendamos proporcionar 3-5 URLs para ayudar al parser a adaptarse a diferentes diseños y mejorar la precisión del análisis.</td></tr></tbody></table>

<details>

<summary>Ejemplo de payload</summary>

El ejemplo de payload que se muestra aquí habilita la autorreparación al actualizar un preset existente.

**Endpoint:** `PUT https://data.oxylabs.io/v1/parsers/presets/{preset_name}`

```json
{
    "self_heal": true,
    "urls": ["https://sandbox.oxylabs.io/products"],
    "prompt_schema": {
        "properties": {
            "product_titles": {
                "description": "Título de cada producto.",
                "items": {
                    "type": "string"
                },
                "maxItems": 5,
                "title": "Títulos de productos",
                "type": "array"
            }
        },
        "required": [
            "product_titles"
        ],
        "title": "Campos",
        "type": "object"
    }
}
```

</details>

## Ejemplos de uso

### Crear un preset

**Endpoint:** `POST https://data.oxylabs.io/v1/parsers/presets`

**Payload:**

```json
{
    "name": "my_new_parser",
    "description": "Extrae texto de todos los elementos H4 de la página.",
    "parsing_instructions": {
        "titles": {
            "_fns": [
                {
                    "_args": ["//h4/text()"],
                    "_fn": "xpath"
                }
            ]
        }
    }
}
```

<details>

<summary>Salida</summary>

```json
{
    "id": 421947,
    "name": "my_new_parser",
    "description": "Extrae texto de todos los elementos H4 de la página.",
    "prompt_text": null,
    "prompt_schema": null,
    "urls": [],
    "render": false,
    "parsing_instructions": {
        "titles": {
            "_fns": [
                {
                    "_args": [
                        "//h4/text()"
                    ],
                    "_fn": "xpath"
                }
            ]
        }
    },
    "self_heal": false,
    "heal_status": "disabled",
    "last_healed_at": null,
    "created_at": "2025-10-27 11:40:22",
    "updated_at": "2025-10-27 11:40:22"
}
```

</details>

### Usar un preset

**Endpoint:** `POST https://realtime.oxylabs.io/v1/queries`

**Payload:**

```json
{
    "source": "universal",
    "url": "https://sandbox.oxylabs.io/products",
    "parse": true,
    "parser_preset": "my_new_parser"
}
```

<details>

<summary>Salida</summary>

```json
{
    "results": [
        {
            "content": {
                "titles": [
                    "The Legend of Zelda: Ocarina of Time",
                    "Super Mario Galaxy",
                    "Super Mario Galaxy 2",
                    "Metroid Prime",
                    "Super Mario Odyssey",
                    "Halo: Combat Evolved",
                    "The House in Fata Morgana - Dreams of the Revenants Edition -",
                    "NFL 2K1",
                    "Uncharted 2: Among Thieves",
                    "Tekken 3",
                    "The Legend of Zelda: The Wind Waker",
                    "Gran Turismo",
                    "Metal Gear Solid 2: Sons of Liberty",
                    "Grand Theft Auto Double Pack",
                    "Baldur's Gate II: Shadows of Amn",
                    "Tetris Effect: Connected",
                    "The Legend of Zelda Collector's Edition",
                    "Gran Turismo 3: A-Spec",
                    "The Legend of Zelda: A Link to the Past",
                    "The Legend of Zelda: Majora's Mask",
                    "The Last of Us",
                    "Persona 5 Royal",
                    "The Last of Us Remastered",
                    "The Legend of Zelda: Ocarina of Time 3D",
                    "Chrono Cross",
                    "Gears of War",
                    "Sid Meier's Civilization II",
                    "Halo 3",
                    "Ninja Gaiden Black",
                    "Super Mario Advance 4: Super Mario Bros. 3",
                    "Jet Grind Radio",
                    "Grim Fandango"
                ],
                "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"
        }
    ]
}
```

</details>

### Recuperar un preset

**Endpoint:** `GET https://data.oxylabs.io/v1/parsers/presets/{preset_name}`

<details>

<summary>Salida</summary>

```json
{
    "id": 421947,
    "name": "my_new_parser",
    "description": "Extrae texto de todos los elementos H4 de la página.",
    "prompt_text": null,
    "prompt_schema": null,
    "urls": [],
    "render": false,
    "parsing_instructions": {
        "titles": {
            "_fns": [
                {
                    "_args": [
                        "//h4/text()"
                    ],
                    "_fn": "xpath"
                }
            ]
        }
    },
    "self_heal": false,
    "heal_status": "disabled",
    "last_healed_at": null,
    "created_at": "2025-10-27 11:40:22",
    "updated_at": "2025-10-27 11:40:22"
}
```

</details>

### Actualizar un preset

**Endpoint:** `PUT https://data.oxylabs.io/v1/parsers/presets/{preset_name}`

Define los campos del preset que quieres actualizar. En el siguiente ejemplo, solo se `parsing_instructions` se actualizará.

**Payload:**

```json
{
    "parsing_instructions": {
        "titles": {
            "_fns": [
                {
                    "_args": ["//h4/text()"],
                    "_fn": "xpath"
                }
            ]
        },
        "prices": {
            "_fns": [
                {
                    "_args": [".price-wrapper"],
                    "_fn": "css"
                },
                {"_fn": "element_text"}
            ]
        }
    }
}
```

<details>

<summary>Salida</summary>

```json
{
    "id": 421947,
    "name": "my_new_parser",
    "description": "Extrae texto de todos los elementos H4 de la página.",
    "prompt_text": null,
    "prompt_schema": null,
    "urls": [],
    "render": false,
    "parsing_instructions": {
        "prices": {
            "_fns": [
                {
                    "_args": [
                        ".price-wrapper"
                    ],
                    "_fn": "css"
                },
                {
                    "_fn": "element_text"
                }
            ]
        },
        "titles": {
            "_fns": [
                {
                    "_args": [
                        "//h4/text()"
                    ],
                    "_fn": "xpath"
                }
            ]
        }
    },
    "self_heal": false,
    "heal_status": "disabled",
    "last_healed_at": null,
    "created_at": "2025-10-27 11:40:22",
    "updated_at": "2025-10-27 11:44:24"
}
```

</details>

### Eliminar un preset

**Endpoint:** `DELETE https://data.oxylabs.io/v1/parsers/presets/{preset_name}`

### Listar todos los presets

**Endpoint:** `GET https://data.oxylabs.io/v1/parsers/presets`

<details>

<summary>Salida</summary>

```json
[
    {
        "id": 421950,
        "name": "books_parser",
        "description": "Analiza todos los títulos de libros de la página.",
        "prompt_text": null,
        "prompt_schema": null,
        "urls": [],
        "render": false,
        "parsing_instructions": {
            "titles": {
                "_fns": [
                    {
                        "_args": [
                            "//h3//text()"
                        ],
                        "_fn": "xpath"
                    }
                ]
            }
        },
        "self_heal": false,
        "heal_status": "disabled",
        "last_healed_at": null,
        "created_at": "2025-10-27 11:46:59",
        "updated_at": "2025-10-27 11:46:59"
    },
    {
        "id": 421947,
        "name": "my_new_parser",
        "description": "Extrae texto de todos los elementos H4 de la página.",
        "prompt_text": null,
        "prompt_schema": null,
        "urls": [],
        "render": false,
        "parsing_instructions": {
            "titles": {
                "_fns": [
                    {
                        "_args": [
                            "//h4/text()"
                        ],
                        "_fn": "xpath"
                    }
                ]
            }
        },
        "self_heal": false,
        "heal_status": "disabled",
        "last_healed_at": null,
        "created_at": "2025-10-27 11:40:22",
        "updated_at": "2025-10-27 11:45:20"
    }
]
```

</details>

### Ver estadísticas

**Endpoint:** `GET https://data.oxylabs.io/v1/parsers/presets/{preset_name}/stats`

<details>

<summary>Salida</summary>

```json
{
    "total_results": 9,
    "successful_results": 9,
    "success_rate": 100,
    "success_rate_by_path": {
        "titles": 100
    }
}
```

</details>

Puedes **filtra los resultados por fecha y hora** usando los parámetros de URL `date_from` y/o `date_to` . Usa el formato `YYYY-MM-DDTHH`, donde `T` indica la hora, y `HH` es la hora en formato de 24 horas.

Por ejemplo, para obtener estadísticas de 9 a. m. a 2 p. m. del 5 de agosto de 2025:

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

### Rastrear cambios de autorreparación

**Endpoint:** `GET https://data.oxylabs.io/v1/parsers/presets/{preset_name}/changelog`

Nuestro sistema registra automáticamente la actividad de autorreparación. Puedes acceder a este registro histórico para revisar todas las modificaciones realizadas por la función de autorreparación.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.oxylabs.io/products/es/web-scraper-api/features/custom-parser/parser-presets.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
