Python的报废-XPath问题



我目前正在研究刮削,我一直在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='wocommerce-Price-mount-amount']。

我希望我的输出是"3.09",相反,当我将其导出到JSON文件时,我会得到null。有人能给我指正确的方向吗?

提前谢谢。

更新1:我已经用Jack Fleeting的回答解决了这个问题。由于我在理解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不支持它。例如:因为我想输出项目的实际(折扣(值

试试这个xpath表达式,看看它是否有效:

//div[@class='price']/ins/span

请注意,price是小写,就像在html中一样。

最新更新