<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”,到目前为止,我已经使用这个表达式到达标签(注意还有另一个类是名称摘要项,因此我需要唯一地标识标签名称价格)
sel.xpath('//*/div[@class="summary-item"]/label[text()="Price"]').extract()然而,我无法到达课堂上,我试着使用以下兄弟姐妹,但我没有成功,任何帮助都将不胜感激。
发布于 2014-05-25 19:43:23
子节点的存在可以是谓词的一部分。将对label的测试作为单独的谓词(同时添加目标节点),将其放入父级的谓词:
//div[@class="summary-item"][label[text()="Price"]]/div[@class="value"]或加入and
//div[@class="summary-item" and label[text()="Price"]]/div[@class="value"](请注意,开始时不需要//*/div。)
如果您愿意的话,可以使用following-sibling,它看起来如下所示:
//div[@class="summary-item"]/label[text()="Price"]/following-sibling::div[@class="value"](在这里,label div不是谓词的一部分)。
还有一点需要注意,使用XPath选择HTML与使用CSS - XPath只匹配确切的字符串不一样,而即使元素在多个类中也匹配。在这种情况下,它可以工作,但你应该小心它。搜索StackOverflow,如果这将是一个问题,有几个答案说明它。
https://stackoverflow.com/questions/23858820
复制相似问题