如何获取具有多个css类的html元素

问题描述 投票:0回答:5

我知道如何获取相同 css 类的 DIV 列表,例如

<div class="class1">1</div>
<div class="class1">2</div>

使用xpath

//div[@class='class1']

但是如果一个 div 有多个类怎么办,例如

<div class="class1 class2">1</div>

那么 xpath 会是什么样子?

html-agility-pack
5个回答
145
投票

您要寻找的表达方式是:

//div[contains(@class, 'class1') and contains(@class, 'class2')]

在线有多种 XPath 可视化工具,可以极大地帮助测试任何表达式。


7
投票

根据这个答案,它解释了为什么确保不包含正在查找的类名的子字符串很重要,正确的答案应该是:

//div[contains(concat(' ', normalize-space(@class), ' '), ' class1 ')
    and contains(concat(' ', normalize-space(@class), ' '), ' class2 ')]

2
投票

有一个有用的 python 包,称为 cssselect。

从 cssselect 导入 CSSSelector CSSSelector('div.gallery').path

生成可用的 XPath:

descendant-or-self::div[@class and contains(concat(' ', normalize-space(@class), ' '), ' gallery ')]

与Flynn1179的答案非常相似。


0
投票

我想这就是你要找的表达方式

//div[starts-with(@class, "class1")]/text()


0
投票

你也可以这样做:

//div[contains-token(@class, 'class_one') and contains-token(@class, 'class_two')]
© www.soinside.com 2019 - 2024. All rights reserved.