Wie man den HTML Tokenizer in Python verwendet

Wie man den HTML Tokenizer in Python verwendet

Der Tokenizer in Aspose.HTML FOSS für Python wandelt Markup in einen Strom von standarddefinierten Tokens um — nützlich für Linter, Sanitizer-Vorläufe und jedes Werkzeug, das Markup unterhalb der Baumebene untersucht. Dieser Leitfaden behandelt die Tokenisierungs-Einstiegspunkte, das Token-Vokabular und die Zustände und verwendet pip für die Installation.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

Schritt 2: Erforderliche Klassen importieren

from aspose_html.tokenizer import Tokenizer, TokenizerState

Schritt 3: Markup tokenisieren

Tokenizer.tokenize() verarbeitet die gesamte Eingabe; Tokenizer.tokenize_fragment() wendet Fragmentregeln an. Der Stream enthält typisierte Token: StartTagToken und EndTagToken (mit Attributen), CharacterToken für Text, CommentToken, DoctypeToken und ein abschließendes EofToken.


Schritt 4: Steuere den Anfangszustand

TokenizerState spiegelt die Zustandsmaschine der Spezifikation. Für kontextabhängige Eingaben – Inhalte, die innerhalb von <script> oder <style> erscheinen würden – setze den passenden Anfangszustand mit Tokenizer.set_state() vor dem Tokenisieren.


Schritt 5: Auflösen von Zeichenreferenzen

Benannte und numerische Zeichenreferenzen werden über resolve_named_char_ref(), resolve_numeric_char_ref() und find_named_char_ref_match() aufgelöst – unterstützt durch die vollständige benannte Referenztabelle.

Häufige Probleme und Lösungen

Script- oder Style-Inhalt wird als Markup tokenisiert. Der Anfangszustand war für den Kontext falsch; setze ihn mit set_state().

Entitäten erscheinen in der Ausgabe ungelöst. Verbraucher von Rohtext müssen die Zeichenreferenz-Auflöser ausführen; die Auflösung ist auf dieser Ebene explizit.

Fragmentausgabe unterscheidet sich von einer vollständigen Analyse. Fragment-Tokenisierungsregeln unterscheiden sich bewusst — verwende tokenize() für vollständige Dokumente.

Häufig gestellte Fragen

Kann ich Tokens konsumieren, ohne einen Baum zu erstellen?

Ja — der Token-Strom ist ein öffentliches Ergebnis, unabhängig von der Baumkonstruktion.

Welche Token-Typen existieren?

StartTagToken, EndTagToken, CharacterToken, CommentToken, DoctypeToken und EofToken.

Sind die Tokenizer-Zustände die Standard-Zustände?

Ja — TokenizerState modelliert den Zustandsautomaten der Spezifikation.

Siehe auch

 Deutsch