Wie man mit dem DOM in Python arbeitet
Aspose.HTML FOSS für Python-Modelle HTML als standardbasiertes DOM: Document erstellt Knoten, Element verwaltet Attribute und Node liefert Baumoperationen. Dieser Leitfaden erstellt einen kleinen Baum und liest seine Struktur wieder aus, wobei pip zur Installation verwendet wird.
Schritt-für-Schritt-Anleitung
Schritt 1: Paket installieren
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 .Dann bestätigen Sie die Paketmetadaten:
pip show aspose-html-fossSchritt 2: Erforderliche Klassen importieren
from aspose_html.dom import DocumentSchritt 3: Ein Dokument und ein Element erstellen
Document ist die Node-Factory; create_element() liefert ein neues Element, das Sie mit append_child() anhängen:
doc = Document()
el = doc.create_element("div")
doc.append_child(el)Schritt 4: Attribute setzen
set_attribute() schreibt Markup-Attribute; Klassen und IDs steuern das spätere CSS-Matching:
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")Schritt 5: Struktur zurücklesen
get_element_by_id() ruft das Element ab, get_attribute() gibt dessen Attribute zurück und has_child_nodes() bestätigt die Struktur:
found = doc.get_element_by_id("bar")
print(found.get_attribute("class"))
print(doc.has_child_nodes())Häufige Probleme und Lösungen
Die Suche nach id liefert nichts. Des Elements id Attribut muss gesetzt werden, bevor get_element_by_id() aufgerufen wird, und das Element an den Dokumentbaum angehängt sein muss.
Attributauslesungen geben unerwartete Werte zurück. get_attribute() gibt zurück, was zuletzt gesetzt wurde mit set_attribute(); prüfen Sie auf Tippfehler in Attributnamen — sie sind einfache Zeichenketten.
Knoten, die aus einem anderen Dokument erstellt wurden, verhalten sich fehlerhaft. Knoten sind dokumentbezogen. Erstellen Sie sie über dieselbe Document, oder übertragen Sie sie mit import_node()/adopt_node().
Häufig gestellte Fragen
Welche Knotentypen kann Document erstellen?
Elemente, Textknoten, Kommentare und Dokumentfragmente — über create_element(), create_text_node(), create_comment() und create_document_fragment().
Wie kann ich vorhandene Knoten verschieben oder entfernen?
Verwenden Sie die Node-Operationen: insert_before(), remove_child(), replace_child() und clone_node().
Kann ich vorhandenes Markup parsen, anstatt Bäume manuell zu erstellen?
Ja — HTMLDocument.parse() für Seiten und HTMLDocument.parse_fragment() für Snippets erzeugen dieselbe Art von Baum.