You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Roblox徽章接口查多徽章用户出现TypeError列表索引报错如何解决

错误原因
  • 核心触发点是代码第35行的data.append([cursor])语句:你在每次翻页请求完成后,将包装成列表的分页游标值追加到了存储徽章数据的data数组中。
  • 当查询的用户徽章数量较少、无需翻页时,while循环不会执行,data数组内全是接口返回的徽章字典对象,后续遍历取id字段不会出错。
  • 当查询的用户徽章数量较多、需要多次翻页时,data数组会被插入多个[cursor]列表元素,后续列表推导式遍历到这些列表元素时,尝试用字符串'id'作为列表索引,就触发了“列表索引必须为整数或切片,不能是字符串”的类型错误。
  • 附带冗余问题:while循环的判断条件已经是cursor is not None,循环内部的if cursor is None: break判断完全多余;首次请求后的resp.json()调用没有赋值,属于无效代码;代理字典重复定义了http键,导入语句重复引入了json模块。
修复代码
import requests
import json
import time

proxies = {"http": "http://88.198.50.103:8080"}

def jprint(obj):
    text = json.dumps(obj, sort_keys=True, indent=4)
    print(text)

user_id = input("What is the user ID: ")
URL = f"https://badges.roblox.com/v1/users/{user_id}/badges"
data = []
payload = {"limit": 100, "sortOrder": "Asc"}
resp = requests.get(URL, params=payload)
blob = resp.json()
data.extend(blob["data"])
cursor = blob["nextPageCursor"]

while cursor is not None:
    print("Getting ids")
    time.sleep(0)
    payload.update({"cursor": cursor})
    resp = requests.get(URL, params=payload, proxies=proxies)
    blob = resp.json()
    data.extend(blob["data"])
    cursor = blob["nextPageCursor"]

id_list = [each['id'] for each in data]
print(id_list)

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:54:03