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

如何将Beautiful Soup提取的价格文本转换为浮点数并构建列表?循环外仅获取最后一个价格值的问题解决

解决价格提取与列表构建的问题

嘿,我来帮你搞定这两个问题!咱们一步步拆解并解决:

问题1:将提取的价格文本转换为浮点数列表

首先,你提取的价格文本有的带$符号(比如1.35 $),需要先清理掉非数字的部分,再转换为浮点数。同时,我们需要一个列表来存储所有价格,避免值被覆盖。

问题2:循环外仅能获取最后一个价格值

之前的问题在于你没有把每个price2的值存储起来,而是每次循环都用新值覆盖了price2变量。解决方法是提前初始化一个列表,把每个处理后的价格都添加到列表中,这样循环外就能访问所有值了。

修改后的完整代码

import requests
from bs4 import BeautifulSoup

url = "https://starpets.gg/adopt-me/shop/pet/firefly/15292"
result = requests.get(url)
doc = BeautifulSoup(result.text, "html.parser")

# 初始化一个空列表,用来存储所有转换后的浮点数价格
all_prices = []

# 处理第一个"Best price"
best_price_tag = doc.find("span", itemprop="price")
if best_price_tag:  # 增加判断避免找不到标签报错
    best_price = float(best_price_tag.text.strip())
    all_prices.append(best_price)
    print("Best price", best_price)

print("-----")

# 处理类标签下的所有价格
price_tags = doc.find_all("div", class_="_text_j98bt_1 _text__size_m_j98bt_40 _text__weight_bold_j98bt_83 _text__style_normal_j98bt_95 _text__decoration_normal_j98bt_104 _content-price_1gow4_85")
for tag in price_tags:
    # 清理文本:去掉$符号和前后空格,确保只保留数字和小数点
    raw_price = tag.text.strip().replace("$", "")
    # 转换为浮点数并添加到列表
    try:
        price = float(raw_price)
        all_prices.append(price)
        print(price)
    except ValueError:
        print(f"跳过无效价格:{raw_price}")  # 处理异常情况,避免程序崩溃

# 现在循环外可以访问所有价格的浮点数列表了!
print("\n所有价格的浮点数列表:", all_prices)

# 示例:检查符合预算的价格(假设预算是2.0)
budget = 2.0
affordable_prices = [price for price in all_prices if price <= budget]
print(f"\n符合或低于预算${budget}的价格:", affordable_prices)

关键说明

  • 存储所有价格:通过初始化all_prices列表,每次处理完一个价格就用append()添加进去,这样所有值都会被保留,不会被后续循环覆盖。
  • 清理价格文本:用strip()去除前后空格,replace("$", "")去掉美元符号。如果遇到更复杂的格式(比如带逗号的价格),可以用正则表达式re.sub(r'[^0-9.]', '', raw_price)来过滤掉所有非数字和小数点的字符。
  • 异常处理:添加try-except块可以避免因无效价格文本(比如空值、非数字字符串)导致程序崩溃。
  • 预算检查:最后用列表推导式快速筛选出符合或低于预算的价格,满足你的核心需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 10:47:36