Навчання 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">Текст 1</span>
<span class="FontBold Highlight">Текст 2</span>
<span class="FontItalic">Текст 3</span>

XPath Запит:

Запит: //span[contains(@class, "FontBold")]

Результат: Вибирає всі елементи span, що мають FontBold у атрибуті класу.

Результат:

<span class="FontBold">Текст 1</span>
<span class="FontBold Highlight">Текст 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 для вирішення різних завдань. Якщо у вас виникнуть додаткові питання або потрібно буде щось додати, я завжди готовий допомогти!

Приєднуйся зараз

Або зверніться до служби підтримки в чаті з будь-якими питаннями в будь-який час.