首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XPath表达式-hierarchy

XPath表达式-hierarchy
EN

Stack Overflow用户
提问于 2014-05-25 18:54:36
回答 1查看 86关注 0票数 1
代码语言:javascript
复制
    <div class="summary-item">
       <label  >Price</label>
        <div class="value">
            0.99 GBP
         </div>
   </div>


    <div class="summary-item">
       <label  >Other info</label>
       <div class="value">
           All languages
       </div>
    </div>

我正在尝试使用一个表达式获取“0.99 GBP”,到目前为止,我已经使用这个表达式到达标签(注意还有另一个类是名称摘要项,因此我需要唯一地标识标签名称价格)

代码语言:javascript
复制
sel.xpath('//*/div[@class="summary-item"]/label[text()="Price"]').extract()

然而,我无法到达课堂上,我试着使用以下兄弟姐妹,但我没有成功,任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2014-05-25 19:43:23

子节点的存在可以是谓词的一部分。将对label的测试作为单独的谓词(同时添加目标节点),将其放入父级的谓词:

代码语言:javascript
复制
//div[@class="summary-item"][label[text()="Price"]]/div[@class="value"]

或加入and

代码语言:javascript
复制
//div[@class="summary-item" and label[text()="Price"]]/div[@class="value"]

(请注意,开始时不需要//*/div。)

如果您愿意的话,可以使用following-sibling,它看起来如下所示:

代码语言:javascript
复制
//div[@class="summary-item"]/label[text()="Price"]/following-sibling::div[@class="value"]

(在这里,label div不是谓词的一部分)。

还有一点需要注意,使用XPath选择HTML与使用CSS - XPath只匹配确切的字符串不一样,而即使元素在多个类中也匹配。在这种情况下,它可以工作,但你应该小心它。搜索StackOverflow,如果这将是一个问题,有几个答案说明它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23858820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档