Python调用Steam API出现KeyError,无法获取字典键值求助
解决Python调用Steam API获取
gameextrainfo失败的问题 核心问题:数据层级定位错误
你直接用profile['gameextrainfo']失败的根源是没正确遍历Steam API返回的嵌套数据结构。从给出的返回示例来看,数据层级是:顶级字典 → response → players(数组类型) → 单个玩家对象(包含gameextrainfo的字典)
分步解决思路
- 确保响应正确解析为字典
用requests请求时,必须把响应内容解析为JSON字典,不能直接操作原始响应文本:
import requests api_url = "你的Steam API请求地址" resp = requests.get(api_url) # 解析为可操作的字典 data = resp.json()
- 按层级正确提取数据
先定位到players数组,再取第一个元素(API返回的是玩家列表,哪怕只有一个玩家),最后提取目标字段:
# 安全获取players列表,避免键不存在时报错 players_list = data.get("response", {}).get("players", []) # 先检查列表非空,防止索引错误 if players_list: target_profile = players_list[0] # 用get()方法提取字段,避免键不存在时抛出KeyError game_info = target_profile.get("gameextrainfo") print(game_info) # 输出:Counter-Strike: Global Offensive else: print("未获取到玩家数据")
- 额外排查点
- 验证API权限:确认你的Steam API Key有访问用户公开资料的权限,且目标用户的
communityvisibilitystate为3(公开状态),否则部分字段会被隐藏 - 核对字段名:确保拼写完全一致(不要误写为
game_extrainfo这类变体) - 打印完整结构:如果仍有问题,打印完整解析后的字典,确认实际返回的字段与预期一致:
import json print(json.dumps(data, indent=2, ensure_ascii=False))
内容的提问来源于stack exchange,提问作者Ghost
相关产品推荐
相关产品推荐

