Jak używać tokenizera HTML w Python

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

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

Zobacz także

 Polski