无法从网站获取列表值
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
我从 desire 网站获取了所有详细信息,但无法获取一些具体信息,请指导我。
targeted domain: https://shop.adidas.ae/en/messi-16-3-indoor-boots/BA9855.html
my code is
response.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