XPath — это технология, которая точно и эффективно задаёт и извлекает необходимую информацию из данных древесных структур, таких как HTML и XML.
Обзор XPath
XPath — это язык, используемый для указания и извлечения определённых элементов и атрибутов в XML- или HTML-дереве документов. Поскольку веб-страницы часто состоят из HTML, XPath широко используется в различных сценариях, таких как веб-скрейпинг, поиск данных и поиск данных в XML.
Типичное использование следующее:
- Извлечение данных в веб-краулерах: XPath используется для автоматического получения конкретных данных, таких как информация о продуктах на сайтах электронной коммерции или заголовки статей на новостных сайтах.
- Поиск и обработка данных в XML: в бизнес-системах и обработке связей данных данные часто обмениваются в формате XML. Используя XPath, вы можете эффективно извлекать необходимую информацию из больших объёмов XML-данных.
- Разбор ответов API (формат XML): при использовании API на базе XML, таких как SOAP, XPath применяется для разбора данных ответов. Это позволяет быстро получать конкретные коды статуса и данные результатов, повышая точность интеграции системы и автоматизированной обработки.
Рекомендации по инструментам
В процессе обучения и использования XPath распространённые инструменты включают:
Инструменты для разработчиков Chrome: мощный инструмент, который идёт в комплекте с браузером Chrome, его можно вызвать, нажав клавишу F12. В панели «Elements» вы можете быстро найти HTML-элементы на веб-странице, нажав курсор и кликнув, а правой кнопкой мыши по элементу можно напрямую скопировать выражение XPath для удобной проверки и тестирования. Например, при анализе страницы товара в электронной коммерции вы можете использовать инструменты для разработчиков Chrome, чтобы быстро получить XPath для названия товаров, цен и других элементов. Firefox Developer Tools: также поставляется в комплекте браузера, аналогично Chrome Developer Tools. Это также позволяет легко находить элементы на вашей странице, а также просматривать и тестировать выражения XPath. Это хороший вариант для разработчиков, привыкших к браузеру Firefox. Онлайн-инструменты тестирования XPath: Онлайн-инструменты, такие как «XPath Tester», могут использоваться без установки и открывать веб-страницу. Просто вставьте содержимое XML- или HTML-документа, введите выражение XPath и увидите результаты матча в реальном времени. Этот инструмент особенно подходит новичкам, чтобы быстро начать и выполнять простые упражнения XPath. Плагин XPath Helper: Возьмём браузер Chrome в качестве примера: после установки плагина XPath Helper он добавит плавающее окно в интерфейс браузера при просмотре веба, отображая путь XPath текущего элемента наведения мыши, а также вы сможете редактировать и тестировать выражения XPath прямо в окне, что значительно повышает эффективность разработки.
Абстрактный синтаксис XPath
Выберите узел
XPath использует выражения пути для выбора узлов в XML-документе. Узлы выбираются следуя пути или шагу. Наиболее полезные выражения путей приведены ниже:
выражение | описание | | Nodename | Выбирает все дочерние узлы этого узла. | | / | Выберите из корневого узла (возьмём дочерний узел). | | // | Выбирает узлы в документе из текущего узла соответствующего выбора, независимо от их расположения (возьмём потомочные узлы). | | . | Выберите текущий узел. | | .. | Выберите родительский узел текущего узла. | | @ | Выберите атрибут. |
В таблице ниже мы перечислили некоторые выражения путей вместе с результатами этих выражений:
Выражения пути | результат | | книжный магазин | Выберите все узлы с названиями bookstore. | | /bookstore | Выберите магазин «Корневой элемент». Примечание: если путь начинается с косой черты вперёд ( /), то этот путь всегда представляет собой абсолютный путь к элементу! | | Книжный магазин/книжный | Выбирает все книжные элементы, которые являются детскими элементами книжного магазина. | | //book | Выбирает все подэлементы книги, независимо от их положения в документе. | | Книжный магазин//книга | Выберите все элементы книги, которые являются потомками элемента книжного магазина, независимо от того, где они расположены в рамках магазина. | | @lang | Выберите все свойства с названием lang. |
Предикаты
Предикат используется для поиска конкретного узла или узла, содержащего заданное значение. Предикат встроен в квадратные скобки. В таблице ниже мы перечисляем некоторые выражения пути с предикатами и результаты этих выражений:
Выражения пути | результат | | /bookstore/book[1] | Выберите первый элемент книги, который входит в детский элемент книжного магазина. | | /bookstore/book[last()] | Выбирает последний элемент книги, который входит в подэлемент книжного магазина. | | /bookstore/book[last()-1] | Выбирает предпоследний элемент книги, который принадлежит детскому элементу книжного магазина. | | /bookstore/book[position()<3] | Выберите первые два элемента книги, которые являются дочерними элементами элемента книжного магазина. | | Заголовок[@lang] | Выбирает все элементы титула, имеющие свойство с названием lang. | | title[@lang='eng'] | Выбирает все элементы заголовка, которые имеют атрибут lang с значением eng. | | /bookstore/book[price>35.00] | Выбирает все элементы книги из элемента книжного магазина, и стоимость ценового элемента должна быть выше 35.00. | | /bookstore/book[price>35.00]//title | Выбирает все элементы названия книги в элементе книжного магазина, и стоимость ценового элемента должна превышать 35.00. |
Выберите неизвестный узел
XPath wildcards можно использовать для обнаружения неизвестных XML-элементов.
Подстановочный знак | описание | | * | Совпадает с любым элементным узлом. | | @* | Совпадает с любым узлом атрибута. | | node() | Совпадает с любым типом узла. |
В таблице ниже приведены некоторые выражения пути и результаты этих выражений:
Выражения пути | результат | | /bookstore/* | Выбирает все дочерние элементы элемента книжного магазина. | | //* | Выбирает все элементы документа. | | Заголовок[@*] | Выбирает все элементы титула с атрибутами. |
Выберите несколько путей
Используя «|» в выражении пути Операторы, вы можете выбрать несколько путей.
В таблице ниже приведены некоторые выражения пути и результаты этих выражений:
Выражения пути | результат | | //book/title | //book/price | Выбирает все элементы названия и цены в книге. | | Заголовок | цена | Выберите все элементы названия и цены в документе. | | /bookstore/book/title | //price | Выбирает все элементы названия книги, которые относятся к элементу книжного магазина, а также все ценовые элементы в документе. |
Функция XPath
Ниже приведён комментированный список специфических для XPath дополнений к XPath от основных XPath функций и XSLT, включая описания, синтаксис, списки параметров, типы результатов и источники в соответствующих рекомендациях W3C.
- Булев()
- потолок()
- choose()
- concat()
- содержат()
- count()
- current() специфичный для XSLT
- document() XSLT-специфичный
- element-available()
- false()
- Floor()
- format-number() специфичный для XSLT
- функция-доступна()
- generate-id() специфичный XSLT
- id()
- key() XSLT-специфичный
- lang()
- last()
- местное имя()
- name()
- Namespace-uri()
- нормализовать пространство()
- not()
- число()
- Позиция()
- round()
- начинает с()
- String()
- длина строки()
- substring()
- substring-after()
- substring-before()
- sum()
- system-property() специфичный для XSLT
- Перевод()
- true()
- unparsed-entity-url() специфичный для XSLT
Практические тесты
Откройте Chrome и получите текстовые содержимое всех ссылок на вкладку A с помощью следующей команды:
Как показано ниже:
Ссылка:Вход по гиперссылке виден. |