Python Scrapy Xpath无法获取所有价格
我用刮痧来爬 我对价格xpath存在问题,这只会拉高一些价格:Python Scrapy Xpath无法获取所有价格,python,xpath,scrapy,Python,Xpath,Scrapy,我用刮痧来爬 我对价格xpath存在问题,这只会拉高一些价格: //div[@class="buy-box-container"]/p[2]/text() 通过删除text(),我想我可以理解为什么会有这样的设置,这些设置会影响价格: <p class="price"> £189.00 </p> £189.00 非结构化的结构如下所示: <p class="price"> <span class="from">From</span
//div[@class="buy-box-container"]/p[2]/text()
通过删除text(),我想我可以理解为什么会有这样的设置,这些设置会影响价格:
<p class="price">
£189.00
</p>
£189.00
非结构化的结构如下所示:
<p class="price">
<span class="from">From</span>
£549.00
</p>
从…起
£549.00
因此,strip()似乎正在删除这些。Xpath有没有一种方法可以让我从段落标记中获取文本,而不是从其中的跨度中获取文本
谢谢 问题在于,
/text()
只会匹配直接文本子节点,并且,您正确理解,第二个示例会破坏选择器
我只需要从“price”元素中获取所有的“text”节点,然后使用.re_first()
获取金额:
或者,使用CSS选择器而不是XPath更简单:
price = quote.css('.buy-box-container .price').re_first(r"\d+\.\d+")
尝试以下方法获得您想要的价格 而不是使用这个:
quote.xpath('.//div[@class=“buy box container”]/p[2]/text()).extract_first()
尝试使用以下方法:
quote.xpath('.//div[@class=“buy-box-container”]//p[@class=“price”]/text()).extract()[-1]
你是个英雄。我刚刚阅读了关于re_的文档,因为我没有意识到这一点。但是你能解释一下r“\d+\.\d+”在做什么吗?非常感谢@当然,这只是一个正则表达式,它将匹配一个或多个数字,后跟一个文字点,后跟一个或多个数字。希望有帮助。
price = quote.xpath('.//div[@class="buy-box-container"]/p[2]//text()').re_first(r"\d+\.\d+")
price = quote.css('.buy-box-container .price').re_first(r"\d+\.\d+")