无法从网站获取列表值

unable to fetch the list values from the website

我从 desire 网站获取了所有详细信息,但无法获取一些具体信息,请指导我。

targeted domain: https://shop.adidas.ae/en/messi-16-3-indoor-boots/BA9855.html

my code isresponse.xpath('//ul[@class="product-size"]//li/text()').extract()

need to fetch data!!!


谢谢!

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

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

电子商务网站通常在页面源中包含 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