2014-05-25 178 views
1
<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> 

我試圖使用XPath表達式得到「0.99英鎊」,到目前爲止,我已經達到了使用這個(注意,是另一個類的名稱爲總結項目的標籤,因此,我需要與標籤名稱價格唯一標識),我嘗試使用以下同胞XPath表達式-hierarchy

sel.xpath('//*/div[@class="summary-item"]/label[text()="Price"]').extract() 

但是,我無法去的類,但我沒有成功,任何幫助將不勝感激。

回答

2

子節點的存在可以是謂詞的一部分。放爲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也只匹配確切的字符串,而CSS匹配。在這種情況下,它沒問題,但你應該留意它。搜索StackOverflow如果它是一個問題,有幾個答案descibing它。