не удалось получить значения списка с веб-сайта
я достал все детали с сайта желаний, но не смог получить какую-то конкретную информацию, пожалуйста, направляйте меня на это.
целевой домен: 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, он прост в установке и прост в использовании. Вам понадобится докер для установки всплеска.