Как использовать HTML Tree Builder в Python
Построение дерева в Aspose.HTML FOSS для Python реализует стандартный алгоритм — режимы вставки, восстановление после ошибок, обнаружение quirks и внешнего контента — с parse_html() в качестве единой точки входа и TreeBuilder, раскрывающим механизм. Это руководство объясняет конвейер и его поведение, используя 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.tree import parse_htmlШаг 3: Разберите разметку в дерево
parse_html() запускает токенизатор и построитель дерева совместно, возвращая готовое дерево; parse_fragment() применяет алгоритм фрагмента к элементу контекста. Оба управляют TreeBuilder.run() внутренне.
Шаг 4: Понимание состояния построения
InsertionMode моделирует машину режимов алгоритма, при этом StackOfOpenElements и TemplateInsertionModeStack отслеживают открытые элементы и режимы шаблонов точно так, как описано в спецификации.
Шаг 5: Полагаться на восстановление после ошибок в стандартах
Неправильно вложенные элементы форматирования исправляются через run_adoption_agency_algorithm() с отслеживанием ActiveFormattingList; неверно размещённое содержимое таблицы получает «приемные» родители через get_foster_parent_location(); типы документов классифицируются через determine_quirks_mode(); атрибуты SVG/MathML корректируются функциями adjust_*_attributes().
Распространённые проблемы и решения
Плохая разметка приводит к построению дерева вместо ошибки. По задумке — алгоритм стандарта определяет восстановление для каждого случая ошибки.
Теги форматирования появляются дублированными. Алгоритм агентства по усыновлению восстанавливает контекст форматирования после неправильного вложения; результат соответствует поведению браузера.
Содержимое таблицы перемещено за пределы таблицы. Приёмные родители переместили неправильно расположенный контент; исправьте вложенность в исходной разметке.
Часто задаваемые вопросы
Когда следует использовать TreeBuilder напрямую вместо parse_html?
Только когда требуется интроспекция состояния конструирования; parse_html() покрывает обычный разбор.
Как определяется режим quirks mode?
determine_quirks_mode() классифицирует документ по его doctype.
Поддерживает ли сборщик SVG и MathML?
Да — внешний контент проходит через корректоры атрибутов с обнаружением точек интеграции стандартов.