Навигация по 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-документу следующим образом:

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

Проверка HTML

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

 1# Navigate and inspect HTML document using Python
 2
 3import os
 4import aspose.html as ah
 5
 6# Load a document from a file
 7data_dir = "data"  # Change this to your actual data directory
 8document_path = os.path.join(data_dir, "html_file.html")
 9with ah.HTMLDocument(document_path) as document:
10    # Get the html element of the document
11    element = document.document_element
12    print(element.tag_name)  # HTML
13
14    # Get the last element of the html element
15    element = element.last_element_child
16    print(element.tag_name)  # BODY
17
18    # Get the first element of the body element
19    element = element.first_element_child
20    print(element.tag_name)  # H1
21    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:

 1# How to use XPath to select nodes using Python
 2
 3import aspose.html as ah
 4import aspose.html.dom.xpath as hxpath
 5
 6# Prepare HTML code
 7code = """
 8    <div class='happy'>
 9        <div>
10            <span>Hello,</span>
11        </div>
12    </div>
13    <p class='happy'>
14        <span>World!</span>
15    </p>
16"""
17
18# Initialize a document based on the prepared code
19with ah.HTMLDocument(code, ".") as document:
20    # Here we evaluate the XPath expression where we select all child SPAN elements from elements whose 'class' attribute equals to 'happy'
21    result = document.evaluate("//*[@class='happy']//span",
22                               document,
23                               None,
24                               hxpath.XPathResultType.ANY,
25                               None)
26
27    # Iterate over the resulted nodes
28    node = result.iterate_next()
29    while node is not None:
30        print(node.text_content)
31        node = result.iterate_next()
32        # output: Hello,
33        # 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, вы можете эффективно находить элементы и управлять ими на основе их атрибутов, классов, идентификаторов и других критериев, что делает его универсальным инструментом как для простых, так и для сложных задач анализа документов.

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