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

Python开发Discord命令爬虫获取Footshop尺码时遇索引越界错误求助

解决Footshop爬虫尺码列表的IndexError问题

你的代码存在几个核心问题,直接导致了索引越界错误,以下是问题分析和修正方案:

问题分析

  1. 未定义变量X:代码中直接使用X作为列表索引,但从未定义过这个变量,会先引发NameError,后续逻辑也完全错误。
  2. 错误处理列表元素类型:item['sizeSets']['Men']['sizes']是字典列表,每个元素包含eur、stock等字段,你试图将单个字典转为int(size1 = int(item['sizeSets']['Men']['sizes'][X])),不符合数据结构,会引发TypeError。
  3. 循环逻辑错误:即使前面的问题修复,count <= len(size1)的循环条件会导致索引越界——列表索引从0开始,长度为n的列表最大索引是n-1,用<=会访问到不存在的索引。
  4. 错误提取单个尺码:size = item['sizeSets']['Men']['sizes'][X]['eur']只取了单个尺码值,而非整个尺码列表,后续size[count]会因为size是字符串/数字而非列表,引发IndexError。

修正后的代码

根据API返回的尺码列表结构(字典数组),重新编写逻辑:

def searchsizefootshop(size_id):
    item = searchfootshop(size_id)
    
    # 安全获取男士尺码列表,避免键不存在的KeyError
    men_sizes = item.get('sizeSets', {}).get('Men', {}).get('sizes', [])
    if not men_sizes:
        print("无可用男士尺码数据")
        return
    
    # 遍历所有尺码,提取eur和库存信息
    for size_info in men_sizes:
        eur_size = size_info.get('eur')
        stock_count = size_info.get('stock', 0)  # 对应API中的库存字段
        print(f"尺码(EUR): {eur_size}, 库存: {stock_count}")

searchsizefootshop('hGZrRYMB3xHSyCfZ4BFw')

关键修正点

  • 使用dict.get()方法获取嵌套字段,避免因键不存在引发的KeyError,提升代码健壮性。
  • 直接遍历尺码列表,无需手动计数循环,彻底避免索引越界问题。
  • 正确提取每个尺码的eur和库存字段,匹配API返回的数据结构。
  • 提前处理尺码列表为空的情况,避免无效遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:50:22