Preguntas Frecuentes

Preguntas Frecuentes

Licencias y Código Abierto

¿Qué licencia usa Aspose.HTML FOSS para Python?

La biblioteca se publica bajo la MIT License. El texto completo se entrega como el LICENSE archivo en el repositorio de GitHub.

¿Puedo usarlo en productos comerciales?

Sí. La Licencia MIT permite el uso comercial, la modificación, la redistribución y la sublicencia. El único requisito es mantener el aviso de derechos de autor y el texto de la licencia en copias sustanciales.

Instalación y Requisitos

¿Cómo instalo la biblioteca y qué versiones de Python son compatibles?

Instale con git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git. La biblioteca requiere Python 3.10 o posterior; la versión actual es 0.1.0.

¿Hay dependencias nativas?

No. La implementación es puro Python — sin motor de navegador, sin extensiones compiladas — por lo que se comporta idénticamente en Windows, Linux y macOS, incluidos los ejecutores de CI y los contenedores.

API Usage

¿Cómo analizo HTML en un documento?

Utilice HTMLDocument.parse() para páginas completas o HTMLDocument.parse_fragment() para marcado parcial. Para construcción programática, Document es la fábrica de nodos:

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

¿Cómo aplico CSS y leo el estilo resultante?

Analice el texto de la hoja de estilos con CSSStyleSheet.replace_sync(), adjúntelo con Document.attach_style_sheet() y lea el resultado resuelto 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"))

¿Maneja la cascada la especificidad y !important correctamente?

Sí. Los valores calculados siguen la especificidad de los selectores (ID supera a la clase, que supera al tipo), las declaraciones en línea tienen prioridad sobre las reglas del autor, y !important las reglas del autor superan a las declaraciones en línea no importantes. La herencia fluye del padre al hijo para las propiedades heredables.

¿Puedo usar el tokenizador y el constructor de árbol directamente?

Sí — Tokenizer.tokenize() emite el flujo de tokens estándar, TreeBuilder.run() realiza la construcción del árbol y parse_html() envuelve todo el pipeline en una sola llamada.

¿Cómo trabajo con URLs y codificaciones de caracteres?

URL.parse() y URL.can_parse() proporcionan manejo de URLs al estilo WHATWG con URLSearchParams para cadenas de consulta. Para bytes sin procesar, detect_encoding() devuelve la codificación, un nivel de confianza y el texto decodificado.

Limitaciones conocidas

¿Hay alguna API presente pero no implementada?

Se declara un pequeño número de miembros pero no están actualmente funcionales, incluyendo CSSRule.type, CSSRule.css_text y HTMLImageElement.decode. El archivo limitations.md en el modelo de conocimiento rastrea estos; evita depender de ellos.

¿La biblioteca renderiza páginas o convierte a otros formatos?

No. La versión actual se centra en el análisis, la manipulación del DOM, el cálculo de estilos CSS, las estructuras de diseño, las URL y las codificaciones. No incluye conversión de formatos ni renderizado de imágenes/PDF.

¿Se ejecuta JavaScript automáticamente durante el análisis?

No. El análisis nunca ejecuta scripts. La evaluación de scripts es explícita y opcional a través de JSContext, con la carga de módulos controlada por ModuleRegistry y ModuleLoadPolicy.

Ver también

 Español