Web Scraping & LLMs

Parseo de DOM y limpieza HTML: 90% de reducción de tokens en LLMs

Respuesta rápida: El árbol Document Object Model (DOM) contiene hasta un 92% de ruido por SVG en línea, clases CSS, scripts de rastreo y menús. Usar un html parser como lxml, Cheerio o Tree-sitter para podar nodos no semánticos logra un 85–92% de token reduction html, reduciendo costes y mejorando RAG.


1. Introducción: ¿Qué es Document Object Model (DOM) y por qué el HTML crudo arruina los LLMs?

Los agentes de navegación autónoma, los sistemas RAG (Retrieval-Augmented Generation) y los extractores basados en IA se enfrentan a un cuello de botella crítico: el marcado web sin procesar. Cuando un agente accede a una página mediante Playwright o un cliente HTTP, el motor del navegador transforma el flujo de datos en una estructura en memoria conocida como árbol document object.

¿Qué es el Document Object Model (DOM)?

Para optimizar la ingesta de datos en modelos de lenguaje, es fundamental responder a la pregunta técnica: what is document object model dom?

El Document Object Model (DOM) es una interfaz neutral e independiente de la plataforma creada por los motores de renderizado (Blink en Chromium, Gecko en Firefox, WebKit en Safari). Al recibir el HTML, el navegador ejecuta una fase de tokenización léxica, construye una jerarquía abstracta de nodos (Document $\rightarrow$ Element $\rightarrow$ Text) y resuelve las reglas CSSOM para calcular el diseño visual. En un navegador convencional, esta estructura document object permite la manipulación dinámica con JavaScript y la representación visual en pantalla.

Tokenización en el navegador y construcción del árbol Document Object Model (DOM):
┌─────────────────────────────────────────────────────────────────────────────┐
│                           Flujo binario de HTML crudo                       │
│                 <!DOCTYPE html><html lang="es"><head>...                    │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │ Tokenizador (Algoritmo HTML5 Parser)
                                       ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                            Flujo de tokens léxicos                          │
│       [StartTag: html] [StartTag: head] [StartTag: script] [EndTag: head]   │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │ Constructor de árbol (Tree Builder)
                                       ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      Árbol Document Object Model (DOM)                      │
│                                 Document                                    │
│                                    │                                        │
│                                 <html>                                      │
│                  ┌─────────────────┴─────────────────┐                      │
│                <head>                              <body>                   │
│          ┌───────┴───────┐                   ┌───────┴───────┐              │
│       <title>         <script>             <header>        <main>           │
│          │               │                   │               │              │
│      "Título"      [Tracking JS]           <nav>         <article>          │
│                                              │               │              │
│                                           <ul>...      <p> "Texto limpio"   │
└─────────────────────────────────────────────────────────────────────────────┘

El colapso de ingesta: el impacto del DOM crudo en LLMs

Enviar el document object sin procesar directamente a LLMs de frontera (Claude 3.7 Sonnet, DeepSeek V3, GPT-4o) provoca fallos operativos severos:

  1. Inflación del contexto: Una página web estándar genera entre 45.000 y 120.000 tokens HTML. Entre el 85% y el 92% de estos tokens son irrelevantes: coordenadas vectoriales SVG, clases utilitarias de CSS, cookies, scripts de telemetría y encabezados repetitivos.
  2. Degradación de atención y pérdida de recall en RAG: La atención en arquitecturas Transformer se dispersa al procesar 40.000 tokens de código accesorio, generando el fenómeno "Lost in the Middle" y reduciendo el recall entre un 34% y un 48%.
  3. Sobrecoste financiero: Procesar 100.000 páginas crudas al día cuesta hasta $18.000 al mes en llamadas a la API. Podar el DOM reduce esta cifra a menos de $2.200 mensuales.

2. Anatomía del ruido en el DOM: dónde se pierde el 90% de los tokens

El análisis de 50.000 páginas de producción muestra la siguiente distribución:

Distribución del desperdicio de tokens en HTML crudo (Promedio: 54.200 tokens):
┌─────────────────────────────────────────────────────────────────────────────┐
│ [████████████████] CSS en línea y clases de utilidad (Tailwind/Bootstrap) 28.4%│
│ [████████████] Iconos vectoriales y coordenadas de curvas SVG 21.2%         │
│ [██████████] Paquetes de JavaScript, GTM y píxeles de rastreo 18.6%         │
│ [████████] Encabezados, navegación, pies de página y modales 14.8%          │
│ [████] Contenedores vacíos, etiquetas span genéricas, comentarios 8.2%      │
│ [███] Contenido semántico real (artículos, títulos, tablas) 8.8%            │
└─────────────────────────────────────────────────────────────────────────────┘

3. Pipeline de poda del DOM en 5 fases

  1. Fase 1: Eliminación de etiquetas en lista negra: Supresión inmediata de