# página de exemplos de funções de análise

## Processamento de HTML

### `element_text`

#### HTML de exemplo

```html
<!DOCTYPE html>
<html>
<body>
    <div id="product">
        <div id="product-description">Este é um bom produto</div>
        <div id="product-price">    12  3


        </div>
    </div>
</body>
</html>
```

**Extrair texto de um elemento HTML e remover espaços em branco**

```json
{
    "price": {
        "_fns": [
            {
                "_fn": "xpath_one",
                "_args": [".//*[@id='product-price']"]
            },
            {
                "_fn": "element_text"
            }
        ]
    }
}
```

```json
{
    "price": "12  3"
}
```

**Dado um valor de string como entrada, não faça nada**

```json
{
    "price": {
        "_fns": [
            {
                "_fn": "xpath_one",
                "_args": [".//*[@id='product-price']/text()"]
            },
            {
                "_fn": "element_text"
            }
        ]
    }
}
```

```json
{
    "price": "    12  3\n\n\n        "
}
```

### `xpath`

#### HTML de exemplo

```html
<body>
    <div class="product" id="socks">
        <div class="title">Meias</div>
        <div class="price">123.12</div>
        <div class="description">
            <ul>
                <li class="description-item">Muito</li>
                <li class="description-item">Bom</li>
                <li class="description-item">Meias</li>
            </ul>
        </div>
    </div>
</body>
```

**Obter todos os itens da descrição**

```json
{
    "description_items": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": ["//li[@class='description-item']/text()"]
            }
        ]
    }
}
```

```json
{
    "description_items": ["Muito", "Bom", "Meias"]
}
```

**Obter o primeiro item da descrição**

```json
{
    "first_description_item": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": ["(//li[@class='description-item'])[1]/text()"]
            }
        ]
    }
}
```

```json
{
    "first_description_item": [
        "Muito"
    ]
}
```

**Verificar se o elemento da seção de descrição existe**

```json
{
    "description_section_exists": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": ["boolean(//div[@class='description'])"]
            }
        ]
    }
}
```

```json
{
    "description_section_exists": true
}
```

**Obter o preço como um número**

```json
{
    "price": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": ["number(//div[@class='price'])"]
            }
        ]
    }
}
```

```json
{
    "description_section_exists": 123.12
}
```

**Múltiplas expressões para fallback caso a expressão anterior falhe**

```json
{
    "price": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": [
                    "//div[@class='product-price']/text()", <--- isto não encontra nada
                    "//div[@class='price']/text()" <--- isto encontra o preço alvo
                ]
            }
        ]
    }
}
```

```json
{
    "price": [
        "123.12"
    ]
}
```

**XPath `|` operador para corresponder com múltiplas expressões**

```json
{
    "price_and_title": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": ["//div[@class='price']/text() | //div[@class='title']/text()"]
            }
        ]
    }
}
```

```json
{
    "price_and_title": [
        "Meias",
        "123.12"
    ]
}
```

### `xpath_one`

#### HTML de exemplo

```html
<body>
    <div class="product" id="socks">
        <div class="title">Meias</div>
        <div class="price">123.12</div>
        <div class="description">
            <ul>
                <li class="description-item">Muito</li>
                <li class="description-item">Bom</li>
                <li class="description-item">Meias</li>
            </ul>
        </div>
    </div>
</body>
```

**Retornar a primeira correspondência**

```json
{
    "first_description_item": {
        "_fns": [
            {
                "_fn": "xpath_one",
                "_args": [".//li/text()"]
            }
        ]
    }
}
```

```json
{
    "first_description_item": "Muito"
}
```

**Usando funções XSLT**

```json
{
    "price": {
        "_fns": [
            {
                "_fn": "xpath_one",
                "_args": ["number(.//div[@class='price'])"]
            }
        ]
    }
}
```

```json
{
    "price": 123.12
}
```

## Manipulação de strings

### `amount_from_string`

#### HTML de exemplo

```html
<body>
    <div class="product" id="socks">
        <div class="title">Meias</div>
        <div class="price">O preço é: 123.12 pesos</div>
    </div>
</body>
```

**Extrair valor de uma string**

```json
{
    "price": {
        "_fns": [
            {
                "_fn": "xpath_one",
                "_args": [".//div[@class='price']/text()"]
            },
            {
                "_fn": "amount_from_string"
            }
        ]
    }
}
```

```json
{
    "price": 123.12
}
```

