Jak używać tokenizera HTML w Python
Tokenizator w Aspose.HTML FOSS dla Python konwertuje znacznikowanie na strumień tokenów zdefiniowanych przez standardy — przydatny dla linterów, wstępnych przetworzeń sanitizera oraz każdego narzędzia, które analizuje znacznikowanie poniżej poziomu drzewa. Ten przewodnik opisuje punkty wejścia tokenizacji, słownictwo tokenów i stany, wykorzystując pip do instalacji.
Przewodnik krok po kroku
Krok 1: Zainstaluj pakiet
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: Zaimportuj wymagane klasy
from aspose_html.tokenizer import Tokenizer, TokenizerStateKrok 3: Tokenizuj znacznikowanie
Tokenizer.tokenize() przetwarza pełne wejście; Tokenizer.tokenize_fragment() stosuje reguły fragmentów. Strumień zawiera typowane tokeny: StartTagToken i EndTagToken (z atrybutami), CharacterToken dla tekstu, CommentToken, DoctypeToken oraz ostateczny EofToken.
Krok 4: Kontrola stanu początkowego
TokenizerState odzwierciedla maszynę stanów specyfikacji. Dla wejścia zależnego od kontekstu — treści, które pojawiłyby się wewnątrz <script> lub <style> — ustaw pasujący stan początkowy przy użyciu Tokenizer.set_state() przed tokenizacją.
Krok 5: Rozwiązywanie odwołań znakowych
Nazwane i numeryczne odwołania znakowe są rozwiązywane za pomocą resolve_named_char_ref(), resolve_numeric_char_ref() i find_named_char_ref_match() — wspierane pełną tabelą odwołań nazwanych.
Typowe problemy i rozwiązania
Zawartość skryptu lub stylu tokenizuje się jako markup. Początkowy stan był nieprawidłowy dla kontekstu; ustaw go za pomocą set_state().
Encje wydają się nierozwiązane w wyjściu. Konsumenci surowego tekstu muszą uruchomić rozwiązywacze odwołań znakowych; rozwiązywanie jest jawne na tym poziomie.
Wyjście fragmentu różni się od pełnej analizy. Reguły tokenizacji fragmentu celowo różnią się — użyj tokenize() dla pełnych dokumentów.
Najczęściej zadawane pytania
Czy mogę konsumować tokeny bez budowania drzewa?
Tak — strumień tokenów jest publicznym wyjściem, niezależnym od konstrukcji drzewa.
Jakie typy tokenów istnieją?
StartTagToken, EndTagToken, CharacterToken, CommentToken, DoctypeToken i EofToken.
Czy stany tokenizera są standardowe?
Tak — TokenizerState modeluje maszynę stanów specyfikacji.