如何从Steam获取游戏用户评分及评论数并导出到Excel表格
Steam游戏评测数据抓取最优方案
优先选择官方公开接口实现,不需要破解反爬、不需要注册开发者账号,稳定且符合Steam的使用规则,完全可以满足你批量获取数千条数据的需求,实现步骤如下:
- 第一步:获取Steam全量AppID列表
Steam公开了全平台应用的ID对应关系接口,直接请求即可拿到所有游戏的AppID和对应名称,你可以按需筛选或者随机抽取你需要的游戏样本。 - 第二步:调用公开评测接口拿目标字段
Steam提供无密钥即可调用的评测查询接口,填入对应游戏的AppID即可拿到返回结果,其中review_score_percent字段就是你要的评测百分比得分,total_reviews字段就是总评论数量,和商店页展示的数据完全一致。 - 第三步:数据导出到Excel
把拿到的字段按你需要的结构整理后,直接用工具库导出为Excel文件即可。
可直接运行的Python示例代码
先安装依赖包:pip install requests pandas openpyxl
import requests import pandas as pd import time import random # 获取全量AppID列表 resp = requests.get("https://api.steampowered.com/ISteamApps/GetAppList/v2/") app_list = resp.json()["applist"]["apps"] # 随机抽取1000个游戏,可自行修改数量 target_games = random.sample(app_list, 1000) result_data = [] for game in target_games: appid = game["appid"] game_name = game["name"] try: # 请求评测数据,language=all取全语种统计结果 review_resp = requests.get( f"https://store.steampowered.com/appreviews/{appid}", params={"json": 1, "filter": "all", "language": "all", "num_per_page": 0}, timeout=10 ) resp_data = review_resp.json() if resp_data["success"] != 1: continue summary = resp_data["query_summary"] # 过滤无评论的无效游戏 if summary["total_reviews"] == 0: continue result_data.append({ "游戏名称": game_name, "评测得分": f"{summary['review_score_percent']}%", "评论总数": summary["total_reviews"] }) # 控制请求频率避免被限制,可根据实际情况调整间隔 time.sleep(1.5) except: # 异常直接跳过,不中断整体抓取 continue # 导出为Excel文件 df = pd.DataFrame(result_data) df.to_excel("Steam游戏评测数据.xlsx", index=False)
注意事项
- 单次抓取量在5000条以内的话,把请求间隔设为2秒基本不会触发IP限制,要是需要爬更多数据,可以自行加代理池轮换IP
- 部分非游戏类应用(比如DLC、开发工具、测试版内容)可能没有评测数据,代码里已经加了过滤逻辑,会自动跳过
- 可以加本地缓存逻辑,每爬100条就存一次文件,避免程序异常退出导致之前爬的数据丢失
内容的提问来源于stack exchange,提问作者robin_of_pride
相关产品推荐
相关产品推荐

