Обучение XPath с Примерами
XPath — это мощный язык для поиска и обработки элементов в HTML и XML документах. Он позволяет выбирать элементы на основе атрибутов, классов и других характеристик. В этом руководстве мы рассмотрим основные конструкции XPath, а также несколько практических примеров для лучшего понимания.
Основные конструкции XPath
Выбор элементов по атрибуту class
Пример:
Предположим, у нас есть следующий HTML:
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_disable"></div>
<div class="style_taskCard style_box"></div>
<div class="style_disable"></div>
XPath-запрос:
- Запрос: //div[contains(@class, "style_taskCard")]
- Результат: Выбирает все div, у которых в атрибуте class содержится style_taskCard.
Результат:
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_disable"></div>
<div class="style_taskCard style_box"></div>
Исключение элементов с определённым классом
Пример:
Теперь, если мы хотим исключить элементы с классом style_disable:
XPath-запрос:
- Запрос: //div[contains(@class, "style_taskCard")][not(contains(@class, "style_disable"))]
- Результат: Выбирает все div, у которых в атрибуте class содержится style_taskCard, но не содержится style_disable.
Результат:
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_box"></div>
Расширенные возможности XPath
Поиск элементов с несколькими условиями
Пример: Рассмотрим следующий HTML:
<div attr-id="1" id="2" class="gena style_box"></div>
<div attr-id="1" id="3" class="gena style_box"></div>
<div attr-id="2" id="2" class="gena style_disable"></div>
<div attr-id="1" id="2" class="style_taskCard style_box"></div>
XPath-запрос:
Запрос: //div[contains(@attr-id, "1")][contains(@id, "2")] Результат: Выбирает все div, у которых attr-id содержит 1, а id содержит 2.
Результат:
<div attr-id="1" id="2" class="gena style_box"></div>
<div attr-id="1" id="2" class="style_taskCard style_box"></div>
Исключение элементов по дополнительному классу
Пример: Теперь мы хотим исключить элементы с классом style_disable, но при этом они должны иметь классы style_taskCard и style_box.
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_disable"></div>
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_active style_box"></div>
<div class="style_taskCard style_active style_disable"></div>
<div class="style_taskCard style_disable"></div>
XPath-запрос:
Запрос: //div[contains(@class, "style_taskCard")][contains(@class, "style_box")][not(contains(@class, "style_disable"))]
Результат: Этот запрос выберет только те элементы, которые содержат оба класса style_taskCard и style_box, но не содержат класс style_disable.
Результат:
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_active style_box"></div>
Уточнение по дополнительному классу для активного состояния
Пример:
Представим, что на странице есть элементы с классом style_taskCard, и нам нужно найти только те, которые одновременно имеют классы style_box и style_active.
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_disable"></div>
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_active style_box"></div>
<div class="style_taskCard style_active style_disable"></div>
<div class="style_taskCard style_disable"></div>
XPath-запрос:
Запрос:
//div[contains(@class, "style_taskCard")][contains(@class, "style_box")][contains(@class, "style_active")]
Результат: Этот запрос выберет только те элементы, у которых присутствуют все три класса: style_taskCard, style_box, и style_active.
Результат:
<div class="style_taskCard style_active style_box"></div>
Практические примеры
Работа с атрибутами
Пример:
Предположим, у нас есть следующий HTML:
<span class="FontBold">Text 1</span>
<span class="FontBold Highlight">Text 2</span>
<span class="FontItalic">Text 3</span>
XPath-запрос:
Запрос: //span[contains(@class, "FontBold")]
Результат: Выбирает все span, у которых в атрибуте class содержится FontBold.
Результат:
<span class="FontBold">Text 1</span>
<span class="FontBold Highlight">Text 2</span>
Выбор по специфическому значению атрибута
Пример:
Рассмотрим следующий HTML:
<div data-role="admin"></div>
<div data-role="user"></div>
<div data-role="guest"></div>
<div data-role="admin"></div>
XPath-запрос:
Запрос: //div[@data-role="admin"]
Результат: Выбирает все div, у которых атрибут data-role равен admin.
Результат:
<div data-role="admin"></div>
<div data-role="admin"></div>
В XPath можно работать с любыми атрибутами, не ограничиваясь только стандартными, такими как class или id. Атрибуты могут быть произвольными и содержать любые значения. Вот несколько примеров работы с такими атрибутами:
Пример: Рассмотрим следующий HTML:
<div attr-id="1" attr-name="item1" role="admin" code="123"></div>
<div attr-id="2" attr-name="item2" role="user" code="456"></div>
<div attr-id="3" attr-name="item3" role="guest" code="789"></div>
<div attr-id="4" attr-name="item4" role="admin" code="000"></div>
XPath-запросы:
Выбор по атрибуту attr-id:
//div[@attr-id="1"]
Результат:
<div attr-id="1" attr-name="item1" role="admin" code="123"></div>
Выбор по атрибуту role:
//div[@role="admin"]
Результат:
<div attr-id="1" attr-name="item1" role="admin" code="123"></div>
<div attr-id="4" attr-name="item4" role="admin" code="000"></div>
Выбор по нескольким атрибутам:
//div[@role="admin"][contains(@code, "123")]
Результат:
<div attr-id="1" attr-name="item1" role="admin" code="123"></div>Атрибуты могут быть произвольными и задаваться в любом формате, поэтому XPath позволяет гибко выбирать элементы на основе любых условий.
Заключение
Эти примеры показывают, как можно использовать XPath для поиска элементов в HTML-документах, включая выбор элементов по атрибутам, исключение элементов и комбинирование условий. Также рассмотрены ситуации, когда необходимо уточнить выбор по дополнительным классам, что делает XPath мощным инструментом для работы с веб-страницами.
Это учебное руководство поможет вам лучше понять и использовать XPath для решения различных задач. Если у вас возникнут дополнительные вопросы или нужно будет добавить что-то ещё, я всегда готов помочь!
Присоединяйтесь сейчас
Или свяжитесь со службой поддержки в чате с любыми вопросами в любое время.