从渲染的网站抓取问题

时间:2017-02-24 14:37:06

标签: python html xpath web-scraping scrapy

我试图从这个网站上榨取一件衣服的价格:http://www.asos.com/asics/asics-gel-kayano-evo-trainers-in-black-h707n-9090/prd/7592389?iid=7592389&clr=Black&cid=4209&pgesize=36&pge=0&totalstyles=2160&gridsize=3&gridrow=2&gridcolumn=1

以下是要抓取的link to a screenshot页面。

使用Scrapy shell:

response.xpath('//span[@data-id="current-price"]/text()').extract()

即使在呈现网站之后,

也不会返回任何内容。知道如何从网站上抓取这条价格信息吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

Scrapy不会执行javascript渲染,因为您需要一个浏览器自动化服务,例如seleniumsplash

但是,在这种情况下,您仍然可以从相同的原始响应中获取所需的信息,因为它包含数据(但未在最终显示的html标记上呈现)。大多数网站都会从单独的请求中获取额外信息,从而导致更难以抓取。

您可以通过这种方式获得所需信息:

import json
...

d = json.loads(response.xpath('//script[contains(., "Pages/FullProduct")]/text()').re_first("view\('(\{.*\})',"))
print d['price'] // {u'currency': u'GBP', u'current': 70.0, u'previous': 0.0, u'rrp': 0.0}
print d['price']['current'] // 70.0