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

使用BeautifulSoup爬取Steam价格时如何为空列表赋值避免min()报错

错误原因

ValueError: min() arg is an empty sequence报错触发的原因是部分Steam市场页面没有匹配到带data-price属性的价格标签,生成的CromoList为空列表,对空列表执行min()计算最小值时就会触发该错误。

修复方案

你需要在处理每个页面对应的价格列表时增加空值判断,空列表就用你预设的ListaR值填充即可,同时可以兼容你“每个页面价格存单独子列表、汇总到总列表”的需求,修改后的完整代码如下:

from bs4 import BeautifulSoup
import requests
import time

AppID = ['495570', '540190', '607210', '575780', '338840', '585830', '637330', '514360', '575760', '530540', '361890', '543170', '346500', '555930', '575700', '595780', '362400', '562360', '745670', '763360', '689360', '363610', '575770', '467310', '380560'] 
ListaUrl = list()
ListaR = ["$0.00 USD", "$0.00 USD"]
# 提前把预设默认值转成浮点数值
default_prices = [float(i.strip('USD$')) for i in ListaR]
# 加请求头避免Steam反爬拦截
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}

for x in AppID:
    url = "https://steamcommunity.com/market/search?category_753_Game%5B%5D=tag_app_"+x+"&category_753_cardborder%5B%5D=tag_cardborder_0&category_753_item_class%5B%5D=tag_item_class_2#p1_price_asc"
    ListaUrl.append(url)

PageCromos = []
for x in ListaUrl:
    PageCromos.append(requests.get(x, headers=headers))
    time.sleep(1) # 加请求间隔避免触发Steam临时IP封禁

SoupCromos = [BeautifulSoup(x.content, "html.parser") for x in PageCromos]
PrecioCromos = [x.find_all("span", {"data-price": True}) for x in SoupCromos]

# 存储所有页面价格子列表的总列表
full_price_list = []
# 存储每个页面最小价格的列表
min_CromoList = []

for item in PrecioCromos:
    CromoList = [float(i.text.strip('USD$')) for i in item]
    # 空列表判断逻辑
    if not CromoList:
        CromoList = default_prices
    full_price_list.append(CromoList)
    min_CromoList.append(min(CromoList))

print(min_CromoList)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:39:05