Xpath在亚马逊上获得价格

时间:2014-03-26 18:42:49

标签: python xpath lxml

首先是网址:

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上某些产品页面的链接。我想获得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

2 个答案:

答案 0 :(得分:1)

我认为问题是身份span的{​​{1}}没有直接文字。你会想做这样的事情(我把它拉出脑袋,所以你可能不得不改变它):

编辑:修正。下面的解释仍然准确。

actualPriceValue

您会注意到HTML如下所示:

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

你会注意到它应该是:

<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>

答案 1 :(得分: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]

如果有帮助,请告诉我们。