Як використовувати токенізатор 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 моделює машину станів специфікації.