Introducción
Aspose.HTML FOSS para Python es una nueva biblioteca de código abierto para trabajar con documentos HTML en Python. Analiza el marcado a un modelo de objetos de documento basado en estándares, le permite construir y modificar árboles de elementos programáticamente, y resuelve CSS — incluyendo especificidad, declaraciones en línea e herencia — en estilos calculados que puede leer de cualquier elemento.
La biblioteca está dirigida a escenarios de backend y herramientas donde un navegador no está disponible o no se desea: servicios que limpian HTML almacenado, canalizaciones que reestructuran fragmentos de página y suites de pruebas que verifican el marcado generado. Se instala desde PyPI como aspose-html-foss, tiene licencia MIT y está implementada en puro Python para Python 3.10 y posteriores, por lo que se comporta de la misma manera en máquinas de desarrollo, ejecutores CI y servidores.
Más allá del núcleo del DOM y CSS, el paquete incluye bloques de construcción prácticos que el procesamiento de HTML suele necesitar de todos modos: un tokenizador y generador de árboles HTML que puedes controlar directamente, clases al estilo WHATWG de URL y URLSearchParams, y un detector de codificación de flujo de bytes.
Qué incluye
Construir y modificar el DOM
La capa DOM se construye alrededor de Document, Element y Node. Crea elementos con Document.create_element(), conéctalos con append_child(), establece atributos de marcado con Element.set_attribute(), y busca nodos nuevamente con Document.get_element_by_id(). Las páginas completas y los fragmentos se analizan mediante HTMLDocument.parse() y 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 hojas de estilo y leer estilos computados
CSSStyleSheet.replace_sync() analiza el texto de la hoja de estilo, Document.attach_style_sheet() lo pone en marcha, y Element.get_computed_style() resuelve la cascada. El resultado respeta la especificidad de los selectores — aquí la regla ID supera a la regla de clase:
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"))
Declaraciones en línea y la cascada
Cada elemento expone un CSSStyleDeclaration en vivo a través de su propiedad style. Las declaraciones en línea establecidas con set_property() tienen mayor especificidad que las reglas de la hoja de estilo del autor, y get_computed_style() lo refleja:
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 y constructor de árbol
Cuando necesitas más control que un árbol ya construido, las capas inferiores son públicas API. Tokenizer.tokenize() y Tokenizer.tokenize_fragment() emiten el flujo de tokens para una porción de marcado, TreeBuilder.run() realiza la construcción del árbol basada en estándares, y la función parse_html() pasa de marcado a árbol en una sola llamada. Estos son los mismos componentes que utiliza la ruta de análisis de alto nivel.
URLs y codificaciones de caracteres
URL.parse() y URL.can_parse() manejan el análisis y la validación de URLs al estilo WHATWG, con URLSearchParams (append(), get(), has(), delete()) para cadenas de consulta. Para bytes crudos, detect_encoding() detecta la codificación — marcas de orden de bytes incluidas — y devuelve el texto decodificado junto con un nivel de confianza, mientras que get_canonical_name() normaliza las etiquetas de codificación:
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)
Inicio rápido
Instalar desde PyPI:
asposefoss/html is not yet published — build from source until it ships. See the project README for build instructions.Luego cree un documento, aplique estilo y lea el 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 abierto y licencias
Aspose.HTML FOSS para Python se publica bajo la licencia MIT, por lo que el uso comercial, la modificación y la redistribución están permitidos. El código fuente está disponible en GitHub y el paquete se publica en PyPI como aspose-html-foss.
Primeros pasos
- Primeros pasos
- Guía del desarrollador
- Artículos de la base de conocimientos
- Preguntas frecuentes
- API Reference
- Descripción del producto