### `amount_range_from_string`

#### HTML de exemplo

```html
<body>
    <div class="product">
        <div class="price">
            O preço é: 123.12 pesos;
            O preço é: 345.12 pesos;
            O preço é: 678.12 pesos
        </div>
    </div>
</body>
```

**Extrair todos os valores de uma string**

```json
{
    "prices": {
        "_fns": [
            {
                "_fn": "xpath_one",
                "_args": [".//div[@class='price']/text()"]
            },
            {
                "_fn": "amount_range_from_string"
            }
        ]
    }
}
```

```json
{    
    "prices": [
        123.12,
        345.12,
        678.12
    ]
}
```

### `join`

#### HTML de exemplo

```html
<body>
    <div class="product">
        <div class="price">
            O preço é: 123.12 pesos;
        </div>
        <div class="price">
            O preço é: 345.12 pesos;
        </div>
        <div class="price">
            O preço é: 678.12 pesos
        </div>
    </div>
</body>
```

**Juntar um array de strings em uma única string**

```json
{
    "price_variants": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": [".//div[@class='price']"]
            },
            {  // Se chamarmos normalize-space() na primeira função do pipeline, 
               // ele retornará apenas o primeiro valor.
                "_fn": "xpath",
                "_args": ["normalize-space(text())"]
            },  
            {
                "_fn": "join",
                "_args": ""
            }
        ]
    }
}
```

```json
{
    "price_variants": "O preço é: 123.12 pesos;O preço é: 345.12 pesos;O preço é: 678.12 pesos"
}
```

### `regex_find_all` <a href="#regex_find_all" id="regex_find_all"></a>

#### HTML de exemplo

```html
<body>
    <div class="product">
        <div class="description">
            [uma descrição]
            [duas descrições]
            [três descrições]
        </div>
    </div>
</body>
```

**Encontrar todas as correspondências entre dois caracteres**

```json
{
    "descriptions": {
        "_fns": [
            {
                "_fn": "xpath_one",
                "_args": [".//div[@class='description']/text()"]
            },
            {
                "_fn": "regex_find_all",
                "_args": ["\\[(.*)\\]"]
            }
        ]
    }
}
```

```json
{
    "descriptions": [
        "uma descrição",
        "duas descrições",
        "três descrições"
    ]
}
```

### `regex_search` <a href="#regex_search" id="regex_search"></a>

#### HTML de exemplo

```html
<body>
    <div class="product">
        <div class="description">
            [uma descrição]
            [duas descrições]
            [três descrições]
            {a que eu preciso}
        </div>
    </div>
</body>
```

**Retornar a descrição entre dois caracteres**

```json
{
    "description": {
        "_fns": [
            {
                "_fn": "xpath_one",
                "_args": [".//div[@class='description']/text()"]
            },
            {
                "_fn": "regex_search",
                "_args": ["{(.*)}", 1]
            }
        ]
    }
}
```

```json
{
    "description": "a que eu preciso"
}
```

### `regex_substring`

#### HTML de exemplo

```html
<body>
    <div class="product">
        <div class="description">
            * uma descrição
            * duas descrições
            * três descrições
            * {essa aqui eu gostaria que fosse substituída}
        </div>
    </div>
</body>
```

**Substituir uma parte do texto por um valor especificado**

```json
{
    "descriptions": {
        "_fns": [
            {
                "_fn": "xpath_one",
                "_args": [".//div[@class='description']/text()"]
            },
            {
                "_fn": "regex_substring",
                "_args": ["{essa aqui eu gostaria que fosse substituída}", "quatro descrições"]
            },
            {
                "_fn": "regex_find_all",
                "_args": ["\\*\\s(.*)\n"]
            }
        ]
    }
}
```

```json
{
    "descriptions": [
        "uma descrição",
        "duas descrições",
        "três descrições",
        "quatro descrições"
    ]
}
```

## Funções comuns

### `convert_to_*`

#### HTML de exemplo

```html
<body>
    <div class="product">
        <div class="price">123</div>
        <div class="price">124</div>
        <div class="price">456</div>
        <div class="price">421</div>
        <div class="price">100</div>
    </div>
</body>
```

**Obter a contagem das variações de preço**

```json
{
    "price_variants": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": [".//div[@class='price']"]
            },
            {
                "_fn": "length"
            }
        ]
    }
}
```

```json
{
    "price_variants": 5
}
```

