2016-04-11 31 views
1

这是我的第一个问题。我试图通过网页获取数据,通过scrapy。如何获得相同名称的正确xpath? Scrapy

<dl class="pairing"> 
    <dt class="attribute" title="Maridaje">Maridaje:</dt> 
    <dd> 
</dl> 
<dl> 
<dl> 
    <dt class="attribute" title="Vol. de alcohol">Vol. De Alcohol:</dt> 
    <dd>14%</dd> 
</dl> 

正如你所看到的,有一些使用相同类名的实例。我只想将文本置于一个文本中。我如何指定我指的是哪一个?

我已经试过

item['maridaje'] = response.xpath('.//*[@class="attribute"]/text()').extract() 

但这只是给我一份有相同名称的clases的所有标题。

非常感谢!

回答

0

多个选项:

  • 通过指数在XPath中(1系):.//*[@class="attribute"][1]/text()
  • 使用extract_first()如果期望的一个是第一个元素:

    response.xpath('.//*[@class="attribute"]/text()').extract_first() 
    
  • 通过在Python索引(基于0),获得第二次匹配:

    response.xpath('.//*[@class="attribute"]/text()').extract()[1] 
    
  • 检查父:.//dl[@class="pairing"]/dt[@class="attribute"]/text()

  • 检查title属性:.//*[@class="attribute" and @title="Maridaje"]/text()
+0

真的谢谢了! .//*[@class="attribute“和@ title =”Maridaje“]/text()是我一直在寻找的 –

相关问题