Como trabalhar com o DOM em Python
Aspose.HTML FOSS para modelos Python HTML como um DOM baseado em padrões: Document cria nós, Element gerencia atributos e Node fornece operações de árvore. Este guia constrói uma pequena árvore e lê sua estrutura de volta, usando pip para instalação.
Guia passo a passo
Etapa 1: Instalar o pacote
Instale o pacote:
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Em seguida, confirme os metadados do pacote:
pip show aspose-html-fossEtapa 2: Importar classes necessárias
from aspose_html.dom import DocumentEtapa 3: Criar um Documento e um Elemento
Document é a fábrica de nós; create_element() retorna um novo elemento que você anexa com append_child():
doc = Document()
el = doc.create_element("div")
doc.append_child(el)Etapa 4: Definir atributos
set_attribute() escreve atributos de marcação; classes e ids conduzem o emparelhamento posterior de CSS:
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")Etapa 5: Ler a estrutura de volta
get_element_by_id() recupera o elemento, get_attribute() retorna seus atributos, e has_child_nodes() confirma a estrutura:
found = doc.get_element_by_id("bar")
print(found.get_attribute("class"))
print(doc.has_child_nodes())Problemas Comuns e Soluções
A busca por id não retorna nada. Do elemento id atributo deve ser definido antes de get_element_by_id() é chamado, e o elemento deve estar anexado à árvore do documento.
Leituras de atributo retornam valores inesperados. get_attribute() retorna o que foi definido pela última vez com set_attribute(); verifique erros de digitação nos nomes dos atributos — eles são strings simples.
Nós criados a partir de outro documento se comportam incorretamente. Os nós são limitados ao documento. Crie-os através do mesmo Document, ou transfira-os com import_node()/adopt_node().
Perguntas Frequentes
Quais tipos de nós o Document pode criar?
Elementos, nós de texto, comentários e fragmentos de documento — via create_element(), create_text_node(), create_comment() e create_document_fragment().
Como mover ou remover nós existentes?
Use as operações Node: insert_before(), remove_child(), replace_child() e clone_node().
Posso analisar a marcação existente em vez de construir árvores manualmente?
Sim — HTMLDocument.parse() para páginas e HTMLDocument.parse_fragment() para fragmentos produzem o mesmo tipo de árvore.