Как использовать токенизатор 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 моделирует конечный автомат спецификации.