1. Продукты
  2.   Aspose.HTML
  3.   Aspose.HTML FOSS for Python

Aspose.HTML FOSS для Python

Разберите HTML в DOM, соответствующий стандартам, примените CSS и вычислите стили из Python — бесплатный, с открытым исходным кодом и чистый Python.

Open-Source Python библиотека для HTML обработки

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.

HTML Разбор и манипулирование DOM

  • Разбирайте полные страницы с помощью HTMLDocument.parse() или фрагменты с HTMLDocument.parse_fragment()
  • Создавайте документы программно с помощью Document.create_element() и append_child()
  • Ищите узлы с помощью Document.get_element_by_id() и читайте атрибуты разметки через Element.get_attribute()
  • Устанавливайте атрибуты с помощью Element.set_attribute() и задавайте текст через Node.text_content
  • Сериализуйте любую подсубдерево обратно в разметку с помощью функции serialise()

Кто использует обработку DOM

  • Сервисные бэкенды, которые очищают или переписывают пользовательские HTML перед хранением
  • Конвейеры контента, которые извлекают или перестраивают фрагменты страниц в масштабе
  • Наборы тестов, которые проверяют структуру сгенерированной разметки в CI

CSS таблицы стилей и вычисленные стили

  • Разберите текст таблицы стилей с помощью CSSStyleSheet.replace_sync() и прикрепите его через Document.attach_style_sheet()
  • Установите встроенные декларации через свойство style элемента с помощью CSSStyleDeclaration.set_property()
  • Разрешите каскад — специфичность, правила inline-vs-author и наследование — с помощью Element.get_computed_style()
  • Прочитайте разрешённые значения обратно с помощью CSSStyleDeclaration.get_property_value()

Кто использует вычисление стилей

  • Инструменты для Email и рассылок, проверяющие эффективные стили перед отправкой
  • HTML санитайзеры, которым необходимо знать стиль, с которым элемент фактически отображается
  • Разработчики, отлаживающие поведение каскада и специфичности вне браузера

Токенизатор и построение дерева

  • Управляйте токенизатором HTML напрямую с помощью Tokenizer.tokenize() или Tokenizer.tokenize_fragment()
  • Выполняйте построение дерева на основе стандартов с помощью TreeBuilder.run()
  • Разбирайте разметку напрямую в дерево с помощью функции parse_html()

Кто использует низкоуровневый парсинг

  • Линтеры и анализаторы, которые исследуют потоки токенов, а не готовые деревья
  • Инструменты, которым требуется пользовательская обработка ошибок во время восстановления из некорректной разметки
  • Образовательные проекты, изучающие, как работает парсинг HTML на основе стандартов

URL-адреса и кодировки символов

  • Разбирать и проверять URL-адреса с помощью URL.parse() и URL.can_parse()
  • Читать и изменять строку запроса с помощью URLSearchParams — append(), get(), has(), delete()
  • Определять кодировки байтового потока (BOM и определение по содержимому) с помощью detect_encoding()
  • Нормализовать метки кодировок до канонических названий с помощью get_canonical_name()

Кто использует URL и инструменты кодирования

  • Сканеры и загрузчики, которым необходимо надёжно разрешать и удалять дублирующие URL
  • Конвейеры загрузки, обрабатывающие устаревшие документы с разными кодировками
  • Сервисы, которые разбирают или переписывают параметры запроса на стороне сервера

Создайте DOM и разрешите каскад CSS

Создайте документ, прикрепите таблицу стилей и прочитайте вычисленный стиль — селектор 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)

Часто задаваемые вопросы

Какую лицензию использует Aspose.HTML FOSS for Python?

MIT License — коммерческое использование, модификация и распространение разрешены; единственное требование — сохранять уведомление об авторском праве при существенных копиях.

Какие версии Python поддерживаются, и как их установить?

Python 3.10 или новее. Установите с помощью git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git — реализация полностью на Python без нативных зависимостей.

Как мне распарсить HTML в документ?

Используйте HTMLDocument.parse() для полных страниц или HTMLDocument.parse_fragment() для частичной разметки; Document — это фабрика для программного построения деревьев.

Корректно ли каскад CSS обрабатывает специфичность и !important?

Да — вычисленные значения следуют специфичности селектора, встроенные объявления превалируют над правилами автора, правила автора !important превалируют над не-важными встроенными объявлениями, и наследование проходит от родителя к потомку.

Библиотека отображает страницы или конвертирует их в другие форматы?

Нет. Текущий релиз сосредоточен на разборе, манипуляции DOM, вычислении стилей CSS, структурах макета, URL и кодировках — без конвертации форматов или рендеринга изображений/PDF.

Выполняется ли JavaScript автоматически во время парсинга?

Нет. Разбор никогда не запускает скрипты; оценка является явной и opt-in через JSContext с загрузкой модулей, контролируемой ModuleRegistry и ModuleLoadPolicy.

  

Ресурсы поддержки и обучения

 Русский