Как использовать токенизатор HTML в Python

Как использовать токенизатор HTML в Python

Токенизатор в Aspose.HTML FOSS для Python преобразует разметку в поток токенов, определённых стандартами, — полезно для линтеров, предварительных проходов санитайзера и любого инструмента, который анализирует разметку ниже уровня дерева. Это руководство охватывает точки входа токенизации, словарь токенов и состояния, используя 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.tokenizer import Tokenizer, TokenizerState

Шаг 3: Токенизировать разметку

Tokenizer.tokenize() обрабатывает полный ввод; Tokenizer.tokenize_fragment() применяет правила фрагментов. Поток содержит типизированные токены: StartTagToken и EndTagToken (с атрибутами), CharacterToken для текста, CommentToken, DoctypeToken и окончательный EofToken.


Шаг 4: Управление начальным состоянием

TokenizerState отражает конечный автомат спецификации. Для контекстно-зависимого ввода — содержимого, которое могло бы появиться внутри <script> или <style> — установите соответствующее начальное состояние с помощью Tokenizer.set_state() перед токенизацией.


Шаг 5: Разрешение символьных ссылок

Именованные и числовые символьные ссылки разрешаются через resolve_named_char_ref(), resolve_numeric_char_ref() и find_named_char_ref_match() — поддерживаемые полной таблицей именованных ссылок.

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

Скрипт или содержимое стиля токенизируется как разметка. Исходное состояние было неверным для контекста; установите его с помощью set_state().

Сущности отображаются как неразрешённые в выводе. Потребители необработанного текста должны запускать разрешатели символьных ссылок; разрешение явно на этом уровне.

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

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

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

Да — поток токенов является публичным выводом, независимым от построения дерева.

Какие типы токенов существуют?

StartTagToken, EndTagToken, CharacterToken, CommentToken, DoctypeToken и EofToken.

Являются ли состояния токенизатора стандартными?

Да — TokenizerState моделирует конечный автомат спецификации.

См. также:

 Русский