如何在Python中使用正则表达式从HTML中提取价格

0 投票
1 回答
1245 浏览
提问于 2025-04-18 13:35

我有一个HTML输出,里面包含了这些内容:

<span class="value">
            Price:<br>
            <span style="color:white">23,07€ </span>
        </span>

我尝试用以下方法提取价格:

prices = re.findall(r'<span class="value">.*?(\d{1,3}\.?\d{1,2}).*?</span>',search_result)

有时候,当小数部分是00时,数字会被替换成--,另外我还需要把通过表达式提取出来的这两个数字23和07合并成2307。

谢谢你的时间。

1 个回答

1

从索引1获取匹配的组。

(?<=>)(\d[^€]*)

示例


或者获取每个数字的匹配组索引1和2

(?<=>)(\d+)\D(\d+)\D

示例


如果你只对<span>标签感兴趣,可以试试下面的正则表达式

<span [^>]*>(\d+)\D(\d+)\D[^<]*

示例代码:

import re
p = re.compile(ur'<span [^>]*>(\d+)\D(\d+)\D[^<]*')
test_str = u"..."

re.findall(p, test_str)

撰写回答