Вступ

Aspose.HTML FOSS for Python — це нова бібліотека з відкритим вихідним кодом для роботи з HTML документами у Python. Вона парсить розмітку у стандартизовану модель об’єктів документа, дозволяє програмно будувати та змінювати дерева елементів, і розв’язує CSS — включаючи специфічність, вбудовані декларації та успадкування — у обчислені стилі, які можна отримати з будь-якого елемента.

Бібліотека орієнтована на бекенд та інструментальні сценарії, де браузер недоступний або небажаний: сервіси, які очищують збережені HTML, конвеєри, що перебудовують фрагменти сторінок, та набори тестів, які перевіряють згенеровану розмітку. Вона встановлюється з PyPI як aspose-html-foss, має ліцензію MIT і реалізована на чистому Python для Python 3.10 і новіших версій, тому поводиться однаково на машинах розробників, CI-ранерах та серверах.

Поза ядром DOM та CSS, пакет постачається з практичними будівельними блоками, які зазвичай потрібні при обробці HTML: токенізатор та будівник дерева HTML, якими можна користуватися безпосередньо, класи URL та URLSearchParams у стилі WHATWG, і детектор кодування байтового потоку.


Що включено

Створення та модифікація DOM

Шар DOM побудований навколо Document, Element та Node. Створюйте елементи за допомогою Document.create_element(), з’єднуйте їх за допомогою append_child(), встановлюйте атрибути розмітки за допомогою Element.set_attribute() і знову шукайте вузли за допомогою Document.get_element_by_id(). Повні сторінки та фрагменти парсяться через HTMLDocument.parse() та 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)

Застосувати таблиці стилів і прочитати обчислені стилі

CSSStyleSheet.replace_sync() аналізує текст таблиці стилів, Document.attach_style_sheet() активує її, а Element.get_computed_style() вирішує каскад. Результат дотримується специфічності селекторів — тут правило 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"))

Вбудовані декларації та каскад

Кожен елемент надає живий CSSStyleDeclaration через свою властивість style. Вбудовані декларації, встановлені за допомогою set_property(), мають вищу специфічність, ніж правила таблиці стилів автора, і get_computed_style() це відображає:

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"))

Токенізатор і будівник дерева

Коли вам потрібен більший контроль, ніж просто готове дерево, нижчі рівні є публічними API. Tokenizer.tokenize() і Tokenizer.tokenize_fragment() генерують потік токенів для фрагмента розмітки, TreeBuilder.run() виконує побудову дерева згідно зі стандартами, а функція parse_html() переходить від розмітки до дерева в одному виклику. Це ті ж компоненти, які використовує високорівневий шлях парсингу.

URL-адреси та кодування символів

URL.parse() і URL.can_parse() обробляють парсинг та валідацію URL у стилі WHATWG, з URLSearchParams (append(), get(), has(), delete()) для рядків запитів. Для необроблених байтів detect_encoding() визначає кодування — включно з позначками порядку байтів — і повертає декодований текст разом із рівнем довіри, тоді як get_canonical_name() нормалізує мітки кодувань:

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)

Швидкий старт

Встановити з PyPI:

asposefoss/html is not yet published — build from source until it ships. See the project README for build instructions.

Потім створіть документ, оформіть його та прочитайте обчислений результат:

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"))

Відкритий код та ліцензування

Aspose.HTML FOSS для Python випущено під ліцензією MIT, тому комерційне використання, модифікація та розповсюдження дозволені. Вихідний код доступний на GitHub, а пакет опубліковано на PyPI як aspose-html-foss.


Початок роботи

Пов’язані ресурси