0

我从欲望网站获取所有细节,但无法获得一些具体信息,请指导我。

目标域名:https ://shop.adidas.ae/en/messi-16-3-indoor-boots/BA9855.html

我的代码是response.xpath('//ul[@class="product-size"]//li/text()').extract()

在此处输入图像描述

需要获取数据!!!

在此处输入图像描述
谢谢!

4

2 回答 2

2

电子商务网站通常在页面源中具有 json 格式的数据,然后在用户端将 javscript 解包。

在这种情况下,您可以打开禁用 javascript 的页面源并搜索关键字(如特定大小)。

我发现在这种情况下可以用正则表达式找到它:

import re
import json
data = re.findall('window.assets.sizesMap = (\{.+?\});', response.body_as_unicode())
json.loads(data[0])
Out: 
{'16': {'uk': '0k', 'us': '0.5'},
 '17': {'uk': '1k', 'us': '1'},
 '18': {'uk': '2k', 'us': '2.5'},
 ...}

编辑:更准确地说,您可能想要获得 json 的不同部分,但答案或多或少是相同的:

data = re.findall('window.assets.sizes = (\{(?:.|\n)+?\});', response.body_as_unicode())
json.loads(data[0].replace("'", '"')) # replace single quotes to doubles
于 2017-06-06T09:34:02.400 回答
1

您要获取的数据是从 javascript 加载的。在标签中明确表示class="js-size-value "

如果你想得到它,你将需要使用渲染服务。我建议你使用Splash,它安装简单,使用简单。您将需要docker来安装 splash。

于 2017-06-06T09:31:11.183 回答