Основы XPath
/ | поиск в одном поколении вперед |
// | поиск во всех последующих поколениях |
[] | сузить круг конкретных элементов |
Пример 1:
xpath = ‘/html/body’
xpath = ‘/html[1]/body[1]’
Оба пути дадут один и тот же результат. Первый путь ищет первый body внутри html. Второй путь ищет внутри первого html первый body. Так как элемент html и body встречаются всего 1 раз в документе, то результат будет одинаковым.
Пример 2:
xpath = ‘/html/body/p’
Это означает p, который является прямым потомком тэга body.
Пример 3:
xpath = ‘/html/body/div/p’
p, который является прямым потомком тэга div, который является прямым потомком тэга body.
Пример 4:
xpath = ‘/html/body/div/p[2]’
Второго прямой потомок тэга div, который является прямым потомком тэга body.
Пример 5:
xpath = ‘//p’
Все тэги p в документе.
Пример 6:
xpath = ‘//p[1]’
Каждый p, являющийся первым потомком своего родителя.
Пример 6:
xpath = ‘/html/body/*’
Все прямые и непрямые потомки тэга body.
Атрибуты тэгов
Символ @ указывается на атрибут:
- @class
- @id
- @href
Пример 1:
xpath = ‘//p[@class= «class-1»]’
Все тэги p в документе с классом class-1.
Пример 2:
xpath = ‘//*[@id= «uid»]’
Тэг с id = uid и все его потомки.
Пример 3:
xpath = ‘//div[@id= «uid»]/p[2]’
Второй p, являющийся потомком тэга div с id = uid.
Атрибут включает в себя
Слово contains означает, что атрибут включает в себя определенное значение. Например, у элемента есть 2 значения атрибута class. Если вы укажете только один класс в xpath со знаком равно, то этот элемент не найдете. Если же вы воспользуетесь contains, то найдете.
Пример 1:
xpath = ‘//*[contains(@class, «class-1»)]’
Все элементы, у которых class включает в себя class-1.
Пример 2:
xpath = ‘/html/body/div/p[2]/@class’
Получить значение атрибута class для p, который является вторым потомком div, который является прямым потомком body.