Introdução

Aspose.HTML FOSS para Python é uma nova biblioteca de código aberto para trabalhar com documentos HTML em Python. Ela analisa a marcação em um modelo de objeto de documento baseado em padrões, permite que você construa e modifique árvores de elementos programaticamente e resolve CSS — incluindo especificidade, declarações inline e herança — em estilos computados que podem ser lidos de qualquer elemento.

A biblioteca tem como alvo cenários de backend e ferramentas onde um navegador não está disponível ou não é desejado: serviços que limpam HTML armazenados, pipelines que reestruturam fragmentos de página e suítes de teste que verificam a marcação gerada. Ela é instalada a partir de PyPI como aspose-html-foss, possui licença MIT e é implementada em puro Python para Python 3.10 ou posterior, de modo que se comporta da mesma forma em máquinas de desenvolvedor, runners de CI e servidores.

Além do núcleo do DOM e CSS, o pacote inclui blocos de construção práticos que o processamento de HTML normalmente acaba precisando de qualquer forma: um tokenizador e construtor de árvore HTML que você pode acionar diretamente, classes URL e URLSearchParams no estilo WHATWG, e um detector de codificação de fluxo de bytes.


O que está incluído

Construir e Modificar o DOM

A camada DOM é construída em torno de Document, Element e Node. Crie elementos com Document.create_element(), conecte-os com append_child(), defina atributos de marcação com Element.set_attribute() e procure nós novamente com Document.get_element_by_id(). Páginas completas e fragmentos são analisados por meio de 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)

Aplicar Folhas de Estilo e Ler Estilos Computados

CSSStyleSheet.replace_sync() analisa o texto da folha de estilo, Document.attach_style_sheet() coloca-a em ação, e Element.get_computed_style() resolve a cascata. O resultado respeita a especificidade dos seletores — aqui a regra de ID supera a regra de 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"))

Declarações Inline e a Cascata

Cada elemento expõe um CSSStyleDeclaration ao vivo através de sua propriedade style. Declarações inline definidas com set_property() possuem maior especificidade que as regras da folha de estilo do autor, e get_computed_style() reflete isso:

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"))

Tokenizador e Construtor de Árvore

Quando você precisa de mais controle do que uma árvore finalizada, as camadas inferiores são API públicas. Tokenizer.tokenize() e Tokenizer.tokenize_fragment() emitem o fluxo de tokens para um trecho de marcação, TreeBuilder.run() realiza a construção de árvore baseada em padrões, e a função parse_html() vai da marcação à árvore em uma única chamada. Esses são os mesmos componentes que o caminho de análise de alto nível utiliza.

URLs e Codificações de Caracteres

URL.parse() e URL.can_parse() lidam com o parsing e validação de URLs no estilo WHATWG, com URLSearchParams (append(), get(), has(), delete()) para strings de consulta. Para bytes brutos, detect_encoding() detecta a codificação — incluindo marcas de ordem de byte — e retorna o texto decodificado juntamente com um nível de confiança, enquanto get_canonical_name() normaliza rótulos de codificação:

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)

Início Rápido

Instale a partir de PyPI:

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

Em seguida, crie um documento, estilize-o e leia o resultado calculado:

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"))

Código Aberto & Licenciamento

Aspose.HTML FOSS para Python é lançado sob a licença MIT, portanto o uso comercial, a modificação e a redistribuição são permitidos. O código-fonte está disponível em GitHub e o pacote é publicado em PyPI como aspose-html-foss.


Começando

Recursos Relacionados