Come analizzare HTML in Python
Aspose.HTML FOSS per Python analizza il markup con l’algoritmo standard di costruzione dell’albero: HTMLDocument.parse() per pagine complete, HTMLDocument.parse_fragment() per frammenti, e classi di elementi tipizzati (HTMLElement e le sue sottoclassi) nel risultato. Questa guida copre i punti di ingresso del parsing e verifica l’output tramite il DOM, 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 classi richieste
from aspose_html.html_document import HTMLDocument
from aspose_html.dom import DocumentPasso 3: Scegli il punto di ingresso di parsing corretto
HTMLDocument.parse() esegue la costruzione dell’albero dell’intero documento con il recupero degli errori secondo gli standard; HTMLDocument.parse_fragment() applica l’algoritmo dei frammenti per markup parziali; HTMLDocument.load() legge da una sorgente. Gli elementi analizzati arrivano tipizzati — un <a> è un HTMLAnchorElement, un <input> è un HTMLInputElement.
Passaggio 4: Verifica l’output tramite il DOM
Il risultato analizzato è un normale albero DOM — le stesse API di ricerca e attributo si applicano. Costruire programmaticamente la struttura equivalente mostra la superficie condivisa:
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())Passaggio 5: Continua con Stili o Struttura
Allega i fogli di stile e leggi gli stili calcolati, oppure usa gli helper di inserimento Element (insert_adjacent_html(), insert_adjacent_text()) per modifiche localizzate — l’output del parsing alimenta tutti gli altri livelli.
Problemi comuni e soluzioni
Il markup parziale ottiene i wrapper html e body. parse() applica le regole dell’intero documento; usa parse_fragment() per frammenti.
Il markup malformato viene analizzato senza errori. Questo è il comportamento previsto dagli standard — tree construction definisce il recupero per ogni caso di errore anziché sollevare.
Il contenuto della tabella appare al di fuori della sua tabella. Foster parenting del contenuto della tabella fuori posto è parte dell’algoritmo; correggi l’annidamento di origine.
Domande Frequenti
Gli elementi analizzati sono tipizzati?
Sì — l’analisi produce la gerarchia HTMLElement: controlli dei moduli (HTMLFormElement, HTMLInputElement), contenuto incorporato (HTMLImageElement, HTMLCanvasElement), navigazione (HTMLAnchorElement), e altro.
Posso controllare la pipeline di analisi a un livello più basso?
Sì — i Tokenizer e TreeBuilder sono pubblici, con parse_html() come wrapper a chiamata singola.
L’analisi esegue script?
No. La valutazione dello script è esplicita e separata tramite JSContext.