Como usar o HTML Tokenizer em Python
O tokenizador em Aspose.HTML FOSS para Python converte marcação em um fluxo de tokens definidos por padrões — útil para linters, pré-passagens de sanitização e qualquer ferramenta que inspeciona marcação abaixo do nível da árvore. Este guia cobre os pontos de entrada de tokenização, o vocabulário de tokens e os estados, usando pip para instalação.
Guia passo a passo
Etapa 1: Instalar o pacote
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Etapa 2: Importar as classes necessárias
from aspose_html.tokenizer import Tokenizer, TokenizerStateEtapa 3: Tokenizar a marcação
Tokenizer.tokenize() processa a entrada completa; Tokenizer.tokenize_fragment() aplica regras de fragmento. O fluxo contém tokens tipados: StartTagToken e EndTagToken (com atributos), CharacterToken para texto, CommentToken, DoctypeToken e um EofToken final.
Etapa 4: Controlar o Estado Inicial
TokenizerState espelha a máquina de estados da especificação. Para entrada sensível a contexto — conteúdo que apareceria dentro de <script> ou <style> — defina o estado inicial correspondente com Tokenizer.set_state() antes de tokenizar.
Etapa 5: Resolver Referências de Caracteres
Referências de caracteres nomeadas e numéricas são resolvidas através de resolve_named_char_ref(), resolve_numeric_char_ref() e find_named_char_ref_match() — apoiadas pela tabela completa de referências nomeadas.
Problemas Comuns e Correções
Conteúdo de script ou estilo é tokenizado como marcação. O estado inicial estava errado para o contexto; defina-o com set_state().
Entidades aparecem não resolvidas na saída. Consumidores de texto bruto devem executar os resolvedores de referência de caracteres; a resolução é explícita neste nível.
A saída do fragmento difere de uma análise completa. As regras de tokenização de fragmentos diferem intencionalmente — use tokenize() para documentos completos.
Perguntas Frequentes
Posso consumir tokens sem construir uma árvore?
Sim — o fluxo de tokens é uma saída pública, independente da construção da árvore.
Quais tipos de token existem?
StartTagToken, EndTagToken, CharacterToken, CommentToken, DoctypeToken e EofToken.
Os estados do tokenizador são os padrões?
Sim — TokenizerState modela a máquina de estados da especificação.