Introduzione

Aspose.HTML FOSS per Python è una nuova libreria open-source per lavorare con documenti HTML in Python. Analizza il markup in un modello di oggetto documento basato su standard, consente di costruire e modificare gli alberi di elementi programmaticamente e risolve CSS — includendo specificità, dichiarazioni inline e ereditarietà — in stili calcolati che è possibile leggere da qualsiasi elemento.

La libreria è rivolta a scenari backend e di tooling in cui un browser non è disponibile o non è desiderato: servizi che puliscono i HTML archiviati, pipeline che ristrutturano frammenti di pagina e suite di test che verificano il markup generato. Si installa da PyPI come aspose-html-foss, è rilasciata sotto licenza MIT ed è implementata in puro Python per Python 3.10 e successive, così si comporta allo stesso modo su macchine degli sviluppatori, runner CI e server.

Oltre al core del DOM e di CSS, il pacchetto fornisce blocchi di costruzione pratici che l’elaborazione HTML solitamente richiede comunque: un tokenizzatore e un costruttore di alberi HTML che puoi controllare direttamente, classi URL e URLSearchParams in stile WHATWG, e un rilevatore di codifica a flusso di byte.


Cosa è incluso

Costruisci e modifica il DOM

Il livello DOM è costruito attorno a Document, Element e Node. Crea elementi con Document.create_element(), collegali tra loro con append_child(), imposta gli attributi del markup con Element.set_attribute() e ricerca nuovamente i nodi con Document.get_element_by_id(). Pagine complete e frammenti vengono analizzati tramite HTMLDocument.parse() e HTMLDocument.parse_fragment().

from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)

Applica i fogli di stile e leggi gli stili calcolati

CSSStyleSheet.replace_sync() analizza il testo del foglio di stile, Document.attach_style_sheet() lo mette in funzione e Element.get_computed_style() risolve la cascata. Il risultato rispetta la specificità dei selettori — qui la regola ID supera la regola di classe:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)
style = el.get_computed_style()
print(style.get_property_value("color"))

Dichiarazioni inline e la cascata

Ogni elemento espone un CSSStyleDeclaration live tramite la sua proprietà style. Le dichiarazioni inline impostate con set_property() hanno una specificità più alta rispetto alle regole del foglio di stile dell’autore, e get_computed_style() lo riflette:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)
inline = el.style
inline.set_property("color", "blue")
print(el.get_computed_style().get_property_value("color"))

Tokenizzatore e costruttore dell’albero

Quando hai bisogno di più controllo rispetto a un albero già completato, gli strati inferiori sono API pubblici. Tokenizer.tokenize() e Tokenizer.tokenize_fragment() emettono il flusso di token per un frammento di markup, TreeBuilder.run() esegue la costruzione dell’albero basata sugli standard, e la funzione parse_html() passa dal markup all’albero in una sola chiamata. Questi sono gli stessi componenti usati dal percorso di parsing di alto livello.

URL e codifiche dei caratteri

URL.parse() e URL.can_parse() gestiscono l’analisi e la validazione degli URL in stile WHATWG, con URLSearchParams (append(), get(), has(), delete()) per le stringhe di query. Per i byte grezzi, detect_encoding() rileva la codifica — inclusi i byte-order mark — e restituisce il testo decodificato insieme a un livello di confidenza, mentre get_canonical_name() normalizza le etichette di codifica:

from aspose_html.encoding.detection import detect_encoding
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)

Avvio rapido

Installa da PyPI:

asposefoss/html is not yet published — build from source until it ships. See the project README for build instructions.

Quindi crea un documento, formattalo e leggi il risultato calcolato:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet

doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "bar")
doc.append_child(el)

sheet = CSSStyleSheet()
sheet.replace_sync("#bar { color: blue }")
doc.attach_style_sheet(sheet)

style = el.get_computed_style()
print(style.get_property_value("color"))

Open Source & Licenze

Aspose.HTML FOSS per Python è rilasciato sotto licenza MIT, quindi l’uso commerciale, la modifica e la ridistribuzione sono tutti consentiti. Il codice sorgente è disponibile su GitHub e il pacchetto è pubblicato su PyPI come aspose-html-foss.


Iniziare

Risorse correlate