Como usar o HTML Tokenizer em Python

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, TokenizerState

Etapa 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.

Ver também

 Português