Поиск элементов по классу CSS с использованием XPath
При парсинге веб-страниц часто необходимо найти элементы HTML на основе их класса CSS. XPath, мощный инструмент для навигации по документам XML и HTML, предоставляет способ добиться этого.
Рассмотрим HTML-страницу с элементом div, имеющим класс с именем «Test». Для поиска этого элемента можно использовать следующий запрос XPath:
//*[contains(@class, 'Test')]
Этот запрос выбирает все элементы, содержащие класс «Test» , независимо от того, где они появляются в дереве документа.
Чтобы оптимизировать производительность, вы можете сузить поиск до определенных типов элементов, например элементов div. Например, следующий запрос ограничит поиск элементами div, содержащими класс «Test»:
//div[contains(@class, 'Test')]
Однако, если у вас есть элементы с такими классами, как «Testvalue» или «newTest», приведенный выше запрос также будет соответствовать им. Чтобы обеспечить более точное совпадение, вы можете использовать объединенную строку, содержащую пробел до и после класса «Test», как предложено @Tomalak:
//div[contains(concat(' ', @class, ' '), ' Test ')]
Этот запрос будет соответствовать только элементам div, в которых слово «Test» является отдельным значением класса.
Чтобы исключить любые проблемы с пробелами, вы также можете нормализовать пробелы с помощью функции нормализации-пространства, как предложено @Terry:
//div[contains(concat(' ', normalize-space(@class), ' '), ' Test ')]
Наконец, важно заменить звездочку (*) в этих запросах фактическим именем элемента, который вы хотите сопоставить, если только вы не хотите выполнять поиск по всем элементам в документе. Это повысит эффективность запроса.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3