# Generación de instrucciones de análisis mediante API

Puedes generar conjuntos de instrucciones de análisis a través de la API proporcionando URLs y describiendo qué puntos de datos te gustaría extraer. Al recibir las instrucciones generadas, puedes guardarlas como un [preset del parser](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features/custom-parser/parser-presets) o simplemente enviar las instrucciones con tu solicitud de scraping.

También puedes generar instrucciones de análisis vía [OxyCopilot](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/web-scraper-api-playground/oxycopilot) en nuestro Web Scraper API Playground.

## Generar instrucciones desde prompt

Puedes generar instrucciones de análisis ingresando una descripción en texto libre de los puntos de datos que deseas extraer y dándonos algunas URLs que pertenezcan al mismo tipo de página. La API responderá con un conjunto de instrucciones de análisis.

* **Endpoint**: `https://data.oxylabs.io/v1/parsers/generate-instructions/prompt`
* **Método**: `POST`
* **Autenticación**: `Basic`
* **Encabezados de la solicitud**: `Content-Type: application/json`

### Carga de ejemplo

```json
{ 
  "prompt_text": "Analiza el título del producto, el precio principal, el nombre del desarrollador y el nombre de la plataforma.",
  "urls": [
    "https://sandbox.oxylabs.io/products/1",
    "https://sandbox.oxylabs.io/products/2",
    "https://sandbox.oxylabs.io/products/4"
  ],
  "render": false
}
```

<table><thead><tr><th width="177.1328125">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:predeterminado;background-color:green;"><strong>prompt_text</strong></mark></td><td>Descripción en texto libre de los puntos de datos a extraer.</td></tr><tr><td><mark style="color:predeterminado;background-color:green;"><strong>urls</strong></mark></td><td>Lista de URLs que ejemplifican el tipo de página para el que deseas obtener instrucciones de análisis. 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><tr><td><code>render</code></td><td>Indica si se debe usar o no el renderizado de JS para obtener el contenido requerido. </td></tr></tbody></table>

&#x20;    \- parámetro obligatorio

### Respuesta de ejemplo

```json
{
    "parsing_instructions": {
        "developer_name": {
            "_fns": [
                {
                    "_args": [
                        "//div[contains(@class, 'brand-wrapper')]//span[@class='brand developer']"
                    ],
                    "_fn": "xpath"
                },
                {
                    "_args": [
                        "normalize-space(.)"
                    ],
                    "_fn": "xpath"
                },
                {
                    "_args": " ",
                    "_fn": "join"
                }
            ]
        },
        "main_price": {
            "_fns": [
                {
                    "_args": [
                        "//div[contains(@class, 'product-info-wrapper')]//div[contains(@class, 'price')]/text()"
                    ],
                    "_fn": "xpath_one"
                },
                {
                    "_fn": "amount_from_string"
                }
            ]
        },
        "title": {
            "_fns": [
                {
                    "_args": [
                        "//div[contains(@class, 'product-info-wrapper')]//h2/text()"
                    ],
                    "_fn": "xpath_one"
                },
                {
                    "_args": [
                        "^\\s*(.[\\s\\S]*?)\\s*$",
                        1
                    ],
                    "_fn": "regex_search"
                }
            ]
        }
    },
    "prompt_schema": {
        "properties": {
            "developer_name": {
                "description": "Nombre del desarrollador.",
                "title": "Nombre del desarrollador",
                "type": "string"
            },
            "main_price": {
                "description": "Precio principal del producto.",
                "title": "Precio principal",
                "type": "number"
            },
            "platform_name": {
                "description": "Nombre de la plataforma.",
                "title": "Nombre de la plataforma",
                "type": "string"
            },
            "title": {
                "description": "Título del producto.",
                "title": "Título",
                "type": "string"
            }
        },
        "required": [
            "title",
            "main_price",
            "developer_name",
            "platform_name"
        ],
        "title": "Campos",
        "type": "object"
    }
}
```

## Generar instrucciones desde un esquema JSON

Hay casos en los que deseas obtener datos analizados en un esquema JSON específico. Puedes usar este endpoint para obtener instrucciones de análisis que se adhieran estrictamente al esquema que proporcionas.

* **Endpoint**:  `https://data.oxylabs.io/v1/parsers/generate-instructions/schema`
* **Método**: `POST`
* **Autenticación**: `Basic`
* **Encabezados de la solicitud**: `Content-Type: application/json`

### Carga de ejemplo

```json
{
  "urls": [
    "https://oxylabs.io",
    "https://example.com",
    "https://bbc.co.uk"
  ],
  "prompt_schema": {
    "properties": {
      "links": {
        "description": "Un arreglo de cadenas de URL",
        "type": "array",
        "items": {
          "type": "string",
          "description": "Una URL"
        }
      }
    },
    "required": [
      "links"
    ]
  },
  "render": false
}
```

<table><thead><tr><th width="177.1328125">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:predeterminado;background-color:green;"><strong>prompt_schema</strong></mark></td><td><a href="https://json-schema.org/">Esquema JSON</a> que describe la salida requerida del parser.</td></tr><tr><td><mark style="color:predeterminado;background-color:green;"><strong>urls</strong></mark></td><td>Lista de URLs que ejemplifican el tipo de página para el que deseas obtener instrucciones de análisis.</td></tr><tr><td><code>render</code></td><td>Indica si se debe usar o no el renderizado de JS para obtener el contenido requerido. </td></tr></tbody></table>

&#x20;    \- parámetro obligatorio

### Respuesta de ejemplo

```json
{
    "parsing_instructions": {
            "links": {
                "_fns": [
                    {
                        "_args": [
                            "//a[@href and normalize-space(@href) != '']/@href"
                        ],
                        "_fn": "xpath"
                    }
                ]
            }
        }
}
```