**Obter a contagem das variações de preço em um array multidimensional**

HTML de exemplo:

```html
<body>
    <div class="product">
        <property class="colors">
            <option class="color">Vermelho</option>
            <option class="color">Verde</option>
            <option class="color">Azul</option>
        </property>
        <property class="sizes">
            <option class="size">P</option>
            <option class="size">M</option>
            <option class="size">G</option>
            <option class="size">GG</option>
        </property>
    </div>
</body>
```

```json
{
    "number_of_variants": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": [".//property"]
            },
            {
                "_fn": "xpath",
                "_args": [".//option"]
            },
            {
                "_fn": "length"
            }
        ]
    }
}
```

```json
{
    "number_of_variants": [
        3,
        3
    ]
}
```

### `select_nth`

#### HTML de exemplo

```html
<body>
    <div class="product" id="socks">
        <div class="title">Meias</div>
        <div class="price">123.12</div>
        <div class="description">
            <ul>
                <li class="description-item">Muito</li>
                <li class="description-item">Bom</li>
                <li class="description-item">Meias</li>
            </ul>
        </div>
    </div>
</body>
```

**Selecionar o primeiro item da descrição do array**

```json
{
    "price_and_title": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": ["//li[@class='description-item']/text()"]
            },
            {
                "_fn": "select_nth",
                "_args": 0
            }
        ]
    }
}
```

```json
{
    "price_and_title": "Muito"
}
```

**Selecionar o último item da descrição do array**

```json
{
    "price_and_title": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": ["//li[@class='description-item']/text()"]
            },
            {
                "_fn": "select_nth",
                "_args": -1
            }
        ]
    }
}
```

```json
{
    "price_and_title": "Meias"
}
```

## Funções matemáticas

### `average`

#### HTML de exemplo

```html
<body>
    <div class="product">
        <div class="price">123</div>
        <div class="price">124</div>
        <div class="price">456</div>
        <div class="price">421</div>
        <div class="price">100</div>
    </div>
</body>
```

**Encontrar a média de todos os preços listados**

```json
{
    "price_average": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": [".//div[@class='price']"]
            },
            {
                "_fn": "xpath_one",
                "_args": ["number(text())"]
            },
            {
                "_fn": "average"
            }
        ]
    }
}
```

```json
{
    "price_average": 244.8
}
```

### `max`

#### HTML de exemplo

```html
<body>
    <div class="product">
        <div class="price">123</div>
        <div class="price">124</div>
        <div class="price">456</div>
        <div class="price">421</div>
        <div class="price">100</div>
    </div>
</body>
```

**Encontrar o máximo de todos os preços listados**

```json
{
    "price_max": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": [".//div[@class='price']"]
            },
            {
                "_fn": "xpath_one",
                "_args": ["number(text())"]
            },
            {
                "_fn": "max"
            }
        ]
    }
}
```

```json
{
    "price_max": 456.0
}
```

### `min`

#### HTML de exemplo

```html
<body>
    <div class="product">
        <div class="price">123</div>
        <div class="price">124</div>
        <div class="price">456</div>
        <div class="price">421</div>
        <div class="price">100</div>
    </div>
</body>
```

**Encontrar a média de todos os preços listados**

```json
{
    "price_min": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": [".//div[@class='price']"]
            },
            {
                "_fn": "xpath_one",
                "_args": ["number(text())"]
            },
            {
                "_fn": "min"
            }
        ]
    }
}
```

```json
{
    "price_min": 100.0
}
```

### `product`

#### HTML de exemplo

```html
<body>
    <div class="product">
        <property class="colors">
            <option class="color">Vermelho</option>
            <option class="color">Verde</option>
            <option class="color">Azul</option>
        </property>
        <property class="sizes">
            <option class="size">P</option>
            <option class="size">M</option>
            <option class="size">G</option>
            <option class="size">GG</option>
        </property>
    </div>
</body>
```

**Obter a contagem de diferentes variações de produto**

```json
{
    "number_of_variants": {
        "_fns": [
            {
                "_fn": "xpath",
                "_args": [".//property"]
            },
            {
                "_fn": "xpath",
                "_args": [".//option"]
            },
            {
                "_fn": "length"
            },
            {
                "_fn": "product"
            }
        ]
    }
}
```

```json
{
    "number_of_variants": 12
}
```


---

# 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/features/custom-parser/writing-instructions-manually/list-of-functions/function-examples.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.
