Jak pracować z DOM w Python

Jak pracować z DOM w Python

Aspose.HTML FOSS dla modeli Python HTML jako standardowy DOM: Document tworzy węzły, Element zarządza atrybutami, a Node dostarcza operacje na drzewie. Ten przewodnik buduje małe drzewo i odczytuje jego strukturę, używając pip do instalacji.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

Zainstaluj pakiet:

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

Następnie potwierdź metadane pakietu:

pip show aspose-html-foss

Krok 2: Importuj wymagane klasy

from aspose_html.dom import Document

Krok 3: Utwórz dokument i element

Document jest fabryką węzłów; create_element() zwraca nowy element, który dołączasz za pomocą append_child():

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

Krok 4: Ustaw atrybuty

set_attribute() zapisuje atrybuty znaczników; klasy i identyfikatory sterują późniejszym dopasowywaniem CSS:

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

Krok 5: Odczytaj strukturę z powrotem

get_element_by_id() pobiera element, get_attribute() zwraca jego atrybuty, a has_child_nodes() potwierdza strukturę:

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

Typowe problemy i rozwiązania

Wyszukiwanie po identyfikatorze nie zwraca nic. Elementu id atrybut musi być ustawiony przed get_element_by_id() jest wywoływany, a element musi być podłączony do drzewa dokumentu.

Odczyty atrybutów zwracają nieoczekiwane wartości. get_attribute() zwraca to, co ostatnio ustawiono przy użyciu set_attribute(); sprawdź literówki w nazwach atrybutów — są to zwykłe ciągi znaków.

Węzły utworzone z innego dokumentu zachowują się nieprawidłowo. Węzły są ograniczone do dokumentu. Utwórz je poprzez te same Document, lub przenieś je za pomocą import_node()/adopt_node().

Najczęściej zadawane pytania

Jakie typy węzłów może tworzyć Document?

Elementy, węzły tekstowe, komentarze i fragmenty dokumentu — za pomocą create_element(), create_text_node(), create_comment() i create_document_fragment().

Jak przenieść lub usunąć istniejące węzły?

Użyj operacji Node: insert_before(), remove_child(), replace_child() i clone_node().

Czy mogę analizować istniejący markup zamiast budować drzewa ręcznie?

Tak — HTMLDocument.parse() dla stron i HTMLDocument.parse_fragment() dla fragmentów produkują ten sam rodzaj drzewa.

Zobacz także

 Polski