Come lavorare con il DOM in Python
Aspose.HTML FOSS per i modelli Python HTML come un DOM basato su standard: Document crea nodi, Element gestisce gli attributi e Node fornisce operazioni sugli alberi. Questa guida costruisce un piccolo albero e ne legge la struttura, usando pip per l’installazione.
Guida passo-passo
Passo 1: Installa il pacchetto
Installa il pacchetto:
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Quindi conferma i metadati del pacchetto:
pip show aspose-html-fossPasso 2: Importa le classi richieste
from aspose_html.dom import DocumentPasso 3: Crea un documento e un elemento
Document è la fabbrica di nodi; create_element() restituisce un nuovo elemento che si collega con append_child():
doc = Document()
el = doc.create_element("div")
doc.append_child(el)Passo 4: Imposta gli attributi
set_attribute() scrive gli attributi del markup; classi e id guidano il successivo abbinamento CSS:
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")Passo 5: Leggi nuovamente la struttura
get_element_by_id() recupera l’elemento, get_attribute() restituisce i suoi attributi e has_child_nodes() conferma la struttura:
found = doc.get_element_by_id("bar")
print(found.get_attribute("class"))
print(doc.has_child_nodes())Problemi comuni e soluzioni
La ricerca per ID non restituisce nulla. L’elemento id l’attributo deve essere impostato prima di get_element_by_id() viene chiamato, e l’elemento deve essere collegato all’albero del documento.
Le letture degli attributi restituiscono valori inaspettati. get_attribute() restituisce ciò che è stato impostato per ultimo con set_attribute(); verifica eventuali errori di battitura nei nomi degli attributi — sono semplici stringhe.
I nodi creati da un altro documento si comportano in modo anomalo. I nodi hanno ambito a livello di documento. Creali tramite lo stesso Document, o trasferiscili con import_node()/adopt_node().
Domande frequenti
Quali tipi di nodo può creare Document?
Elementi, nodi di testo, commenti e frammenti di documento — tramite create_element(), create_text_node(), create_comment() e create_document_fragment().
Come spostare o rimuovere i nodi esistenti?
Utilizza le operazioni Node: insert_before(), remove_child(), replace_child() e clone_node().
Posso analizzare il markup esistente invece di costruire gli alberi manualmente?
Sì — HTMLDocument.parse() per le pagine e HTMLDocument.parse_fragment() per gli snippet producono lo stesso tipo di albero.