Як парсити HTML у Python

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

Дивіться також

 Українська