我知道如何获取同一个css类的DIV列表,例如
<div class="class1">1</div>
<div class="class1">2</div>
使用xpath //div[@class='class1']
但是如果一个div有多个类,例如
<div class="class1 class2">1</div>
xpath会是什么样的呢?
答案 0 :(得分:75)
您正在寻找的表达方式是:
//div[contains(@class, 'class1') and contains(@class, 'class2')]
我强烈建议使用XPath可视化工具,它可以帮助您轻松调试xpath表达式。它可以在这里找到:
答案 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的答案非常相似。