从呈现的Web中进行刮取时出现问题

2024-04-24 17:00:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从这个网站上搜刮一件衣服的价格: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的页面要刮

使用刮壳:

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

不返回任何内容,即使在呈现网站后也是如此。你知道怎么从网站上搜集这条价格信息吗

谢谢你


Tags: incomhttp网站www价格blackevo
1条回答
网友
1楼 · 发布于 2024-04-24 17:00:21

Scrapy不执行javascript呈现,因此您需要一个浏览器自动化服务,比如selenium^{}

但是,在这种情况下,您仍然可以从相同的原始响应中获得所需的信息,因为它包含数据(但最终显示的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

相关问题 更多 >