我正在学习用于网页抓取的 XPath,并偶然发现了这两个 XPath 示例:
//div[@class="head"][@id="top"]
and
//div[@class='canvas- graph']//a[@href='/accounting.html'][i[@class='icon-usd']]/following-sibling::h4
我想知道什么是div[@class="head"][@id="top"]
意思是。这是否意味着@id=top
财产属于div
元素?是不是一样//div[@class="head" and @id="top"]
?
当方括号嵌套在另一个方括号内(如第二个示例所示)时,这意味着什么?
如果第二个 xpath 表达式与之匹配,HTML DOM 会是什么样子?
Square brackets delimit predicates†, and predicates filter items††.
您预计有两种组合谓词的方式:
-
连续: 是的,这在逻辑上相当于anding 谓词。所以,正确的是,//div[@class="head"][@id="top"]
相当于//div[@class="head" and @id="top"]
.
-
递归地:是的,XPath 允许谓词内有谓词(nesting,正如您所观察到的那样)。
So, a[@href='/accounting.html'][i[@class='icon-usd']]
过滤那些a
元素与@href
属性值等于'/accounting.html'
and一个孩子i
元素与一个@class
属性值等于'icon-usd'
.
这些组合机制共同提供了一种根据更基本的条件构建谓词的强大方法。
† Predicate references: XPath 1.0. XPath 3.1.
†† Node-sets in XPath 1.0; sequences in XPath 2.0+.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)