Come usare il HTML Tree Builder in Python
La costruzione dell’albero in Aspose.HTML FOSS per Python implementa l’algoritmo standard — modalità di inserimento, recupero degli errori, rilevamento delle stranezze e contenuti esterni — con parse_html() come punto di ingresso a chiamata unica e TreeBuilder che espone la meccanica. Questa guida spiega il flusso di lavoro e i suoi comportamenti, usando pip per l’installazione.
Guida passo-passo
Passo 1: Installa il pacchetto
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Passo 2: Importa le funzioni richieste
from aspose_html.tree import parse_htmlPasso 3: Analizza il markup in un albero
parse_html() esegue il tokenizer e il costruttore di alberi insieme, restituendo un albero completato; parse_fragment() applica l’algoritmo del frammento rispetto a un elemento di contesto. Entrambi guidano TreeBuilder.run() internamente.
Passo 4: Comprendere lo stato di costruzione
InsertionMode modella la macchina di stato dell’algoritmo, con StackOfOpenElements e TemplateInsertionModeStack che tracciano gli elementi aperti e le modalità dei template esattamente come descrive la specifica.
Passo 5: Affidarsi al recupero dagli errori degli standard
La riparazione degli elementi di formattazione mal annidati avviene tramite run_adoption_agency_algorithm() con tracciamento ActiveFormattingList; i contenuti di tabella fuori posto hanno genitori di riferimento via get_foster_parent_location(); i doctype si classificano tramite determine_quirks_mode(); gli attributi SVG/MathML si aggiustano tramite le funzioni adjust_*_attributes().
Problemi comuni e soluzioni
Il markup errato produce un albero invece di un errore. Per progettazione — l’algoritmo standard definisce il recupero per ogni caso di errore.
I tag di formattazione appaiono duplicati. L’algoritmo dell’agenzia di adozione ricostruisce il contesto di formattazione dopo una nidificazione errata; l’output corrisponde al comportamento del browser.
Il contenuto della tabella è stato spostato fuori dalla sua tabella. Foster parenting ha rilocalizzato il contenuto fuori posto; correggi la nidificazione nel markup di origine.
Domande frequenti
Quando dovrei usare TreeBuilder direttamente invece di parse_html?
Solo quando è necessaria l’introspezione dello stato di costruzione; parse_html() copre l’analisi normale.
Come viene determinata la modalità quirks?
determine_quirks_mode() classifica il documento dal suo doctype.
Il builder gestisce SVG e MathML?
Sì — i contenuti esteri passano attraverso gli aggiustatori di attributi con rilevamento del punto di integrazione degli standard.