xpath:如何使用父元素

时间:2014-08-06 00:11:59

标签: xpath web-scraping scrapy

我想知道如何在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>

1 个答案:

答案 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']