Jak parsować HTML w Python

Jak parsować HTML w Python

Aspose.HTML FOSS dla Python parsuje markup przy użyciu standardowego algorytmu konstrukcji drzewa: HTMLDocument.parse() dla pełnych stron, HTMLDocument.parse_fragment() dla fragmentów oraz typowanych klas elementów (HTMLElement i jego podklas) w wyniku. Ten przewodnik opisuje punkty wejścia parsowania i weryfikuje wynik poprzez DOM, używając pip do instalacji.

Przewodnik krok po kroku

Krok 1: 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 .

Krok 2: Zaimportuj wymagane klasy

from aspose_html.html_document import HTMLDocument
from aspose_html.dom import Document

Krok 3: Wybierz właściwy punkt wejścia parsowania

HTMLDocument.parse() wykonuje konstrukcję drzewa pełnego dokumentu z odzyskiwaniem błędów zgodnie ze standardami; HTMLDocument.parse_fragment() stosuje algorytm fragmentu dla częściowego znacznika; HTMLDocument.load() odczytuje z źródła. Przetworzone elementy przychodzą typowane — <a> jest HTMLAnchorElement, <input> jest HTMLInputElement.


Krok 4: Zweryfikuj wyjście za pomocą DOM

Wynik parsowania jest normalnym drzewem DOM — obowiązują te same API wyszukiwania i atrybutów. Programowe zbudowanie równoważnej struktury pokazuje wspólną powierzchnię:

doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "content")
doc.append_child(el)
print(doc.get_element_by_id("content").has_child_nodes())

Krok 5: Kontynuuj ze stylami lub strukturą

Dołącz arkusze stylów i odczytaj obliczone style, lub użyj pomocników wstawiania Element (insert_adjacent_html(), insert_adjacent_text()) do lokalnych edycji — wynik parsowania zasila każdą inną warstwę.

Typowe problemy i rozwiązania

Częściowy markup otrzymuje otoczenia html i body. parse() stosuje zasady pełnego dokumentu; użyj parse_fragment() dla fragmentów.

Niepoprawny markup jest parsowany bez błędów. To jest zachowanie zgodne ze standardem — konstrukcja drzewa definiuje odzyskiwanie dla każdego przypadku błędu zamiast zgłaszania.

Zawartość tabeli pojawia się poza jej tabelą. Foster parenting nieprawidłowo umieszczonej zawartości tabeli jest częścią algorytmu; napraw zagnieżdżenie źródła.

Najczęściej zadawane pytania

Czy parsowane elementy są typowane?

Tak — parsowanie tworzy hierarchię HTMLElement: kontrolki formularzy (HTMLFormElement, HTMLInputElement), osadzona treść (HTMLImageElement, HTMLCanvasElement), nawigacja (HTMLAnchorElement) i inne.

Czy mogę sterować potokiem parsowania na niższym poziomie?

Tak — Tokenizer i TreeBuilder są publiczne, a parse_html() pełni rolę jednorazowego opakowania.

Czy parsowanie wykonuje skrypty?

Nie. Ocena skryptu jest jawna i oddzielna poprzez JSContext.

Zobacz także

 Polski