为何Python提取ACCESSORIES字段报索引越界,其他字段运行正常?
问题根因
你遇到的IndexError: index 0 is out of bounds for axis 0 with size 0报错的核心原因是:你爬取的99个IPFS链上元数据中,存在至少1个条目的attributes数组里没有trait_type等于ACCESSORIES的项,筛选后的df1是空DataFrame,取values[0]自然会触发索引越界。
你补充提到的「运行到append行之前df和df1都存在ACCESSORIES对应条目」是因为你只验证了部分page的返回结果,没有覆盖全部99个page,缺失ACCESSORIES属性的特殊page没有被你测试到。
两段代码的差异
两段代码唯一的区别只有筛选条件的trait_type取值不同:
- 报错版本筛选的是
ACCESSORIES,你爬取的部分NFT元数据没有配置配饰属性,导致空筛选结果 - 正常运行版本筛选的是
BACKGROUND/SHOES,你爬取的99个NFT全部配置了背景、鞋子属性,每一次筛选都能拿到至少1条结果,所以不会触发越界
修复方案
可以加空值判断,避免索引越界,示例逻辑如下:
# 其他代码保持不变,仅替换append部分的逻辑即可 df1 = df[df['trait_type']=='ACCESSORIES'] if not df1.empty: accessories.append(df1['value'].values[0]) else: # 可根据需求选择填默认值,或者直接跳过该条 accessories.append(None)
内容的提问来源于stack exchange,提问作者intermarketics
相关产品推荐
相关产品推荐

