我知道如何获取同一CSS类别的DIV列表,例如:
<div class="class1">1</div>
<div class="class1">2</div>
使用xpath //div[@class='class1']
但如果一个div有多个类,怎么办,例如
<div class="class1 class2">1</div>
那么xpath会是什么样子?
我知道如何获取同一CSS类别的DIV列表,例如:
<div class="class1">1</div>
<div class="class1">2</div>
使用xpath //div[@class='class1']
但如果一个div有多个类,怎么办,例如
<div class="class1 class2">1</div>
那么xpath会是什么样子?
您要查找的表达式是:
//div[contains(@class, 'class1') and contains(@class, 'class2')]
我强烈推荐使用XPath可视化工具,它可以帮助您轻松地调试XPath表达式。您可以在此处找到它:
根据这个回答,它解释了为什么重要的是要确保所寻找的类名子字符串未包含在内,正确答案应该是:
//div[contains(concat(' ', normalize-space(@class), ' '), ' class1 ')
and contains(concat(' ', normalize-space(@class), ' '), ' class2 ')]
有一个有用的Python包叫做cssselect。
从cssselect导入CSSSelector CSSSelector('div.gallery').path
生成可用的XPath:
descendant-or-self::div[@class and contains(concat(' ', normalize-space(@class), ' '), ' gallery ')]
这与Flynn1179的回答非常相似。
我认为你要找的表达式是:
//div[starts-with(@class, "class1")]/text()
你也可以这样做:
//div[contains-token(@class, 'class_one') and contains-token(@class, 'class_two')]