Come utilizzare il HTML Tokenizer in Python
Il tokenizzatore in Aspose.HTML FOSS per Python converte il markup in un flusso di token definiti dagli standard — utile per linters, pre-pass di sanificazione e qualsiasi strumento che ispeziona il markup al di sotto del livello dell’albero. Questa guida copre i punti di ingresso della tokenizzazione, il vocabolario dei token e gli stati, usando pip per l’installazione.
Guida passo-passo
Passo 1: Installa il pacchetto
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Passo 2: Importa le classi richieste
from aspose_html.tokenizer import Tokenizer, TokenizerStatePasso 3: Tokenizza il markup
Tokenizer.tokenize() elabora l’input completo; Tokenizer.tokenize_fragment() applica le regole dei frammenti. Il flusso contiene token tipizzati: StartTagToken e EndTagToken (con attributi), CharacterToken per il testo, CommentToken, DoctypeToken, e un EofToken finale.
Passo 4: Controllare lo Stato Iniziale
TokenizerState rispecchia la macchina a stati della specifica. Per input sensibili al contesto — contenuto che apparirebbe all’interno di <script> o <style> — impostare lo stato iniziale corrispondente con Tokenizer.set_state() prima della tokenizzazione.
Passo 5: Risolvere i Riferimenti di Carattere
I riferimenti di carattere nominati e numerici si risolvono tramite resolve_named_char_ref(), resolve_numeric_char_ref() e find_named_char_ref_match() — supportati dalla tabella completa dei riferimenti nominati.
Problemi Comuni e Correzioni
Il contenuto di script o style viene tokenizzato come markup. Lo stato iniziale era errato per il contesto; impostalo con set_state().
Le entità appaiono non risolte nell’output. I consumatori di testo grezzo devono eseguire i risolutori di riferimenti di carattere; la risoluzione è esplicita a questo livello.
L’output del frammento differisce da un parsing completo. Le regole di tokenizzazione del frammento differiscono intenzionalmente — usa tokenize() per i documenti completi.
Domande Frequenti
Posso consumare i token senza costruire un albero?
Sì — il flusso di token è un output pubblico, indipendente dalla costruzione dell’albero.
Quali tipi di token esistono?
StartTagToken, EndTagToken, CharacterToken, CommentToken, DoctypeToken e EofToken.
Gli stati del tokenizzatore sono quelli standard?
Sì — TokenizerState modella la macchina a stati della specifica.