Domande frequenti

Domande frequenti

Licenze & Open Source

Quale licenza utilizza Aspose.HTML FOSS per Python?

La libreria è rilasciata sotto la licenza MIT. Il testo completo è fornito come il LICENSE file nel repository GitHub.

Posso usarla in prodotti commerciali?

Sì. La MIT License consente l’uso commerciale, la modifica, la redistribuzione e la sublicenza. L’unico requisito è mantenere l’avviso di copyright e il testo della licenza nelle copie sostanziali.

Installazione & Requisiti

Come installo la libreria e quali versioni di Python sono supportate?

Installa con git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git. La libreria richiede Python 3.10 o versioni successive; la versione attuale è 0.1.0.

Ci sono dipendenze native?

No. L’implementazione è pura Python — nessun motore browser, nessuna estensione compilata — quindi si comporta in modo identico su Windows, Linux e macOS, inclusi i runner CI e i container.

API Usage

Come posso analizzare HTML in un documento?

Usa HTMLDocument.parse() per pagine complete o HTMLDocument.parse_fragment() per markup parziale. Per la costruzione programmatica, Document è la fabbrica di nodi:

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

Come si applica CSS e si legge lo stile risultante?

Analizza il testo del foglio di stile con CSSStyleSheet.replace_sync(), allegalo con Document.attach_style_sheet() e leggi il risultato risolto con Element.get_computed_style():

from aspose_html.cssom import CSSStyleSheet
sheet = CSSStyleSheet()
sheet.replace_sync("#bar { color: blue }")
doc.attach_style_sheet(sheet)
print(el.get_computed_style().get_property_value("color"))

La cascata gestisce correttamente la specificità e !important?

Sì. I valori calcolati seguono la specificità dei selettori (ID supera la classe, che supera il tipo), le dichiarazioni inline hanno precedenza sulle regole dell’autore, e !important le regole dell’autore hanno precedenza sulle dichiarazioni inline non importanti. L’ereditarietà scorre dal genitore al figlio per le proprietà ereditabili.

Posso usare direttamente il tokenizer e il tree builder?

Sì — Tokenizer.tokenize() emette lo stream di token standard, TreeBuilder.run() esegue la costruzione dell’albero, e parse_html() avvolge l’intera pipeline in una sola chiamata.

Come posso gestire URL e codifiche dei caratteri?

URL.parse() e URL.can_parse() forniscono la gestione degli URL in stile WHATWG con URLSearchParams per le stringhe di query. Per byte grezzi, detect_encoding() restituisce la codifica, un livello di confidenza e il testo decodificato.

Limitazioni note

Ci sono API presenti ma non implementate?

Un piccolo numero di membri è dichiarato ma non è attualmente funzionante, includendo CSSRule.type, CSSRule.css_text e HTMLImageElement.decode. Il file limitations.md nel modello di conoscenza tiene traccia di questi; evita di fare affidamento su di essi.

La libreria rende le pagine o le converte in altri formati?

No. L’attuale versione si concentra su parsing, manipolazione del DOM, calcolo degli stili CSS, strutture di layout, URL e codifiche. Non include la conversione di formati né il rendering di immagini/PDF.

Il JavaScript viene eseguito automaticamente durante il parsing?

No. Il parsing non esegue mai script. La valutazione degli script è esplicita e opzionale tramite JSContext, con il caricamento dei moduli controllato da ModuleRegistry e ModuleLoadPolicy.

Vedi anche

 Italiano