Cum să lucrați cu DOM în Python
Aspose.HTML FOSS pentru modele Python HTML ca un DOM bazat pe standarde: Document creează noduri, Element gestionează atributele și Node furnizează operații de arbore. Acest ghid construiește un arbore mic și citește structura acestuia înapoi, utilizând pip pentru instalare.
Ghid pas cu pas
Pasul 1: Instalează pachetul
Instalează pachetul:
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Apoi confirmă metadatele pachetului:
pip show aspose-html-fossPasul 2: Importă clasele necesare
from aspose_html.dom import DocumentPasul 3: Creează un document și un element
Document este fabrica de noduri; create_element() returnează un element nou pe care îl atașezi cu append_child():
doc = Document()
el = doc.create_element("div")
doc.append_child(el)Pasul 4: Setează atributele
set_attribute() scrie atributele de markup; clasele și id-urile determină potrivirea ulterioară a CSS:
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")Pasul 5: Citește structura înapoi
get_element_by_id() recuperează elementul, get_attribute() returnează atributele sale și has_child_nodes() confirmă structura:
found = doc.get_element_by_id("bar")
print(found.get_attribute("class"))
print(doc.has_child_nodes())Probleme comune și remedii
Căutarea după id nu returnează nimic. Elementului id atributul trebuie să fie setat înainte de get_element_by_id() este apelat, iar elementul trebuie să fie atașat la arborele documentului.
Citirile atributului returnează valori neașteptate. get_attribute() returnează ce a fost setat ultima dată cu set_attribute(); verificați greșelile de tipar în numele atributelor — acestea sunt șiruri simple.
Nodurile create dintr-un alt document se comportă incorect. Nodurile sunt limitate la document. Creați-le prin același Document, sau transferaţi-le cu import_node()/adopt_node().
Întrebări frecvente
Ce tipuri de noduri poate crea Documentul?
Elemente, noduri de text, comentarii și fragmente de document — prin create_element(), create_text_node(), create_comment() și create_document_fragment().
Cum pot muta sau elimina nodurile existente?
Utilizați operațiile Node: insert_before(), remove_child(), replace_child() și clone_node().
Pot să analizez marcajul existent în loc să construiesc arbori manual?
Da — HTMLDocument.parse() pentru pagini și HTMLDocument.parse_fragment() pentru fragmente produc același tip de arbore.