2014-03-26 83 views
1

這裏的URL第一:XPath來獲取價格在亞馬遜

http://www.amazon.in/gp/product/B00EYCBFDQ/ref=s9_pop_gw_g147_i3?pf_rd_m=A1VBAL9TL5WCBF&pf_rd_s=center-3&pf_rd_r=1YP3T548XBFHJ1RA3EH8&pf_rd_t=101&pf_rd_p=402518447&pf_rd_i=1320006031 

以上是鏈接到一些產品頁面上www.amazon.in.I想要得到的實際價格是Rs.4,094。下面是一個試圖打印價格的Python代碼,我使用//span[@id="actualPriceValue"]/text()來獲得價格,但它返回一個空的列表。任何人都可以建議如何獲得價格?

from lxml import html 
import requests 

page = requests.get('http://www.amazon.in/gp/product/B00EYCBFDQ/ref=s9_pop_gw_g147_i3?pf_rd_m=A1VBAL9TL5WCBF&pf_rd_s=center-3&pf_rd_r=1YP3T548XBFHJ1RA3EH8&pf_rd_t=101&pf_rd_p=402518447&pf_rd_i=1320006031') 
tree = html.fromstring(page.text) 
price = tree.xpath('//span[@id="actualPriceValue"]/text()') 

print price 

回答

1

使用以下XPath:

price = tree.xpath("//*[@id='actualPriceValue']/b/span/text()")[0] 

以下代碼檢出:

from lxml import html 
import requests 

page = requests.get('http://www.amazon.in/gp/product/B00EYCBFDQ/ref=s9_pop_gw_g147_i3?pf_rd_m=A1VBAL9TL5WCBF&pf_rd_s=center-3&pf_rd_r=1YP3T548XBFHJ1RA3EH8&pf_rd_t=101&pf_rd_p=402518447&pf_rd_i=1320006031') 
tree = html.fromstring(page.text) 
price = tree.xpath("//*[@id='actualPriceValue']/b/span/text()")[0] 

print price 

結果:

4,094.00 
[Finished in 3.0s] 

讓我們知道這會有所幫助。

+0

是的,它的工作非常感謝你 – user3438081

+0

不客氣,祝你好運。 – Manhattan

1

我認爲這個問題是,span ID爲actualPriceValue沒有直接的文本。你會想做這樣的事情(我把它拉出我的頭,所以你可能不得不改變它):

編輯:固定。以下說明仍然準確。

//*[@id='actualPriceValue']/b/span/text() 

你會注意到HTML看起來像這樣:

<span id="actualPriceValue"> 
    <b class="priceLarge"> 
     <span style="text-decoration: inherit; white-space: nowrap;"> 
      <span class="currencyINR">&nbsp;&nbsp;</span> 
      <span class="currencyINRFallback" style="display:none">Rs. </span> 
      4,112.00 
     </span> 
    </b> 
</span> 

你會發現,它應該是:

Span with an id of actualPriceValue -> first b element -> first span element -> text 
+0

我仍然收到一個空的列表。 – user3438081

+0

是的,我在語法上有點偏離(缺少*並且不需要[0])。我看到上面的答案是相似的,但並不缺乏語法! :) – Clete2

相關問題