Aspose.HTML FOSS for Python — это бесплатная, открытая библиотека для работы с документами HTML в приложениях Python. Установите её одной командой git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git и начните разбирать разметку в объектную модель документа, строить и изменять деревья элементов, подключать таблицы стилей CSS, вычислять вычисленные стили и работать с URL и кодировками символов — всё в чистом Python без зависимости от браузера.
Библиотека предоставляет ориентированный на стандарты API, построенный вокруг HTMLDocument, Document, Element и CSSStyleSheet. Разбирайте разметку с помощью HTMLDocument.parse(), создавайте и соединяйте узлы с помощью Document.create_element() и append_child(), находите элементы через get_element_by_id(), стилизуйте их через CSSStyleSheet.replace_sync() и объявление style на уровне элемента, а результат считывайте с помощью Element.get_computed_style(). Низкоуровневые строительные блоки — HTML Tokenizer, TreeBuilder, стилизованные под WHATWG URL и URLSearchParams, а также детектор байтового потока detect_encoding() — доступны, когда вам нужен прямой контроль.
Aspose.HTML FOSS лицензирована по MIT и реализована в чистом Python, требует Python 3.10 или новее. Она работает одинаково на Windows, Linux и macOS — включая CI-раннеры, Docker-контейнеры и безсерверные среды. Для семейства корпоративных продуктов см. Aspose.HTML — Enterprise Product Family.
HTMLDocument.parse() или фрагменты с HTMLDocument.parse_fragment()Document.create_element() и append_child()Document.get_element_by_id() и читайте атрибуты разметки через Element.get_attribute()Element.set_attribute() и задавайте текст через Node.text_contentserialise()CSSStyleSheet.replace_sync() и прикрепите его через Document.attach_style_sheet()style элемента с помощью CSSStyleDeclaration.set_property()Element.get_computed_style()CSSStyleDeclaration.get_property_value()Tokenizer.tokenize() или Tokenizer.tokenize_fragment()TreeBuilder.run()parse_html()URL.parse() и URL.can_parse()URLSearchParams — append(), get(), has(), delete()detect_encoding()get_canonical_name()Создайте документ, прикрепите таблицу стилей и прочитайте вычисленный стиль — селектор ID выигрывает у правила класса:
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"))
Встроенные объявления имеют более высокий уровень специфичности, чем правила стилей автора:
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"))
Определите кодировку необработанного байтового потока, включая BOM, и получите обратно декодированный текст:
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)
MIT License — коммерческое использование, модификация и распространение разрешены; единственное требование — сохранять уведомление об авторском праве при существенных копиях.
Python 3.10 или новее. Установите с помощью git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git — реализация полностью на Python без нативных зависимостей.
Используйте HTMLDocument.parse() для полных страниц или HTMLDocument.parse_fragment() для частичной разметки; Document — это фабрика для программного построения деревьев.
Да — вычисленные значения следуют специфичности селектора, встроенные объявления превалируют над правилами автора, правила автора !important превалируют над не-важными встроенными объявлениями, и наследование проходит от родителя к потомку.
Нет. Текущий релиз сосредоточен на разборе, манипуляции DOM, вычислении стилей CSS, структурах макета, URL и кодировках — без конвертации форматов или рендеринга изображений/PDF.
Нет. Разбор никогда не запускает скрипты; оценка является явной и opt-in через JSContext с загрузкой модулей, контролируемой ModuleRegistry и ModuleLoadPolicy.