我想知道如何在xpath中选择父节点?
因为网站的结构不固定
有时它会显示位置然后电话,有时电话首先比位置
所以我不能使用li[1] li[2]
我的想法是先知道p.title/text()
包含'位置'
如果是“位置”,则选择其祖先<div class="row">
然后找到<p><span class="add">LA</span></p>
简而言之,我想知道如何使用xpath选择'LA'?
但是不要使用方法sel.xpath("li[1]/div[@class='row']/div[@class='col-xs-8']/p/text()")
请指导我,谢谢你
<li>
<div class="row">
<div class="col-xs-4">
<p class="title">location</p>
</div>
<div class="col-xs-8">
<p><span class="add">LA</span></p>
</div>
</div>
</li>
<li>
<div class="row">
<div class="col-xs-4">
<p class="title">phone</p>
</div>
<div class="col-xs-8">
<p><span class="phone">123456789</span></p>
</div>
</div>
</li>
答案 0 :(得分:0)
在这里编写xpath肯定有多种方法。
一个选项是从div
开始,使用row
类,检查第一个div是否包含带有p
文本的location
标记并获取span
标记位于第二个p
内的div
内:
//div[@class = "row" and div[1]/p[@class="title" and text() = "location"]]/div[2]/p/span/text()
演示(使用scrapy shell
):
$ scrapy shell index.html
>>> response.xpath('//div[@class = "row" and div[1]/p[@class="title" and text() = "location"]]/div[2]/p/span/text()').extract()
[u'LA']