Cómo usar el HTML Tokenizer en Python

Cómo usar el HTML Tokenizer en Python

El tokenizador en Aspose.HTML FOSS para Python convierte el marcado en una secuencia de tokens definidos por estándares — útil para linters, pases previos de saneamiento y cualquier herramienta que inspeccione el marcado por debajo del nivel del árbol. Esta guía cubre los puntos de entrada de tokenización, el vocabulario de tokens y los estados, usando pip para la instalación.

Guía paso a paso

Paso 1: Instalar el paquete

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

Paso 2: Importar las clases requeridas

from aspose_html.tokenizer import Tokenizer, TokenizerState

Paso 3: Tokenizar el marcado

Tokenizer.tokenize() procesa la entrada completa; Tokenizer.tokenize_fragment() aplica reglas de fragmento. El flujo contiene tokens tipados: StartTagToken y EndTagToken (con atributos), CharacterToken para texto, CommentToken, DoctypeToken, y un EofToken final.


Paso 4: Controlar el estado inicial

TokenizerState refleja la máquina de estados de la especificación. Para entrada sensible al contexto — contenido que aparecería dentro de <script> o <style> — establezca el estado inicial correspondiente con Tokenizer.set_state() antes de tokenizar.


Paso 5: Resolver referencias de caracteres

Las referencias de caracteres nombradas y numéricas se resuelven mediante resolve_named_char_ref(), resolve_numeric_char_ref() y find_named_char_ref_match() — respaldadas por la tabla completa de referencias nombradas.

Problemas comunes y soluciones

El contenido de script o estilo se tokeniza como marcado. El estado inicial era incorrecto para el contexto; establézcalo con set_state().

Las entidades aparecen sin resolver en la salida. Los consumidores de texto crudo deben ejecutar los resolvedores de referencias de carácter; la resolución es explícita a este nivel.

La salida del fragmento difiere de un análisis completo. Las reglas de tokenización de fragmentos difieren intencionalmente — use tokenize() para documentos completos.

Preguntas Frecuentes

¿Puedo consumir tokens sin construir un árbol?

Sí — el flujo de tokens es una salida pública, independiente de la construcción del árbol.

¿Qué tipos de tokens existen?

StartTagToken, EndTagToken, CharacterToken, CommentToken, DoctypeToken y EofToken.

¿Los estados del tokenizador son los estándar?

Sí — TokenizerState modela la máquina de estados de la especificación.

Ver también

 Español