我正在使用一个带有XPath表达式的库进行一些屏幕抓取,并注意到几个页面相似,但不同。
有没有办法可以松散地说“让我得到div ='mytarget'的div,但作为div的孩子存在,使用class ='nav'而且nav和mytarget之间的确切路径是未知的。”
<div class="nav">
<div>
??????
<div class="mytarget"></div>
??????
</div>
</div>
答案 0 :(得分:3)
是的,使用descendant-or-self
轴(//
):
//div[@class='nav']//div[@class='mytarget']
或者,如果这些元素上可以有多个类名,那么这就更好了:
//div[contains(concat(' ', @class, ' '), ' nav ')]//
div[contains(concat(' ', @class, ' '), ' mytarget ')]
警告:这对大型文档来说效率非常低。在结构已知的任何地方都应使用绝对路径。当结构未知时,只能求助于//
。
答案 1 :(得分:0)
这就是“//”表达式的用途。类似的东西:
//*[@class="nav"]//*[@class="mytarget"]