如何使用Python调用trailsinthedatabase REST API获取空之轨迹3rd游戏脚本
问题原因
你当前代码的核心错误是误用了API文档页面的地址作为实际接口请求地址,你传入的地址返回的是文档的HTML页面内容,自然无法得到结构化的脚本数据。
修正方案
单脚本请求(以fname=c0301为例)
根据API文档说明,getDetail接口的实际请求路径为对应站点的api/detail路径,修正后的代码如下:
import requests # 替换为实际API接口地址,而非文档页面地址 api_url = "https://trailsinthedatabase.com/api/detail" parameter = {'gameId': 3, "fname": "c0301"} response = requests.get(api_url, params=parameter) # 接口返回JSON格式数据,直接解析为字典 script_data = response.json() # 输出脚本内容,可根据需要自行保存到本地文件 print(script_data)
批量获取全游戏脚本
如果需要下载《Trails in the sky the 3rd》的全部脚本,需要先调用脚本列表接口获取该游戏下所有的fname参数值,再循环请求每个脚本的详情:
import requests import time base_detail_url = "https://trailsinthedatabase.com/api/detail" list_url = "https://trailsinthedatabase.com/api/script-list" game_id = 3 # 第一步:获取该游戏所有脚本的fname列表 list_resp = requests.get(list_url, params={"gameId": game_id}) fname_list = [item["fname"] for item in list_resp.json()] # 第二步:循环下载每个脚本 all_scripts = [] for fname in fname_list: detail_resp = requests.get(base_detail_url, params={"gameId": game_id, "fname": fname}) all_scripts.append(detail_resp.json()) # 增加请求间隔,避免请求频率过高被站点限制 time.sleep(0.5) # 可自行将all_scripts保存为JSON或TXT文件用于后续学习
注意事项
- 站点有反爬机制,不要短时间发起大量高频请求,建议在两次请求之间增加至少0.5秒的等待间隔
- 接口返回的JSON数据包含多语言字段,你可以按需提取英文对应的字段内容整理为学习材料
内容的提问来源于stack exchange,提问作者ShinKyu Kang
相关产品推荐
相关产品推荐

