HTML vs response.url - 如何使用xpath获取价格

时间:2017-02-22 15:32:48

标签: python html xpath scrapy web-crawler

这是我在浏览器的html中看到的

   <li class="lvprice prc">

            <span  class="bold">    
                    $72.95</span>
                </li>

因此我的xpath要抢价格;

prices = Selector(response).xpath('//*[@class = "lvprice prc"]')
for price in prices:
    item['price'] = float(price.xpath('span[1]/text()').extract()[0].strip()[1:].replace(',',''))

它对某些网址不起作用,所以我看了一下它没有用的响应。响应看起来像这样;

<li class="lvprice prc">

        <span  class="bold">
                <b>ZAR</b> 2,656.74</span>
            </li>

如何处理此

的任何建议

谢谢! (域名是ebay.com)

1 个答案:

答案 0 :(得分:1)

在执行AJAX之前,这些价格真的是在DOM中吗?

AJAX电话可能正在加载价格。

尝试在浏览器中禁用JS并查看该页面中的HTML。

顺便说一句,使用这个XPATH来选择多一个类的元素。

//*[contains(@class, 'class1') and contains(@class, 'class2')]

修改

由于来自同一IP的许多请求,我100%确定eBay正在显示Captcha页面。请记住,eBay不是BABY网站,它是一家非常大的公司,他们反对刮擦。它们阻止了刮掉它们的IP。

我过去常常刮掉亚马逊,eBay和其他几个大网站,他们真的反对抓它们。

执行此操作以查看当您的回复中没有价格时的回复。

from scrapy.utils.response import open_in_browser

def parse_details(self, response):
    try:
        Selector(response).xpath('//*[@class = "lvprice prc"]').extract()[0]
    except Exception:
        open_in_browser(response)

这将在您操作系统的默认浏览器中打开已删除的页面。