Perguntas Frequentes
Licenciamento & Código Aberto
Qual licença o Aspose.HTML FOSS para Python usa?
A biblioteca é lançada sob a Licença MIT. O texto completo é fornecido como o LICENSE arquivo em repositório GitHub.
Posso usá-la em produtos comerciais?
Sim. A Licença MIT permite uso comercial, modificação, redistribuição e sublicenciamento. O único requisito é manter o aviso de direitos autorais e o texto da licença nas cópias substanciais.
Instalação & Requisitos
Como instalo a biblioteca e quais versões do Python são suportadas?
Instale com git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git. A biblioteca requer Python 3.10 ou posterior; a versão atual é 0.1.0.
Existem dependências nativas?
Não. A implementação é pura Python — sem motor de navegador, sem extensões compiladas — portanto comporta-se de forma idêntica no Windows, Linux e macOS, inclusive em runners de CI e contêineres.
API Usage
Como faço para analisar HTML em um documento?
Use HTMLDocument.parse() para páginas completas ou HTMLDocument.parse_fragment() para marcação parcial. Para construção programática, Document é a fábrica de nós:
from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "bar")
doc.append_child(el)Como aplico CSS e leio o estilo resultante?
Analise o texto da folha de estilo com CSSStyleSheet.replace_sync(), anexe-o com Document.attach_style_sheet() e leia o resultado resolvido com 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"))A cascata lida com especificidade e !important corretamente?
Sim. Valores computados seguem a especificidade dos seletores (ID supera classe, que supera tipo), declarações inline têm precedência sobre regras de autor, e !important regras de autor têm precedência sobre declarações inline não importantes. A herança flui do pai para o filho para propriedades herdáveis.
Posso usar o tokenizador e o construtor de árvore diretamente?
Sim — Tokenizer.tokenize() emite o fluxo de tokens padrão, TreeBuilder.run() realiza a construção da árvore e parse_html() encapsula todo o pipeline em uma única chamada.
Como trabalho com URLs e codificações de caracteres?
URL.parse() e URL.can_parse() fornecem manipulação de URLs no estilo WHATWG com URLSearchParams para strings de consulta. Para bytes brutos, detect_encoding() devolve a codificação, um nível de confiança e o texto decodificado.
Limitações conhecidas
Existem APIs presentes, mas não implementadas?
Um pequeno número de membros está declarado, mas não está funcional atualmente, incluindo CSSRule.type, CSSRule.css_text e HTMLImageElement.decode. O arquivo limitations.md no modelo de conhecimento rastreia esses; evite depender deles.
A biblioteca renderiza páginas ou converte para outros formatos?
Não. A versão atual foca em análise, manipulação de DOM, cálculo de estilo CSS, estruturas de layout, URLs e codificações. Não inclui conversão de formatos nem renderização de imagem/PDF.
O JavaScript é executado automaticamente durante a análise?
Não. A análise nunca executa scripts. A avaliação de scripts é explícita e opcional através de JSContext, com o carregamento de módulos controlado por ModuleRegistry e ModuleLoadPolicy.