如何使用scrapy提取完整价格?

如何使用scrapy提取完整价格?,scrapy,Scrapy,嗨,我想放弃电子商务页面,但无法获得价格 我有一个页面,上面有以下几行: <span class="price">255,<sup>99</sup>€</span> <span class="price">255 €</span> 255,99€ 255 € 但我无法将所有价格提取到一行 我试过: xpath('//span[@class=“price”]/text()).extract() 但它忽略了标记中的文本。。。

嗨,我想放弃电子商务页面,但无法获得价格

我有一个页面,上面有以下几行:

<span class="price">255,<sup>99</sup>€</span>
<span class="price">255 €</span>
255,99€
255 €
但我无法将所有价格提取到一行

我试过:

xpath('//span[@class=“price”]/text()).extract()

但它忽略了
标记中的文本。。。
我做错了什么?请提供帮助。

您需要在文本前添加另一个斜杠。所以它处理所有节点

    response.xpath('//span[@class="price"]//text()').extract()

Text='255,'
Text='99'
Text='€'

你应该用双水花而不是单水花

response.xpath('//span[@class="price"]//text()').extract()
此语句将指定标记下的所有文本作为列表对象返回。 请注意,返回的列表可能有一些无用的元素,如空或回车字符。 因此,如果只想提取价格信息,可以使用regex

response.xpath('//span[@class="price"]//text()').re(r'[\d.,]+')
货币符号被忽略

['255,','99','255']
最后,如果您想从页面中获取255.99

''.join(response.xpath('//span[@class="price"][1]//text()').re(r'[\d.,]+')).replace(",",".")
你首先得到所有的产品

最终代码:

products=response.xpath('//*[@class=“catalog table”]//td')
对于产品中的产品:
price=''.join(prod.xpath('//span[@class=“price”][1]//text()').re(r'[\d,]+').replace(“,”,”)

打印价格
但如何将它们合并到一个字段?谢谢,我在shell的页面上尝试过这个,但现在它提供了一个字段中的所有内容。您使用scrapy吗?如果是这样的话,那就这样做吧。首先,您应该逐个迭代所有产品。您可以使用此('//*[@class=“catalog table”]//td')获取产品列表,然后迭代所有产品并从每个产品中获取价格。我将编辑我的回复帖子。