我目前正在研究抓取方式,并且一直在关注有关YouTube的教程。本教程使用的是“抓取”功能,我设法从本教程中预览的网站上抓取了数据。但是,现在我尝试抓取另一个网站没有成功。
据我了解,问题出在我使用的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文件时得到的是null。有人可以指出我正确的方向吗?
谢谢。
更新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不支持它。即:由于我想输出商品的实际(折扣)价值
答案 0 :(得分:1)
尝试这个xpath表达式,看看它是否有效:
//div[@class='price']/ins/span
请注意,price
是小写字母,就像在您的html中一样。