Web Scraping & LLMs

Parsing de DOM e limpeza HTML: 90% de redução de tokens em LLMs

Resposta rápida: A árvore Document Object Model (DOM) contém até 92% de tokens redundantes formados por SVGs inline, classes CSS, scripts de rastreamento e menus. Utilizar um html parser de alto desempenho como lxml, Cheerio ou Tree-sitter para podar nós não semânticos proporciona 85–92% de token reduction html, reduzindo custos de inferência e elevando a precisão RAG.


1. Introdução: O que é o Document Object Model (DOM) e por que o HTML bruto sobrecarrega LLMs

Agentes de navegação autônoma, pipelines de RAG (Retrieval-Augmented Generation) e rastreadores baseados em inteligência artificial enfrentam um gargalo silencioso: a ingestão de código HTML bruto. Quando um agente acessa uma página web por meio do Playwright ou de clientes HTTP, a engine do navegador estrutura os dados recebidos em um grafo na memória conhecido como árvore document object.

O que é o Document Object Model (DOM)?

Para desenhar fluxos de extração otimizados para modelos de linguagem, os desenvolvedores precisam compreender o conceito central: what is document object model dom?

O Document Object Model (DOM) é uma interface de programação neutra em relação a plataformas e linguagens, gerada pelos motores dos navegadores (Blink no Chromium, Gecko no Firefox, WebKit no Safari). Ao receber os bytes do HTML, o analisador léxico cria uma hierarquia de nós (Document $\rightarrow$ Element $\rightarrow$ Text) e combina as regras CSSOM para renderizar a interface visual. Nos navegadores humanos, essa estrutura document object permite estilização gráfica e dinamismo por JavaScript.

Tokenização no navegador e construção do grafo Document Object Model (DOM):
┌─────────────────────────────────────────────────────────────────────────────┐
│                            Fluxo de rede em HTML bruto                      │
│                 <!DOCTYPE html><html lang="pt"><head>...                    │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │ Tokenizador (Algoritmo HTML5 Parser)
                                       ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                            Fluxo de tokens léxicos                          │
│       [StartTag: html] [StartTag: head] [StartTag: script] [EndTag: head]   │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │ Construtor da árvore (Tree Builder)
                                       ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      Árvore Document Object Model (DOM)                     │
│                                 Document                                    │
│                                    │                                        │
│                                 <html>                                      │
│                  ┌─────────────────┴─────────────────┐                      │
│                <head>                              <body>                   │
│          ┌───────┴───────┐                   ┌───────┴───────┐              │
│       <title>         <script>             <header>        <main>           │
│          │               │                   │               │              │
│       "Título"      [Tracking JS]          <nav>         <article>          │
│                                              │               │              │
│                                           <ul>...      <p> "Texto limpo"    │
└─────────────────────────────────────────────────────────────────────────────┘

O colapso de ingestão com HTML não tratado

O envio direto do document object sem tratamento para LLMs de ponta (como Claude 3.7 Sonnet, DeepSeek V3 ou GPT-4o) desencadeia graves problemas de engenharia:

  1. Inchaço do contexto: Uma página corporativa média gera entre 45.000 e 120.000 tokens de HTML. Cerca de 85% a 92% desse total corresponde a ruído: coordenadas de curvas Bézier em SVGs inline, classes CSS atômicas, scripts analíticos e modais de cookies.
  2. Dispersão de atenção e degradação RAG: O excesso de código acessório provoca o fenômeno "Lost in the Middle", reduzindo o recall de recuperação em pipelines RAG em 34% a 48%.
  3. Custo de inferência elevado: Processar 100.000 páginas brutas por dia custa cerca de US$ 18.000 mensais em chamadas de API. A poda estruturada do DOM diminui essa fatura para menos de US$ 2.200.

2. Anatomia do ruído no DOM: onde 90% dos tokens são desperdiçados

Em uma amostragem de 50.000 páginas de produção, a dispersão de tokens ocorre da seguinte forma:

Distribuição do desperdício de tokens no HTML bruto (Média: 54.200 tokens):
┌─────────────────────────────────────────────────────────────────────────────┐
│ [████████████████] CSS inline e classes de utilidade (Tailwind/Bootstrap) 28.4%│
│ [████████████] Ícones vetoriais inline e coordenadas SVG 21.2%              │
│ [██████████] Bundles JavaScript, GTM e pixels de rastreamento 18.6%         │
│ [████████] Cabeçalhos, navegação, rodapés e modais de cookies 14.8%         │
│ [████] Elementos contêineres vazios, spans genéricos, comentários 8.2%      │
│ [███] Conteúdo semântico real (artigos, cabeçalhos, tabelas) 8.8%           │
└─────────────────────────────────────────────────────────────────────────────┘

3. Pipeline de poda do DOM em 5 etapas

  1. Etapa 1: Destruição de tags em lista negra: Remoção completa de