我从欲望网站获取所有细节,但无法获得一些具体信息,请指导我。
目标域名:https ://shop.adidas.ae/en/messi-16-3-indoor-boots/BA9855.html
我的代码是
response.xpath('//ul[@class="product-size"]//li/text()').extract()
需要获取数据!!!
我从欲望网站获取所有细节,但无法获得一些具体信息,请指导我。
目标域名:https ://shop.adidas.ae/en/messi-16-3-indoor-boots/BA9855.html
我的代码是
response.xpath('//ul[@class="product-size"]//li/text()').extract()
需要获取数据!!!
电子商务网站通常在页面源中具有 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
您要获取的数据是从 javascript 加载的。在标签中明确表示class="js-size-value "
。
如果你想得到它,你将需要使用渲染服务。我建议你使用Splash,它安装简单,使用简单。您将需要docker来安装 splash。