> For the complete documentation index, see [llms.txt](https://developers.oxylabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.oxylabs.io/products/es/web-scraper-api/web-scraper-api-playground/oxycopilot.md).

# OxyCopilot

Automatiza el scraping con OxyCopilot. Aprende a generar cargas útiles de Web Scraper API, analizadores personalizados e instrucciones del navegador usando simples indicaciones en lenguaje natural.

**OxyCopilot** es gratuita [**Web Scraper API** ](/products/es/web-scraper-api.md)función que facilita la incorporación y ayuda a los usuarios a encontrar soluciones eficaces para casos de uso complejos, todo ello sin necesidad de conocimientos de programación. OxyCopilot actualmente incluye tres funciones independientes:

* **Generador de scraper**
* [**Custom Parser**](/products/es/web-scraper-api/features/custom-parser.md) **generador**
* **Generador de instrucciones del navegador**

{% hint style="success" %}
OxyCopilot está disponible en el [**Web** **Scraper API Playground**](https://dashboard.oxylabs.io/?route=/api-playground) en el panel de control de Oxylabs.
{% endhint %}

{% embed url="<https://youtu.be/9JoF8_5r5HY?si=61c3Zkx6FrH06PVa>" %}

## Generador de scraper

OxyCopilot te ayuda a configurar un scraper (y a formar la carga útil de la solicitud) para Web Scraper API sin necesidad de entender la documentación ni la lógica de los campos.

### Cómo funciona

#### **Paso 1: Proporciona una URL y un prompt**

* **URL:** Proporciona la URL que quieres scrapear.
* **Prompt:** Describe tus requisitos (p. ej., localización, renderizado de JS, etc.).

<figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-0fa03898183f16364144407a501c8862c4db00da%2FScreenshot%202024-09-24%20at%2016.19.08.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

#### **Paso 2: Parseo**

Tienes tres opciones para gestionar el parseo:

1. **Custom Parser**: Selecciona "Agregar instrucciones de parseo" para crear tu propia lógica de parseo usando el [**Custom Parser builder**](#custom-parser-builder).
2. **Parser dedicado**: Si la URL pertenece a un sitio web para el que ofrecemos un parser dedicado y quieres usarlo, selecciona "Continuar con el parser dedicado".
3. **Sin parseo**: Elige continuar sin parseo si no necesitas datos estructurados.

{% hint style="warning" %}
Si la URL pertenece a un sitio web para el que tenemos un parser dedicado, pero no necesitas datos estructurados, selecciona "Continuar con el parser dedicado" y desactiva el parámetro parse en la configuración del playground. Evita usar el botón de salida, ya que no guardará los parámetros predefinidos.
{% endhint %}

<div><figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-19dcd4cb01214326b5012923a5d4047f37d88259%2FScreenshot%202024-09-24%20at%2016.20.09.png?alt=media" alt="" width="375"><figcaption><p>Si no tenemos un parser dedicado</p></figcaption></figure> <figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-be0b87f84120bc3f31d7b5e30ab75fcd2bd108d2%2FScreenshot%202024-09-24%20at%2016.19.36.png?alt=media" alt="" width="375"><figcaption><p>Si tenemos un parser dedicado</p></figcaption></figure></div>

#### **Paso 3: Revisa la solicitud**

Según tu prompt, OxyCopilot rellenará previamente los parámetros necesarios en el Web Scraper API Playground. Verás el código de solicitud y los parámetros específicos para tu caso de uso, y podrás ajustarlos si es necesario.

**Paso 4: Envía la solicitud y copia**

Si todo se ve bien, envía la solicitud para ver cómo se ve la salida y comprobar si funciona como esperas. Luego, copia el código de la solicitud para usarlo en tus tareas de scraping posteriores con Web Scraper API.

### Ejemplo

#### URL

```
https://www.amazon.de/s?k=adidas
```

#### Prompt

{% code overflow="wrap" %}

```
Extrae la página de búsqueda de Amazon de la URL proporcionada y localiza los resultados para Polonia.
```

{% endcode %}

#### Parámetros generados por IA (JSON)

```json
{
        "source": "amazon_search",
        "query": "adidas",
        "geo_location": "PL",
        "domain": "de"
}
```

#### Códigos de solicitud generados por IA

<figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-ae742ee398acbc33744d7043c174f6638e861b8d%2FScreenshot%202024-09-24%20at%2016.44.00.png?alt=media" alt=""><figcaption></figcaption></figure>

## Custom Parser builder

Aprovecha la [**Custom Parser**](/products/es/web-scraper-api/features/custom-parser.md) función con OxyCopilot para crear un parser sin necesidad de escribir código ni analizar manualmente la estructura de los sitios web.

### Cómo funciona

#### **Paso 1: Proporciona URL(s) y un prompt**

* **URL(s):** Puedes proporcionar hasta **3 URLs** para las que quieres generar instrucciones de parseo. OxyCopilot usa el HTML de las URLs proporcionadas para determinar la mejor lógica para extraer los campos requeridos.

{% hint style="info" %}
Cuantas más URLs proporciones, más sólidas serán las instrucciones de parseo, ya que OxyCopilot identifica patrones comunes entre páginas similares. Ten en cuenta que URLs adicionales pueden aumentar el tiempo de espera para obtener resultados.
{% endhint %}

* **Prompt:** El prompt es el componente clave para crear un esquema en lenguaje natural, que sirve como base para generar las instrucciones de parseo reales. El prompt debe describir claramente los campos que deben analizarse.

<figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-7333b7f9585928fe89f7fb909de3c0d372f61a38%2FScreenshot%202024-09-24%20at%2017.57.15.png?alt=media" alt=""><figcaption></figcaption></figure>

#### **Paso 2 \[Opcional]: Ajusta el esquema de parseo**

Este paso te permite ajustar el esquema de parseo para adaptarlo mejor a tus necesidades o solucionar cualquier problema.

#### **Resumen del esquema de parseo**

<figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-8b2b173288abf3f88ec7ea2d7983d0e1f94e100b%2FScreenshot%202024-09-24%20at%2017.59.27.png?alt=media" alt=""><figcaption></figcaption></figure>

Esta tabla visualiza la entrada utilizada por la IA para generar instrucciones de parseo. El esquema define qué campos deben analizarse y consta de varios tipos de objeto (explicados en la [**tabla**](#object-type-explanations) a continuación).

Cada elemento del esquema debe tener:

* **Nombre**: Esto se usará como clave del objeto en las instrucciones de parseo y será visible en los datos analizados.
* **Descripción** (opcional, pero recomendado): Ayuda a mejorar la precisión del parseo.

### **Ajustes del esquema**

* **Reordenar elementos**: Arrastra y suelta los elementos usando los puntos del lado izquierdo para cambiar su orden (solo se pueden mover los elementos dentro del mismo nivel de anidación).
* **Editar elementos**: Haz clic en el icono de edición para modificar cualquier campo.
* **Eliminar elementos**: Puedes eliminar cualquier elemento en el nivel superior.
* **Agregar nuevos elementos**: Agrega nuevos elementos al nivel superior.

Una vez que actualices el esquema, haz clic en el **"Actualizar salida"** botón para regenerar las instrucciones y previsualizar los datos analizados.

### Explicaciones de tipos de objeto

<table><thead><tr><th width="208">Tipo de objeto</th><th width="243">Descripción</th><th>Ejemplo de datos analizados</th></tr></thead><tbody><tr><td>Cadena</td><td>Una sola salida de texto</td><td><code>“title”: “Example product title”</code></td></tr><tr><td>Número</td><td>Un solo número</td><td><code>“price”: 9.99</code></td></tr><tr><td>Array de cadenas</td><td>Una lista de salidas de texto</td><td><code>“products”: [“product 1”, “product 2”, “product 3”]</code></td></tr><tr><td>Array de números</td><td>Una lista de números</td><td><code>“pages”: [1, 2, 3]</code></td></tr><tr><td>Array de objetos</td><td>Una lista de objetos/elementos, cada uno con sus propios objetos dentro (<code>_items</code> bloque en las instrucciones de parseo)</td><td><pre class="language-json"><code class="lang-json">“related_items”: [
  {
    “title”: “product 1”,
    “price”: 9.99
  },
  {
    “title”: “product 2”,
    “price”: 15.99
  }
]
</code></pre></td></tr></tbody></table>

### Trabajar con un array de objetos

1. **Selecciona "Array de objetos"**: Esta opción añade un objeto hijo y un botón.

<figure><img src="https://lh7-qw.googleusercontent.com/docsz/AD_4nXcnZ-xxFBAjZPzSJesa5bjbUj7wOQlGn7Ut4bxQzrRNbUmN0CkcfOZa23QRLma2vUsINNl6c5TOixopuBGdIk9iKFvWNpfpkF5s-zL9CKWxEEeJ40yZc6n2eqRsUw45HcWJjZikl4pERT-8-nF5Pno7kpQ?key=TW5rMlJ-s_BzFm7nRv1Dlw" alt=""><figcaption></figcaption></figure>

2. **Completa los nombres de los objetos**: Para guardar el elemento en el esquema, debes completar los nombres de los objetos padre e hijo. Cuando lo hagas, la marca de verificación se pondrá verde.

<figure><img src="https://lh7-qw.googleusercontent.com/docsz/AD_4nXffrjzhyFW4oiVj6MHaRGp7ysfkC1cVR4viQEWM5FBE3vhElH-ZRL5B796G6cfK5dNMvLtXafioTUoQaG-3QQTuaPLcq4UcsmA524hNW_IMjvw6pUdY-CRAHaYvyMkctNX0pp9qmWrxoOR3sNAwqwc8OpVT?key=TW5rMlJ-s_BzFm7nRv1Dlw" alt=""><figcaption></figcaption></figure>

3. **Requisito del objeto hijo**: Un "Array de objetos" debe tener al menos un hijo.

### Prueba de las instrucciones

De forma predeterminada, los datos analizados se basan en la primera URL proporcionada en **Paso 1**. También puedes proporcionar una URL diferente para probar las instrucciones de parseo:

<figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-58535851049d3c5f9671ea984a07db9bcbcb1862%2FScreenshot%202024-09-24%20at%2018.14.45.png?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Las instrucciones se generan basándose en las URLs iniciales y no tienen en cuenta las URLs de prueba. Editar el prompt o las URLs restablecerá el esquema, lo que requerirá una regeneración completa.
{% endhint %}

#### **Paso 3: Copia/guarda las instrucciones e intégralas en trabajos de scraping**

Una vez que las instrucciones sean satisfactorias:

* Usa el **"Copiar"** botón para copiar las instrucciones y pegarlas en el código de tu scraper.
* Como alternativa, guarda las instrucciones en tu sesión de Web Scraper API Playground, ajusta otros parámetros de la solicitud, prueba y luego copia el código completo de la solicitud en tu lenguaje de programación preferido.

<figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-61b517e5299a637f2f38c497e8f9c0bb94819268%2FScreenshot%202024-09-24%20at%2018.17.04.png?alt=media" alt=""><figcaption></figcaption></figure>

### Ejemplo

#### URL

```
https://sandbox.oxylabs.io/products/1
```

#### Prompt

{% code overflow="wrap" %}

```
Quiero analizar una página de producto. Los datos analizados deberían incluir los siguientes campos:

- product_title: un campo de texto que contiene el título del producto
- price: un campo numérico que contiene el precio del producto
- related_products: una lista que contiene los títulos de los productos relacionados que se muestran debajo de la información principal del producto
```

{% endcode %}

#### Esquema de parseo

<table><thead><tr><th width="214">Tipo de objeto</th><th width="209">Nombre*</th><th>Descripción</th></tr></thead><tbody><tr><td>Cadena</td><td>product_title</td><td>Título del producto</td></tr><tr><td>Número</td><td>price</td><td>Precio del producto</td></tr><tr><td>Array de cadenas</td><td>related_products</td><td>Títulos de productos relacionados debajo de la información principal del producto</td></tr></tbody></table>

#### Instrucciones de parseo

```json
{
    "product_title": {
        "_fns": [
            {
                "_fn": "xpath_one",
                "_args": [
                    "//h2[@class=\"title css-1k75zwy e1pl6npa11\"]/text()",
                    "//div[@class=\"product-info-wrapper css-m2w3q2 emlf3670\"]/h2/text()",
                    "//div[@id=\"__next\"]/main/div/div/div/div[2]/div[1]/div[2]/div[2]/h2/text()"
                ]
            },
            {
                "_fn": "regex_search",
                "_args": [
                    "^\\s*(.[\\s\\S]*?)\\s*$",
                    1
                ]
            }
        ]
    },
    "price": {
        "_fns": [
            {
                "_fn": "xpath_one",
                "_args": [
                    "//div[@class=\"price css-o7uf8d e1pl6npa6\"]/text()",
                    "//div[@class=\"product-info-wrapper css-m2w3q2 emlf3670\"]/div[4]/text()",
                    "//div[@id=\"__next\"]/main/div/div/div/div[2]/div[1]/div[2]/div[2]/div[4]/text()"
                ]
            },
            {
                "_fn": "amount_from_string"
            }
        ]
    },
    "related_products": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": [
                    "//div/div[@class=\"product-card css-e8at8d eag3qlw10\"]/a[1]/h4/text()",
                    "//div[@id=\"__next\"]/main/div/div/div/div[2]/div[2]/div/a[1]/h4/text()",
                    "//div[@class=\"related-products css-1rinft1 emlf3670\"]/div/a[1]/h4/text()",
                    "//html[@lang=\"en\"]/body/div/main/div/div/div/div[2]/div[2]/div/a[1]/h4/text()",
                    "//div/div[@class=\"product-card css-e8at8d eag3qlw10\"]//h4[@class=\"title css-7u5e79 eag3qlw7\"]/text()",
                    "//div[@id=\"__next\"]/main/div/div/div/div[2]/div[2]/div//h4[@class=\"title css-7u5e79 eag3qlw7\"]/text()",
                    "//div[@class=\"related-products css-1rinft1 emlf3670\"]/div//h4[@class=\"title css-7u5e79 eag3qlw7\"]/text()",
                    "//div/div[@class=\"product-card css-e8at8d eag3qlw10\"]//a[@class=\"card-header css-o171kl eag3qlw2\"]/h4/text()",
                    "//html[@lang=\"en\"]/body/div/main/div/div/div/div[2]/div[2]/div//h4[@class=\"title css-7u5e79 eag3qlw7\"]/text()",
                    "//div[@id=\"__next\"]/main/div/div/div/div[2]/div[2]/div//a[@class=\"card-header css-o171kl eag3qlw2\"]/h4/text()",
                    "//div[@class=\"related-products css-1rinft1 emlf3670\"]/div//a[@class=\"card-header css-o171kl eag3qlw2\"]/h4/text()",
                    "//html[@lang=\"en\"]/body/div/main/div/div/div/div[2]/div[2]/div//a[@class=\"card-header css-o171kl eag3qlw2\"]/h4/text()"
                ]
            },
            {
                "_fn": "regex_search",
                "_args": [
                    "^\\s*(.[\\s\\S]*?)\\s*$",
                    1
                ]
            }
        ]
    }
}
```

#### Datos analizados

```json
{
    "price": 91.99,
    "product_title": "The Legend of Zelda: Ocarina of Time",
    "related_products": [
        "The Legend of Zelda: Majora's Mask",
        "Indiana Jones and the Infernal Machine"
    ],
    "parse_status_code": 12000
}
```

### Generación de instrucciones de parseo mediante una API

Si quieres generar muchos conjuntos diferentes de instrucciones de parseo para cubrir la variedad de sitios web con los que trabajas, puedes crear instrucciones de parseo mediante una API; consulta [API generadora de instrucciones de parseo](/products/es/web-scraper-api/features/custom-parser/generating-parsing-instructions-via-api.md) para ver cómo se hace.

## Generador de instrucciones del navegador

Puedes usar OxyCopilot para crear complejos scripts de interacción con páginas sin analizar la estructura del sitio ni escribir manualmente la configuración para tus [Instrucciones del navegador](/products/es/web-scraper-api/features/js-rendering-and-browser-control.md).

### Cómo funciona

#### **Paso 1: Proporciona una URL y un prompt**

* **URL:** Proporciona una sola URL para generar instrucciones del navegador. OxyCopilot usa el HTML de la URL proporcionada para determinar cómo scriptar las interacciones de la página web que necesitas.
* **Prompt:** El prompt es crucial para crear las instrucciones del navegador. Indica claramente qué acciones te gustaría que se realizaran en la página web una vez que esté abierta (p. ej., "Desplázate hasta el final, espera a que se cargue el botón 'siguiente página', haz clic en el botón 'siguiente página'").

<figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-8dba0a7e0afde23d1884daae65c645fb5c5d64ea%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

#### **Paso 2 \[Opcional]: Ajusta las instrucciones del navegador**

Este paso te permite ajustar la secuencia de instrucciones del navegador para adaptarla mejor a tus necesidades o solucionar cualquier problema.

#### **Resumen de las instrucciones del navegador**

<figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-e3e70cf09f00b2904e53a0c2adc3370e7f702a51%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

Una vez que OxyCopilot termine de procesar tu entrada, mostrará la secuencia de instrucciones del navegador que ha creado.

Puedes ajustar la secuencia editando, añadiendo o eliminando pasos.

#### **Paso 3: Copia/guarda las instrucciones e intégralas en trabajos de scraping**

Una vez que las instrucciones sean satisfactorias, puedes guardarlas en tu sesión de Web Scraper API Playground, ajustar otros parámetros de la solicitud, probar y luego copiar el código completo de la solicitud en tu lenguaje de programación preferido.

<figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-d26523d746d989319454010151a75d415586c54e%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Agradecemos tus comentarios y sugerencias de mejora. No dudes en contactarnos en <support@oxylabs.io> o contacta con nuestro soporte por chat en vivo 24/7.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://developers.oxylabs.io/products/es/web-scraper-api/web-scraper-api-playground/oxycopilot.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
