这是我在浏览器的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)
答案 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)
这将在您操作系统的默认浏览器中打开已删除的页面。