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

时间:2010-10-07 11:11:42

标签: html-agility-pack

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

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

使用xpath //div[@class='class1']

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

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

xpath会是什么样的呢?

5 个答案:

答案 0 :(得分:75)

您正在寻找的表达方式是:

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

我强烈建议使用XPath可视化工具,它可以帮助您轻松调试xpath表达式。它可以在这里找到:

http://xpathvisualizer.codeplex.com/

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

i think this the expression you're looking for is

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

答案 3 :(得分:0)

您也可以这样做:

//div[contains-token(@class, 'class_one') and contains-token(@class, 'class_two')]

答案 4 :(得分:-1)

有一个名为cssselect的有用的python包。

来自cssselect import CSSSelector CSSSelector(&#39; div.gallery&#39)。路径

生成可用的XPath:

descendant-or-self :: div [@class and contains(concat(&#39;&#39;,normalize-space(@class),&#39;&#39;),&#39;画廊&#39;)

它与Flynn1179的答案非常相似。