2016-04-11 66 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()是我一直在尋找的 –

相關問題