Scrapy не может видеть данные внутри HTML-тега del

#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