Як парсити 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.