Hur man parsar HTML i Python

Hur man parsar HTML i Python

Aspose.HTML FOSS för Python parsar markup med standardens trädbyggnadsalgoritm: HTMLDocument.parse() för kompletta sidor, HTMLDocument.parse_fragment() för kodsnuttar, och typade elementklasser (HTMLElement och dess underklasser) i resultatet. Denna guide täcker parse-ingångspunkterna och verifierar utdata via DOM, med pip för installation.

Steg-för-steg-guide

Steg 1: Installera paketet

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

Steg 2: Importera nödvändiga klasser

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

Steg 3: Välj rätt parsningsingångspunkt

HTMLDocument.parse() kör fulldokumentsträdkonstruktion med standardfelåterhämtning; HTMLDocument.parse_fragment() tillämpar fragmentalgoritmen för partiell markup; HTMLDocument.load() läser från en källa. Parsade element anländer typade — en <a> är en HTMLAnchorElement, en <input> är en HTMLInputElement.


Steg 4: Verifiera utdata genom DOM

Det parsade resultatet är ett normalt DOM-träd — samma uppslags- och attribut-API:er gäller. Att bygga den motsvarande strukturen programatiskt visar den gemensamma ytan:

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())

Steg 5: Fortsätt med stilar eller struktur

Bifoga stilmallar och läs beräknade stilar, eller använd Element infogningshjälpmedel (insert_adjacent_html(), insert_adjacent_text()) för lokala redigeringar — parsade utdata matar in varje annat lager.

Vanliga problem och lösningar

Delvis markup får html- och body-omslag. parse() tillämpas full-dokumentregler; använd parse_fragment() för snippets.

Felaktig markup parsas utan fel. Det är standardbeteende — trädkonstruktion definierar återhämtning för varje felscenario snarare än att generera ett fel.

Tabellinnehåll visas utanför sin tabell. Foster-föräldraskap av felplacerat tabellinnehåll är en del av algoritmen; åtgärda källnestingen.

Vanliga frågor

Är parserade element typade?

Ja — parsning skapar HTMLElement-hierarkin: formulärkontroller (HTMLFormElement, HTMLInputElement), inbäddat innehåll (HTMLImageElement, HTMLCanvasElement), navigering (HTMLAnchorElement), och mer.

Kan jag styra parsningspipeline på en lägre nivå?

Ja — Tokenizer och TreeBuilder är publika, med parse_html() som enstaka-anrops-omslag.

Utför parsning skript?

Nej. Skriptutvärdering är explicit och separat via JSContext.

Se även

 Svenska