Я сейчас нахожусь в процессе изучения соскоба и следую учебному пособию на Youtube. Учебное пособие использует «Scrapy», и мне удалось очистить данные с веб-сайта, предварительно просмотренного в учебном пособии. Тем не менее, теперь я попытался очистить другой сайт безуспешно.
Насколько я понимаю, проблема в Xpath, который я использую. Я пробовал несколько сайтов по тестированию / генерации Xpath, но безуспешно.
Это следующий XML код:
<div class="price" currentmouseover="94">
<del currentmouseover="96">
<span class="woocommerce-Price-amount amount" currentmouseover="90"><span class="woocommerce-Price-currencySymbol">€</span>3.60</span>
</del>
<ins><span class="woocommerce-Price-amount amount" currentmouseover="123"><span class="woocommerce-Price-currencySymbol" currentmouseover="92">€</span>3.09</span></ins></div>
В настоящее время я использую следующий код:
def parse(self,response):
for title in response.xpath("//div[@class='Price']"):
yield {
'title_text': title.xpath(".//span[@class='woocommerce-Price-amount amount']/text()").extract_first()
}
Я также пытался использовать // span [@ class = 'woocommerce-Price-amount amount'].
Я хочу, чтобы мой вывод был '3.09', вместо этого я получаю нулевое значение, когда экспортирую его в файл JSON. Может кто-нибудь направить меня в правильном направлении?
Заранее спасибо.
Обновление 1: Мне удалось решить проблему с ответом Джека Флитинга. Так как у меня были проблемы с пониманием Xpath, я пробовал разные веб-сайты, чтобы лучше понять, как работает Xpath. К сожалению, я застрял в другом примере.
<div class="add-product"><strong><small>€3.11</small> €3.09</strong></div>
Я использую следующий фрагмент:
l.add_xpath('price', ".//div[@class='add-product']/strong[1]")
Я ожидаю вывести 3.09, однако я вывожу оба числа. Я пытался использовать минимальную функцию, но Xpath 1.0 не поддерживает ее. ie: поскольку я хотел вывести фактическое (дисконтированное) значение элемента