Как разобрать HTML в Python

Как разобрать HTML в Python

Aspose.HTML FOSS для Python разбирает разметку с использованием стандартизированного алгоритма построения дерева: HTMLDocument.parse() для полных страниц, HTMLDocument.parse_fragment() для фрагментов и типизированные классы элементов (HTMLElement и его подклассы) в результате. Это руководство охватывает точки входа парсинга и проверяет вывод через DOM, используя pip для установки.

Пошаговое руководство

Шаг 1: Установите пакет

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

Шаг 2: Импортируйте необходимые классы

from aspose_html.html_document import HTMLDocument
from aspose_html.dom import Document

Шаг 3: Выберите правильную точку входа парсинга

HTMLDocument.parse() выполняет построение дерева полного документа с восстановлением ошибок согласно стандартам; HTMLDocument.parse_fragment() применяет алгоритм фрагмента для частичной разметки; HTMLDocument.load() читает из источника. Разобранные элементы приходят типизированными — <a> является HTMLAnchorElement, <input> — HTMLInputElement.


Шаг 4: Проверка вывода через DOM

Разобранный результат представляет собой обычное дерево DOM — применяются те же API поиска и атрибутов. Программное построение эквивалентной структуры демонстрирует общую поверхность:

doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "content")
doc.append_child(el)
print(doc.get_element_by_id("content").has_child_nodes())

Шаг 5: Продолжить со стилями или структурой

Подключите таблицы стилей и прочитайте вычисленные стили, либо используйте вспомогательные функции вставки Element (insert_adjacent_html(), insert_adjacent_text()) для локальных правок — вывод разбора питает каждый другой слой.

Распространённые проблемы и их решения

Частичная разметка получает обёртки html и body. parse() применяет правила полного документа; используйте parse_fragment() для фрагментов.

Некорректная разметка парсится без ошибок. Это поведение согласно стандартам — построение дерева определяет восстановление для каждого случая ошибки, а не генерирует исключение.

Содержимое таблицы появляется вне её таблицы. Foster parenting неверно размещённого содержимого таблицы — часть алгоритма; исправьте вложенность в исходном коде.

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

Типизированы ли разобранные элементы?

Да — парсинг создает иерархию HTMLElement: элементы управления формой (HTMLFormElement, HTMLInputElement), встроенный контент (HTMLImageElement, HTMLCanvasElement), навигацию (HTMLAnchorElement) и многое другое.

Могу ли я управлять конвейером парсинга на более низком уровне?

Да — Tokenizer и TreeBuilder публичны, а parse_html() служит одноразовой обёрткой.

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

Нет. Оценка скрипта является явной и отдельной через JSContext.

См. также:

 Русский