Навигация по 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”

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.