scrapy 如何提取全价与零头?

kmpatx3s  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(164)

你 好 , 我 试图 废弃 电子 商务 页面 , 但 无法 获得 价格 。
我 有 一 页 有 这样 几 行 字 :

<span class="price">255,<sup>99</sup>€</span>
<span class="price">255 €</span>

中 的 每 一 个
但 我 不能 把 所有 的 价格 都 提取 到 一 行 。
我 试探 着 :
如果 您 有 任何 问题 , 请 联系 我们 。
但是 它 忽略 了 <sup> 标签 中 的 文本 ... 我 做 错 了 什么 ? 请 帮助 。

huus2vyu

huus2vyu1#

你需要在文本前再加一个斜杠,这样它就可以处理所有节点。

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

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

xuo3flqw2#

你应该放两个水花而不是一个。

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')
for prod in products:
    price = ''.join(prod.xpath('//span[@class="price"][1]//text()').re(r'[\d.,]+')).replace(",",".")
    print price
whlutmcx

whlutmcx3#

检查源代码HTML。源代码中包含:
我一整天都在寻找同一个问题,发现这个答案非常适合这个问题

response.xpath('//meta[@itemprop="price"]/@content').get()

相关问题