You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BeautifulSoup如何提取<p>标签文本中的价格内容,去除多余描述文字

实现代码与说明

方法1:字符串分割(适配当前固定前缀场景)

你抓取到的文本前缀固定以冒号分隔价格内容,直接按冒号切割即可提取目标价格字符串,再做格式转换即可得到标准数值:

from bs4 import BeautifulSoup
import requests
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"}

p = requests.get(url = 'https://www.tia-mobiteli.hr/detaljan-prikaz.aspx?gid=11-appise_64wheu', headers = headers)
soup = BeautifulSoup(p.content,'lxml')
raw_price = soup.find('div', class_='widget widget-info widget-price').p.text.strip()

# 步骤1:提取纯价格字符串
price_str = raw_price.split(':')[-1].strip()
print(price_str) # 输出:3.649,00 kn

# 步骤2:转换为标准数值格式
# 先去掉千位分隔符".",再把小数位分隔符","替换为".",最后转浮点数
price_num = float(price_str.split(' ')[0].replace('.','').replace(',','.'))
print(price_num) # 输出:3649.00

方法2:正则匹配(适配前缀不固定的通用场景)

如果后续页面的前缀文本有变动,用正则匹配数字格式的内容更稳定:

import re
from bs4 import BeautifulSoup
import requests
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"}

p = requests.get(url = 'https://www.tia-mobiteli.hr/detaljan-prikaz.aspx?gid=11-appise_64wheu', headers = headers)
soup = BeautifulSoup(p.content,'lxml')
raw_price = soup.find('div', class_='widget widget-info widget-price').p.text.strip()

# 匹配符合 x.xxx,xx 格式的价格
match_res = re.search(r'\d+\.\d+,\d+', raw_price)
if match_res:
    price_str = match_res.group() + ' kn'
    print(price_str)
    # 转换数值格式逻辑和上面一致
    price_num = float(match_res.group().replace('.','').replace(',','.'))
    print(price_num)

内容的提问来源于stack exchange,提问作者Arstegall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:30:02