Навигация по HTML на Python

HTML-навигация

Пространство имен Aspose.Html.Dom предоставляет API, который представляет и взаимодействует с любыми документами HTML, XML или SVG и полностью основано на спецификации WHATWG DOM, поддерживаемой во многих современных браузерах.

В этой статье представлена ​​информация о том, как программно извлекать данные из HTML-документов с помощью Aspose.HTML for Python via .NET. Вы узнаете:

  • как перемещаться по HTML-документу и выполнять детальную проверку его элементов с помощью Python API;
  • как перемещаться по документу с помощью CSS Selector и XPath Query.

Навигация по HTML предполагает доступ к элементам и их взаимоотношениям внутри документа и манипулирование ими. Aspose.HTML for Python via .NET позволяет вам перемещаться и проверять HTML, что предполагает работу с объектной моделью документа (DOM), предоставляемой библиотекой. В следующем списке показан самый простой способ доступа ко всем элементам DOM:

  1. Объектная модель документа (DOM). Структура DOM представляет HTML-документ в виде дерева узлов. Каждый узел представляет часть документа, например элементы, текст или комментарии.
  1. Доступ к элементам
  1. Навигация по дереву DOM
  1. Управление элементами

Справочник API предоставляет полный список классов и методов в пространстве имен aspose.html.dom.

Навигация по дереву DOM

Мы рассмотрим, как DOM представляет HTML-документ в памяти и как использовать API для навигации по HTML-файлам. Четыре свойства класса Nodefirst_child, last_child, next_sibling и next_sibling, каждое из которых предоставляет живую ссылку на другой элемент с определенной связью с текущим элементом, если связанный элемент существует.

Используя упомянутые свойства, вы можете перемещаться по HTML-документу следующим образом:

 1from aspose.html import *
 2
 3# Prepare HTML code
 4html_code = "<span>Hello</span> <span>World!</span>"
 5
 6# Initialize a document from the prepared code
 7with HTMLDocument(html_code, ".") as document:
 8    # Get the reference to the first child (first SPAN) of the BODY
 9    element = document.body.first_child
10    print(element.text_content)  # output: Hello
11
12    # Get the reference to the whitespace between html elements
13    element = element.next_sibling
14    print(element.text_content)  # output: " "
15
16    # Get the reference to the second SPAN element
17    element = element.next_sibling
18    print(element.text_content)  # output: World!

Проверка HTML

Aspose.HTML содержит список методов, основанных на Спецификациях обхода элементов. Вы можете выполнить детальную проверку документа и его элементов с помощью API. Следующий код Python демонстрирует, как перемещаться и извлекать определенные элементы и их свойства из документа HTML с помощью Aspose.HTML for Python via .NET.

 1import os
 2from aspose.html import *
 3
 4# Load a document from a file
 5data_dir = "data"
 6document_path = os.path.join(data_dir, "html_file.html")
 7with HTMLDocument(document_path) as document:
 8    # Get the <html> element of the document
 9    element = document.document_element
10    print(element.tag_name)  # HTML
11
12    # Get the last element of the <html> element
13    element = element.last_element_child
14    print(element.tag_name)  # BODY
15
16    # Get the first element of the <body> element
17    element = element.first_element_child
18    print(element.tag_name)  # H1
19    print(element.text_content)  # Header 1

Предоставленный код Python начинается с определения пути к файлу HTML, расположенному в каталоге data.

XPath Query

Альтернативой HTML Navigation является XPath Query ( XML Path Language), который часто называют просто XPath. Это язык запросов, который можно использовать для запроса данных из документов HTML. Он основан на представлении HTML-документа в формате DOM и выбирает узлы по различным критериям. Синтаксис выражений XPath довольно прост и, что более важно, его легко читать и поддерживать.

В следующем примере показано, как использовать запросы XPath в Python API Aspose.HTML:

 1from aspose.html import *
 2from aspose.html.dom.xpath import *
 3
 4# Prepare HTML code
 5code = """
 6    <div class='happy'>
 7        <div>
 8            <span>Hello,</span>
 9        </div>
10    </div>
11    <p class='happy'>
12        <span>World!</span>
13    </p>
14"""
15
16# Initialize a document based on the prepared code
17with HTMLDocument(code, ".") as document:
18    # Here we evaluate the XPath expression where we select all child SPAN elements from elements whose 'class' attribute equals to 'happy'
19    result = document.evaluate("//*[@class='happy']//span",
20                               document,
21                               None,
22                               XPathResultType.ANY,
23                               None)
24
25    # Iterate over the resulted nodes
26    node = result.iterate_next()
27    while node is not None:
28        print(node.text_content)
29        node = result.iterate_next()
30        # output: Hello,
31        # output: World!

Метод evaluate() в Python библиотеке Aspose.HTML позволяет выполнять запросы XPath к документам HTML или XML, обеспечивая детальное извлечение данных и навигацию. Он принимает выражение XPath в качестве основного параметра, определяющего выполняемый запрос, и возвращает объект XPathResult на основе определенного типа результата.

CSS-селектор

В дополнение к HTML-навигации и XPath Aspose.HTML Python API поддерживает CSS Selector API. Этот API позволяет формулировать шаблоны поиска с использованием синтаксиса CSS Selectors для идентификации и выбора элементов в HTML-документе.

Например, метод query_selector_all(selector) можно использовать для обхода HTML-документа и извлечения элементов, соответствующих указанному селектору CSS. Этот метод принимает строку селектора CSS в качестве аргумента и возвращает NodeList, содержащий все элементы, соответствующие критериям селектора. Используя селекторы CSS, вы можете эффективно находить элементы и управлять ими на основе их атрибутов, классов, идентификаторов и других критериев, что делает его универсальным инструментом как для простых, так и для сложных задач анализа документов.

 1from aspose.html import *
 2
 3# Prepare HTML code
 4code = """
 5    <div class='happy'>
 6        <div>
 7            <span>Hello,</span>
 8        </div>
 9    </div>
10    <p class='happy'>
11        <span>World!</span>
12        <p>I use CSS Selector.</p>
13    </p>
14"""
15
16# Initialize a document based on the prepared code
17with HTMLDocument(code, ".") as document:
18    # Create a CSS Selector that extracts all elements whose "class" attribute equals "happy" and their child <span> elements
19    elements = document.query_selector_all(".happy span")
20
21# Iterate over the resulted list of elements
22    for element in elements:
23        print(element.text_content)
24        # output: Hello,
25        # output: World!

Заключение

Библиотека Aspose.HTML for Python via .NET предлагает надежный набор инструментов для работы с документами HTML, XML и SVG, соответствующий широко поддерживаемой спецификации WHATWG DOM современных браузеров. Используя класс HTMLDocument и его различные свойства и методы навигации, вы можете эффективно взаимодействовать с содержимым HTML и манипулировать им, избегая сложностей ручного извлечения данных и концентрируясь на более стратегических аспектах ваших проектов.

Aspose.HTML предлагает бесплатные онлайн- Веб-приложения HTML, которые представляют собой онлайн-коллекцию конвертеров, слияний, инструментов SEO, генераторов HTML-кода, инструментов URL, проверок доступности веб-страниц и многого другого. Приложения работают в любой операционной системе с веб-браузером и не требуют установки дополнительного программного обеспечения. Используйте нашу коллекцию веб-приложений HTML для решения повседневных задач и оптимизации рабочего процесса!

Текст “Веб-приложения HTML”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.