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
- BuildedQuery: Uma forma de definir como localizar um elemento (CSS ou XPath).
- Extractor: Uma função que sabe o que pegar do elemento encontrado (texto, atributo, etc.).
- 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")oucss("#id") - XPath:
xpath("//div[@id='root']")(Poderoso para buscas complexas)