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-fossSteg 2: Importera nödvändiga klasser
from aspose_html.dom import DocumentSteg 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.