Поширені питання
Ліцензування та відкритий код
Яку ліцензію використовує Aspose.HTML FOSS для Python?
Бібліотека випущена під ліцензією MIT License. Повний текст постачається як LICENSE файл у репозиторій GitHub.
Чи можу я використовувати його у комерційних продуктах?
Так. Ліцензія MIT дозволяє комерційне використання, модифікацію, розповсюдження та субліцензування. Єдина вимога — зберігати повідомлення про авторські права та текст ліцензії у суттєвих копіях.
Встановлення та вимоги
Як встановити бібліотеку і які версії Python підтримуються?
Встановіть за допомогою git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git. Бібліотека вимагає Python 3.10 або новішу; поточний випуск — 0.1.0.
Чи є нативні залежності?
Ні. Реалізація — чистий Python — без браузерного рушія, без скомпільованих розширень — тому вона поводиться однаково на Windows, Linux та macOS, включно з CI-раннерами та контейнерами.
API Usage
Як розпарсити HTML у документ?
Використовуйте HTMLDocument.parse() для повних сторінок або HTMLDocument.parse_fragment() для часткової розмітки. Для програмної побудови Document — це фабрика вузлів:
from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "bar")
doc.append_child(el)Як застосувати CSS і прочитати отриманий стиль?
Розпарсити текст таблиці стилів за допомогою CSSStyleSheet.replace_sync(), приєднати його за допомогою Document.attach_style_sheet() і прочитати вирішений результат за допомогою 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"))Чи правильно каскад обробляє специфічність і !important?
Так. Обчислені значення слідують специфічності селекторів (ID переважає клас, який переважає тип), inline-оголошення переважають правила автора, і !important правила автора переважають inline-оголошення без !important. Наслідування відбувається від батька до дитини для успадковуваних властивостей.
Чи можу я використовувати токенізатор і будівник дерева безпосередньо?
Так — Tokenizer.tokenize() генерує стандартний потік токенів, TreeBuilder.run() виконує побудову дерева, а parse_html() обгортає весь конвеєр в один виклик.
Як працювати з URL-адресами та кодуваннями символів?
URL.parse() і URL.can_parse() забезпечують обробку URL у стилі WHATWG з URLSearchParams для рядків запитів. Для необроблених байтів detect_encoding() повертає кодування, рівень впевненості та декодований текст.
Відомі обмеження
Чи є які-небудь API, які присутні, але не реалізовані?
Декілька членів оголошені, але наразі не функціональні, включаючи CSSRule.type, CSSRule.css_text та HTMLImageElement.decode. Файл limitations.md у моделі знань відстежує їх; уникайте їх використання.
Чи бібліотека візуалізує сторінки або конвертує їх у інші формати?
Ні. Поточний випуск орієнтований на парсинг, маніпуляції DOM, обчислення стилів CSS, структури макету, URL-и та кодування. Він не включає конвертацію форматів або рендеринг зображень/PDF.
Чи JavaScript виконується автоматично під час парсингу?
Ні. Парсинг ніколи не виконує скрипти. Оцінка скриптів є явною та включається через JSContext, при цьому завантаження модулів контролюється ModuleRegistry та ModuleLoadPolicy.