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.