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