#python #html #css #xpath #scrapy
#python #HTML #css #xpath #scrapy
Вопрос:
Я хочу очистить оригинал и цену со скидкой по этой ссылке:
https://www2.hm.com/hu_hu/productpage.0903062001.html
Как класс span, так и класс del имеют странные имена классов, но я смог найти цену со скидкой в оболочке Scrapy со следующим:
response.css(‘span.price-value::text’).get()
Однако мне не повезло с оригиналом, который находится внутри тега del:
<del class="BodyText-module--general__32l6J ProductPrice-module--priceValueOriginal__3U3Cz">6amp;nbsp;995 Ft</del>
Я пробовал как xpath, так и css, но Scrapy не смог найти этот тег.
Комментарии:
1. Такого узла, как
del
в исходном коде страницы, нет. Вы можете очистить и проанализироватьvar productArticleDetails
script
node как JSON, чтобы получить это значение. Вам нужно найтиwhitePrice
ключ
Ответ №1:
Как исходная, так и сниженная цена встроены в виде данных JSON в самом источнике страницы
page_source_data = response.xpath('//div[@class= "tealiumProductviewtag productview parbase"]//text()')[0]
re.findall('product_original_price : [(.*?)],', page_source_data)
re.findall('product_list_price : ["(.*?)],', page_source_data)
Это можно использовать для определения цены
Комментарии:
1. Я получаю сообщение об ошибке при запуске регулярных выражений: ожидаемый объект, похожий на строку или байт
2. Это сработало, спасибо, проблема заключалась в том, что .get() отсутствовал в page_source_data