我试图从网站获得价格,并面临的问题,有时他们添加额外的文本字段。
例如:
<span class="price--content content--default">
Ihr Preis:
13.815,00 €
</span>
>>> response.xpath('//span[@class="price--content content--default"]/text()').extract()
['\n', '\n', '\nIhr Preis:\n13.815,00\xa0€\n']
这里还有一个例子:
<span class="price--content content--default">
Jetzt:
5.765,00 €
</span>
如何确保xpath在所有情况下都获取数字,即使只有数字而没有文本?
作为一种替代方案,如果不可能,我如何使用python获取列表的第一个数字?
发布于 2019-04-06 14:12:41
你可以用正则表达式找到它们。例如,
import re
string1 = '\nIhr Preis:\n13.815,00\xa0€\n'
string2 = '\nIhr Preis:\n5.765,00 €\xa0€\n'
my_num = re.findall(r'\d+\.\d+', string1) # or string2
print(my_num)
发布于 2019-04-09 04:49:52
即使使用Python1.0表达式也可以做到这一点,只要有且只有一个数字,并且您正在使用的XPath模块可以处理节点集以外的结果数据类型。使用:
translate(
//span[@class="price--content content--default"],
translate(//span[@class="price--content content--default"],'0123456789.,',''),
'')
发布于 2019-04-06 19:02:09
由于您正在寻找价格,因此问题是,您可能需要提取整个价格,包括美分(或给定货币的任何等价物)。因此,稍微修改一下您的第二个示例:
my_str = '<span class="price--content content--default">Jetzt:5.765,12 €</span>'
输出应该是整个5.765,12
。因此,在不使用正则表达式的情况下,我建议:
for char in my_str:
if char.isdigit() or char =='.' or char==',':
print(char, end ="")
输出:
5.765,12
https://stackoverflow.com/questions/55546209
复制相似问题