Hur man arbetar med DOM i Python

Hur man arbetar med DOM i Python

Aspose.HTML FOSS för Python-modeller HTML som en standardbaserad DOM: Document skapar noder, Element hanterar attribut och Node tillhandahåller trädoperationer. Denna guide bygger ett litet träd och läser tillbaka dess struktur, med pip för installation.

Steg-för-steg-guide

Steg 1: Installera paketet

Installera paketet:

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

Bekräfta sedan paketmetadata:

pip show aspose-html-foss

Steg 2: Importera nödvändiga klasser

from aspose_html.dom import Document

Steg 3: Skapa ett dokument och ett element

Document är nodfabriken; create_element() returnerar ett nytt element som du fäster med append_child():

doc = Document()
el = doc.create_element("div")
doc.append_child(el)

Steg 4: Sätt attribut

set_attribute() skriver markup-attribut; klasser och id:n styr senare CSS-matchning:

el.set_attribute("class", "foo")
el.set_attribute("id", "bar")

Steg 5: Läs tillbaka strukturen

get_element_by_id() hämtar elementet, get_attribute() returnerar dess attribut, och has_child_nodes() bekräftar strukturen:

found = doc.get_element_by_id("bar")
print(found.get_attribute("class"))
print(doc.has_child_nodes())

Vanliga problem och lösningar

Uppslagning med id returnerar inget. Elementets id attributet måste sättas innan get_element_by_id() kallas, och elementet måste vara bifogat i dokumentträdet.

Attributläsningar returnerar oväntade värden. get_attribute() returnerar vad som senast satts med set_attribute(); kontrollera stavfel i attributnamn — de är enkla strängar.

Noder skapade från ett annat dokument beter sig felaktigt. Noder är dokumentomfattande. Skapa dem genom samma Document, eller överför dem med import_node()/adopt_node().

Vanliga frågor

Vilka nodtyper kan Document skapa?

Element, textnoder, kommentarer och dokumentfragment — via create_element(), create_text_node(), create_comment() och create_document_fragment().

Hur flyttar eller tar jag bort befintliga noder?

Använd Node-operationerna: insert_before(), remove_child(), replace_child() och clone_node().

Kan jag tolka befintlig markup istället för att bygga träd manuellt?

Ja — HTMLDocument.parse() för sidor och HTMLDocument.parse_fragment() för snippets producerar samma typ av träd.

Se även

 Svenska