You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Steam API获取CSGO击杀数等玩家统计数据

解决Steam API获取CSGO击杀数失败的问题

我来帮你排查并解决这个问题!你的代码主要有两个关键错误,导致无法正确拿到total_kills的数据:

1. JSON解析方式错误

你写的csgo_stats, = csgo.json()这行代码有问题——Steam API返回的JSON顶层是一个包含playerstats键的对象,不是可以直接解包的单元素结构,这行代码大概率会抛出ValueError。正确的做法是直接获取JSON对象,再提取playerstats

2. 错误地将stats数组当作字典访问

返回数据里的stats数组(列表),每个元素是包含namevalue的对象,而不是键值对字典。你不能直接用['stats']['total_kills']来访问,必须遍历数组找到nametotal_kills的项。

修正后的完整代码

import requests

# 替换成你的实际API密钥和SteamID
steam_api = "your_api_key_here"
steamid = "target_steamid_here"

# 发送API请求
csgo_response = requests.get(
    f"http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v2/?appid=730&key={steam_api}&steamid={steamid}"
)
csgo_data = csgo_response.json()

# 提取玩家统计数据,做容错处理
playerstats = csgo_data.get("playerstats")
if not playerstats:
    print("无法获取玩家统计数据,请检查API密钥或SteamID是否正确")
    exit()

# 遍历stats数组找到total_kills
stats_list = playerstats.get("stats", [])
total_kills = None
for stat in stats_list:
    if stat.get("name") == "total_kills":
        total_kills = stat.get("value")
        break

# 或者用更简洁的生成器表达式(效果一样)
# total_kills = next((stat["value"] for stat in stats_list if stat["name"] == "total_kills"), None)

if total_kills is not None:
    print(f"玩家总击杀数:{total_kills}")
else:
    print("未找到total_kills统计项")

代码说明

  • get()方法替代直接索引,避免因为键不存在导致的KeyError,增加代码容错性
  • 遍历stats数组,匹配name字段来找到对应的击杀数值
  • 加入了错误处理,比如API请求失败或者数据不存在的情况

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

火山引擎 最新活动