Xcrap Logo

Extratores e Modelos

Transformando HTML bruto em dados estruturados.

O pacote @xcrap/extractor é onde a mágica acontece. Ele remove a necessidade de manipular manualmente o DOM.

Conceitos Chave

  1. BuildedQuery: Uma forma de definir como localizar um elemento (CSS ou XPath).
  2. Extractor: Uma função que sabe o que pegar do elemento encontrado (texto, atributo, etc.).
  3. ExtractionModel: Um mapa de propriedades para extrações.

Criando um Modelo

Vamos extrair informações de um livro:

import { HtmlExtractionModel, css, extract } from "@xcrap/extractor";

const bookModel = new HtmlExtractionModel({
    title: {
        query: css("h1"),
        extractor: extract("innerText")
    },
    price: {
        query: css(".price_color"),
        extractor: extract("innerText")
    },
    availability: {
        query: css(".availability"),
        extractor: extract("innerText")
    }
});

O HtmlParser conecta o HTML ao seu modelo. Geralmente você o obtém diretamente da resposta do cliente.

import { AxiosClient } from "@xcrap/axios-client";

const client = new AxiosClient();
const response = await client.fetch({ url: "https://example.com" });

// Obtendo o parser da resposta
const parser = response.asHtmlParser();

const data = await parser.extractModel({ model: bookModel });
console.log(data); // { title: "Design Patterns", price: "£50.00", ... }

Extrações Múltiplas (Listas)

Para extrair vários itens repetidos, usamos a propriedade multiple.

const itemModel = new HtmlExtractionModel({
    name: { query: css("h3 a"), extractor: extract("attribute:title") }
});

const searchModel = new HtmlExtractionModel({
    results: {
        query: css(".product_pod"),
        multiple: true,
        limit: 10,
        model: itemModel
    }
});

Seletores Suportados

  • CSS: css(".classe") ou css("#id")
  • XPath: xpath("//div[@id='root']") (Poderoso para buscas complexas)

On this page