# OxyCopilot

**OxyCopilot** é um recurso gratuito [**Web Scraper API** ](/products/pt-br/web-scraper-api.md)que facilita a integração e ajuda os usuários a encontrar soluções eficazes para casos de uso complexos, tudo sem precisar de conhecimento de programação. OxyCopilot atualmente inclui três recursos separados:

* **Construtor de scraper**
* [**Custom Parser**](/products/pt-br/web-scraper-api/features/custom-parser.md) **construtor**
* **Construtor de instruções do navegador**

{% hint style="success" %}
OxyCopilot está acessível no [**Web** **Scraper API Playground**](https://dashboard.oxylabs.io/?route=/api-playground) no painel da Oxylabs.
{% endhint %}

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

## Construtor de scraper

OxyCopilot ajuda você a configurar um scraper (e montar o payload da requisição) para a Web Scraper API sem precisar entender a documentação ou a lógica dos campos.

### Como funciona

#### **Etapa 1: Forneça uma URL e um prompt**

* **URL:** Forneça a URL que você quer raspar.
* **Prompt:** Descreva seus requisitos (por exemplo, localização, renderização por JS etc.).

<figure><img src="/files/9dfb0470c3f90da22399d4bcbdb1f85f2f9f160a" alt="" width="563"><figcaption></figcaption></figure>

**Etapa 2: Parsing**

Você tem três opções para lidar com o parsing:

1. **Custom Parser**: Selecione "Adicionar instruções de parsing" para criar sua própria lógica de parsing usando o [**Construtor de Custom Parser**](#custom-parser-builder).
2. **Dedicated Parser**: Se a URL for de um site para o qual fornecemos um parser dedicado e você quiser usá-lo, selecione "Continuar com Dedicated Parser".
3. **Sem parsing**: Escolha prosseguir sem parsing se dados estruturados não forem necessários.

{% hint style="warning" %}
Se a URL pertencer a um site para o qual temos um parser dedicado, mas você não precisar de dados estruturados, selecione "Continuar com Dedicated Parser" e desative o parâmetro parse nas configurações do playground. Evite usar o botão de sair, pois ele não salvará os parâmetros preenchidos automaticamente.
{% endhint %}

<div><figure><img src="/files/c6595b99bdd210311c476126499f5621e3032c00" alt="" width="375"><figcaption><p>Se não tivermos um parser dedicado</p></figcaption></figure> <figure><img src="/files/b6826cd17b775ef46a0987a87b16421dbb092768" alt="" width="375"><figcaption><p>Se tivermos um parser dedicado</p></figcaption></figure></div>

#### **Etapa 3: Revisar a requisição**

Com base no seu prompt, o OxyCopilot preencherá automaticamente os parâmetros necessários no Web Scraper API Playground. Você verá o código da requisição e os parâmetros específicos para o seu caso de uso, e poderá ajustar os parâmetros se necessário.

**Etapa 4: Enviar a requisição e copiar**

Se estiver tudo certo, envie a requisição para ver como a saída fica e verificar se funciona como esperado. Em seguida, copie o código da requisição para usar nas suas próximas tarefas de scraping com a Web Scraper API.

### Exemplo

#### URL

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

#### Prompt

{% code overflow="wrap" %}

```
Raspe a página de busca da Amazon a partir da URL fornecida e localize os resultados para a Polônia.
```

{% endcode %}

#### Parâmetros gerados por IA (JSON)

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

#### Códigos de requisição gerados por IA

<figure><img src="/files/ae41f34e840513a625b4185c578a8c440fd378de" alt=""><figcaption></figcaption></figure>

## Construtor de Custom Parser

Aproveite o recurso de [**Custom Parser**](/products/pt-br/web-scraper-api/features/custom-parser.md) com o OxyCopilot para criar um parser sem precisar escrever código ou analisar manualmente a estrutura do site.

### Como funciona

#### **Etapa 1: Forneça URL(s) e um prompt**

* **URL(s):** Você pode fornecer até **3 URLs** para as quais você quer gerar instruções de parsing. OxyCopilot usa o HTML das URLs fornecidas para determinar a melhor lógica para extrair os campos necessários.&#x20;

{% hint style="info" %}
Quanto mais URLs você fornecer, mais robustas serão as instruções de parsing, pois o OxyCopilot identifica padrões comuns entre páginas semelhantes. Observe que URLs adicionais podem aumentar o tempo de espera pelos resultados.
{% endhint %}

* **Prompt:** O prompt é o componente principal na criação de um schema em linguagem natural, que serve de base para gerar as instruções de parsing reais. O prompt deve descrever claramente os campos que precisam ser analisados.

<figure><img src="/files/b66d41ac40d958dd3b6c1f961d9cc225dd94f354" alt=""><figcaption></figcaption></figure>

#### **Etapa 2 \[Opcional]: Ajustar o schema de parsing**

Esta etapa permite refinar o schema de parsing para atender melhor às suas necessidades ou solucionar quaisquer problemas.

#### **Visão geral do schema de parsing**

<figure><img src="/files/8aa9382df31a5c2792995109a014382e417246ca" alt=""><figcaption></figcaption></figure>

Esta tabela visualiza a entrada usada pela IA para gerar instruções de parsing. O schema define quais campos precisam ser analisados e consiste em vários tipos de object (explicados na [**tabela**](#object-type-explanations) abaixo).

Cada item no schema deve ter:

* **Nome**Isso será usado como a chave do object nas instruções de parsing e ficará visível nos dados analisados.
* **Descrição** (opcional, mas recomendado): Ajuda a melhorar a precisão do parsing.

### **Ajustes do schema**

* **Reordenar itens**: Arraste e solte os itens usando os pontos no lado esquerdo para alterar a ordem (somente itens no mesmo nível de aninhamento podem ser movidos).
* **Editar itens**: Clique no ícone de edição para modificar qualquer campo.
* **Excluir itens**: Você pode excluir qualquer item no nível pai.
* **Adicionar novos itens**: Adicione novos itens ao nível pai.

Depois de atualizar o schema, clique no **"Refresh output"** botão para regenerar as instruções e visualizar os dados analisados.

### Explicações dos tipos de object

<table><thead><tr><th width="208">Tipo de object</th><th width="243">Descrição</th><th>Exemplo de dados analisados</th></tr></thead><tbody><tr><td>String</td><td>Uma única saída de texto</td><td><code>“title”: “Título de produto de exemplo”</code></td></tr><tr><td>Número</td><td>Um único número</td><td><code>“price”: 9.99</code></td></tr><tr><td>Array de strings</td><td>Uma lista de saídas de texto</td><td><code>“products”: [“produto 1”, “produto 2”, “produto 3”]</code></td></tr><tr><td>Array de números</td><td>Uma lista de números</td><td><code>“pages”: [1, 2, 3]</code></td></tr><tr><td>Array de objects</td><td>Uma lista de objects/itens, cada um com seus próprios objects dentro (<code>_items</code> bloco nas instruções de parsing)</td><td><p></p><pre class="language-json"><code class="lang-json">“related_items”: [
  {
    “title”: “produto 1”,
    “price”: 9.99
  },
  {
    “title”: “produto 2”,
    “price”: 15.99
  }
]
</code></pre></td></tr></tbody></table>

### Trabalhando com array de objects

1. **Selecione "Array de objects"**: Esta opção adiciona um object filho e um botão.

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

2. **Preencha os nomes dos objects**: Para salvar o item no schema, você deve preencher os nomes dos objects pai e filho. Quando terminar, a marca de verificação ficará 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 de object filho**: Um "Array de objects" deve ter pelo menos um filho.

### Testando as instruções

Por padrão, os dados analisados são baseados na primeira URL fornecida na **Etapa 1**. Você também pode fornecer uma URL diferente para testar as instruções de parsing:

<figure><img src="/files/a81455b28be34c50541b72c765d2285dab9e1184" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
As instruções são geradas com base nas URLs iniciais e não consideram as URLs de teste. Editar o prompt ou as URLs redefinirá o schema, exigindo uma regeneração completa.
{% endhint %}

#### **Etapa 3: Copiar/salvar instruções e integrar aos jobs de scraping**

Depois que as instruções estiverem satisfatórias:

* Use o **"Copy"** botão para copiar as instruções e colá-las no código do seu scraper.
* Como alternativa, salve as instruções na sua sessão do Web Scraper API Playground, ajuste outros parâmetros da requisição, teste e depois copie o código completo da requisição na linguagem de programação de sua preferência.

<figure><img src="/files/01c9032960ed78bbc96652f4aeffff4ebacc26f1" alt=""><figcaption></figcaption></figure>

### Exemplo

#### URL

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

#### Prompt

{% code overflow="wrap" %}

```
Quero analisar uma página de produto. Os dados analisados devem incluir os seguintes campos:

- product_title: um campo de texto contendo o título do produto
- price: um campo numérico contendo o preço do produto
- related_products: uma lista contendo os títulos dos produtos relacionados exibidos abaixo das informações principais do produto
```

{% endcode %}

#### Schema de parsing

<table><thead><tr><th width="214">Tipo de object</th><th width="209">Nome*</th><th>Descrição</th></tr></thead><tbody><tr><td>String</td><td>product_title</td><td>Título do produto</td></tr><tr><td>Número</td><td>price</td><td>Preço do produto</td></tr><tr><td>Array de strings</td><td>related_products</td><td>Títulos de produtos relacionados abaixo das informações principais do produto</td></tr></tbody></table>

#### Instruções de parsing

```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
                ]
            }
        ]
    }
}
```

#### Dados analisados

```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
}
```

### Gerando instruções de parsing via uma API

Se você quiser gerar muitos conjuntos diferentes de instruções de parsing para cobrir a variedade de sites com os quais trabalha, você pode criar instruções de parsing via uma API – veja [API geradora de instruções de parsing](/products/pt-br/web-scraper-api/features/custom-parser/generating-parsing-instructions-via-api.md) para ver como isso é feito.

## Construtor de instruções do navegador

Você pode usar o OxyCopilot para criar scripts complexos de interação com páginas sem analisar a estrutura do site ou escrever manualmente a configuração para seus [Browser Instructions](/products/pt-br/web-scraper-api/features/js-rendering-and-browser-control.md).

### Como funciona

#### **Etapa 1: Forneça uma URL e um prompt**

* **URL:** Forneça uma única URL para gerar instruções do navegador. OxyCopilot usa o HTML da URL fornecida para determinar como scriptar as interações da página web de que você precisa.&#x20;
* **Prompt:** O prompt é crucial para criar as instruções do navegador. Descreva claramente quais ações você gostaria que fossem executadas na página da web assim que ela abrir (por exemplo, "Role até o final, aguarde o botão 'próxima página' carregar, clique no botão 'próxima página'").

<figure><img src="/files/5a59b3739b47fa24ac31f9eae33901c51f11f753" alt=""><figcaption></figcaption></figure>

#### **Etapa 2 \[Opcional]: Ajustar as instruções do navegador**

Esta etapa permite refinar a sequência de instruções do navegador para atender melhor às suas necessidades ou solucionar quaisquer problemas.

#### **Visão geral das instruções do navegador**

<figure><img src="/files/8285a1ad213369a3bb3749121a77b14993fdd4cd" alt=""><figcaption></figcaption></figure>

Quando o OxyCopilot terminar de processar sua entrada, ele exibirá a sequência de instruções do navegador que criou.

Você pode ajustar a sequência editando, adicionando ou removendo etapas.

#### **Etapa 3: Copiar/salvar instruções e integrar aos jobs de scraping**

Quando as instruções estiverem satisfatórias, você pode salvá-las na sua sessão do Web Scraper API Playground, ajustar outros parâmetros da requisição, testar e então copiar o código completo da requisição na linguagem de programação de sua preferência.

<figure><img src="/files/0d62a6026bfefdfa88bf8be36c3064cf57157958" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Agradecemos seu feedback e sugestões de melhoria. Não hesite em entrar em contato conosco em <support@oxylabs.io> ou conectar-se com nosso suporte por chat ao vivo 24/7.
{% endhint %}


---

# 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/pt-br/web-scraper-api/web-scraper-api-playground/oxycopilot.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.
