Jak používat tokenizér HTML v Python
Tokenizér v Aspose.HTML FOSS pro Python převádí značkový kód na proud tokenů definovaných standardy— užitečné pro lintery, předprůchody sanitizéru a jakýkoli nástroj, který zkoumá značkový kód pod úrovní stromu. Tento průvodce pokrývá vstupní body tokenizace, slovník tokenů a stavy, s použitím pip pro instalaci.
Průvodce krok za krokem
Krok 1: Nainstalujte balíček
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Krok 2: Importujte požadované třídy
from aspose_html.tokenizer import Tokenizer, TokenizerStateKrok 3: Tokenizujte značkový kód
Tokenizer.tokenize() zpracovává celý vstup; Tokenizer.tokenize_fragment() používá pravidla fragmentů. Proud obsahuje typované tokeny: StartTagToken a EndTagToken (s atributy), CharacterToken pro text, CommentToken, DoctypeToken a konečný EofToken.
Krok 4: Ovládání počátečního stavu
TokenizerState odráží stavový stroj specifikace. Pro kontextově citlivý vstup — obsah, který by se objevil uvnitř <script> nebo <style> — nastavte odpovídající počáteční stav pomocí Tokenizer.set_state() před tokenizací.
Krok 5: Řešení znakových referencí
Pojmenované a číselné znakové reference se rozlišují pomocí resolve_named_char_ref(), resolve_numeric_char_ref() a find_named_char_ref_match() — podpořeno kompletní tabulkou pojmenovaných referencí.
Časté problémy a opravy
Obsah skriptu nebo stylu se tokenizuje jako značkování. Počáteční stav byl pro kontext nesprávný; nastavte jej pomocí set_state().
Entity se v výstupu objevují jako nevyřešené. Spotřebitelé surového textu musí spouštět řešiče znakových referencí; řešení je na této úrovni explicitní.
Výstup fragmentu se liší od úplného parsování. Pravidla tokenizace fragmentu se úmyslně liší — použijte tokenize() pro úplné dokumenty.
Často kladené otázky
Mohu spotřebovávat tokeny bez vytváření stromu?
Ano — tokenový tok je veřejný výstup, nezávislý na konstrukci stromu.
Jaké typy tokenů existují?
StartTagToken, EndTagToken, CharacterToken, CommentToken, DoctypeToken a EofToken.
Jsou stavy tokenizéru standardní?
Ano — TokenizerState modeluje stavový automat specifikace.