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 DocumentKrok 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.