Навигация по 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:
- Объектная модель документа (DOM). Структура DOM представляет HTML-документ в виде дерева узлов. Каждый узел представляет часть документа, например элементы, текст или комментарии.
- Класс Document представляет весь документ HTML, XML или SVG и служит корнем дерева документов.
- Класс Element представляет элемент в документе HTML или XML.
- Класс Node представляет один узел в дереве документа.
- Доступ к элементам
- Используйте такие методы, как
get_elements_by_tag_name(
tagname), чтобы получать элементы по их имени тега. - Используйте метод get_element_by_id() для доступа к определенному элементу с уникальным идентификатором.
- Используйте
get_elements_by_class_name(
class_names) для получения элементов по именам их классов. – Используйте метод query_selector(selector) для одного элемента или query_selector_all(selector) для списка элементов, соответствующих селектору CSS.
- Навигация по дереву DOM
- Доступ к дочерним элементам элемента с помощью свойств child_nodes или children.
- Используйте свойство first_child или last_child, чтобы вернуть первый или последний дочерний узел текущего узла, который может быть узлом любого типа, например элементом, текстом или комментарием.
- Используйте свойство parent_node для доступа к родительскому элементу данного элемента.
- Получите доступ к братьям и сестрам, используя такие свойства, как next_sibling или next_sibling.
- Управление элементами
- Используйте свойства класса Element, такие как inner_html и text_content, для изменения содержимого элемента.
- Получите или установите атрибуты, используя такие методы, как
get_attribute(
qualified_name) и set_attribute(qualified_name, value).
Справочник API предоставляет полный список классов и методов в пространстве имен aspose.html.dom.
Навигация по дереву DOM
Мы рассмотрим, как DOM представляет HTML-документ в памяти и как использовать API для навигации по HTML-файлам. Четыре свойства класса
Node – first_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.
- Используйте HTMLDocument для загрузки документа и свойство document.document_element для доступа к корневому элементу HTML. Выведите имя тега этого элемента (HTML).
- Затем извлеките последний дочерний элемент HTML-элемента, используя last_element_child, который является элементом BODY, и напечатайте его имя тега.
- Впоследствии используйте свойство first_element_child для доступа к первому дочернему элементу элемента BODY, который является элементом H1, печатая как имя его тега, так и его текстовое содержимое, то есть Header 1.
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 для решения повседневных задач и оптимизации рабочего процесса!
