Python垃圾电子商务网站

2024-05-29 11:18:03 发布

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

我在设法降低这种产品的价格

http://www.asos.com/au/fila/fila-vintage-plus-ringer-t-shirt-with-small-logo-in-green/prd/9065343?clr=green&SearchQuery=&cid=7616&gridcolumn=2&gridrow=1&gridsize=4&pge=1&pgesize=72&totalstyles=4699

但它返回一个空数组

response.xpath('//*[@id="product-price"]/div/span[2]/text()').extract()

谢谢任何帮助。在


Tags: comhttp产品wwwwithplus价格green
3条回答

您可以尝试在HTML中找到JSON(使用正则表达式)并对其进行解析:

json_string = response.xpath('//script[contains(., "function (view) {")]/text()').re_first( r'view\(\'([^\']+)' )

data = json.loads(json_string)
price = data["price"]["current"]

价格稍后由浏览器添加,浏览器使用html中的javascript代码呈现页面。如果您在浏览器中禁用javascript,您会注意到页面看起来有点不同。另外,查看页面源代码(通常是未更改的),以确定您要查找的标记不存在(还没有)。在

Scrapy不执行任何javascript代码。它接收纯html,这就是您必须使用的。在

如果您想从看起来与浏览器中相同的页面中提取数据,我建议您使用类似Splash的无头浏览器(如果您已经在使用scrapy):https://github.com/scrapinghub/splash 你可以通过编程告诉它下载你的页面,呈现它,然后选择你感兴趣的数据点。在

另一种方法是检查对asosapi的请求,后者请求产品数据。在您的情况下,对于本产品: http://www.asos.com/api/product/catalogue/v2/stockprice?productIds=9065343&currency=AUD&keyStoreDataversion=0ggz8b-4.1&store=AU

我通过查看Developers Tools(googlechrome)中找到的XMLHttpRequest (XHR)选项卡中发送的所有XMLHttpRequest (XHR)请求得到了这个url。在

因为站点是动态的(这是我在scrapy shell中使用view(response)命令时得到的结果: enter image description here 如你所见,价格信息没有出来。在

解决方案: 1飞溅。 2硒+幻影

检查这个答案也可能有帮助:Empty List From Scrapy When Using Xpath to Extract Values

相关问题 更多 >

    热门问题