如何使用Web API获取的数据?规整Dota2欧洲排行榜表格用于Excel导入
解决Dota2排行榜API数据格式混乱无法导入Excel的问题
我之前处理过这个Dota2排行榜API的问题!它返回的是压缩后的单行JSON数据,直接保存或复制的话确实没法直接导入Excel,给你几个实用的解决方案:
方案1:用Python格式化JSON(适合需要保留原始结构的场景)
如果只是想把压缩的JSON转成结构化的格式,方便后续处理,写个几行的Python脚本就行:
import json import requests # 请求欧洲区排行榜数据 api_url = "http://www.dota2.com/webapi/ILeaderboard/GetDivisionLeaderboard/v0001?division=europe" response = requests.get(api_url) leaderboard_data = response.json() # 格式化并保存为带缩进的JSON文件 with open("dota_europe_leaderboard.json", "w", encoding="utf-8") as file: json.dump(leaderboard_data, file, indent=4, ensure_ascii=False)
运行后得到的JSON文件会有清晰的层级结构,你可以手动复制其中的leaderboard数组内容,或者用工具进一步转成表格格式。
方案2:直接转成CSV(最适合导入Excel)
如果目标是直接导入Excel,把数据转成CSV格式是最省心的。同样用Python脚本一键生成:
import json import requests import csv api_url = "http://www.dota2.com/webapi/ILeaderboard/GetDivisionLeaderboard/v0001?division=europe" response = requests.get(api_url) data = response.json() # 提取核心的排行榜数据数组 leaderboard_entries = data["leaderboard"] # 获取表头字段(从第一个条目自动提取) column_headers = leaderboard_entries[0].keys() # 写入CSV文件 with open("dota_europe_leaderboard.csv", "w", newline="", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=column_headers) writer.writeheader() # 写入表头 writer.writerows(leaderboard_entries) # 写入所有行数据
生成的CSV文件可以直接用Excel打开,所有字段(排名、MMR、玩家名称等)都会自动对应到表格列,完全不需要手动调整格式。
方案3:无代码在线工具处理(适合不想写代码的情况)
如果你不想写脚本,也可以用在线工具完成:
- 打开浏览器开发者工具(F12),切换到「Network」标签,刷新目标页面,找到API请求(URL包含
GetDivisionLeaderboard),复制它的响应内容; - 用在线JSON格式化工具把压缩的单行JSON转成结构化格式;
- 再用JSON转CSV工具,选择
leaderboard作为要转换的数组,生成CSV文件后即可导入Excel。
注意事项
API返回的数据里,真正的排行榜内容在leaderboard数组中,转换时要确保只处理这个数组,不要把外层的元数据(比如status、division)也混入表格里。
内容的提问来源于stack exchange,提问作者Solliden




