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

使用BeautifulSoup4选择元素时遇Index out of range错误,需获取指定li的ID

问题修复指南

你的代码里踩了几个坑:

  • 选择器写错了:select('ease ') 是找<ease>标签,但你要的是class为ease的<li>元素,正确写法是 .ease(类选择器必须加.前缀),更严谨的话用 li.ease 直接定位li元素。
  • 属性名不匹配:你代码里在获取data-productsize-combid这类属性,但提供的HTML结构里,目标<li>只有id属性,根本不存在这些自定义属性,这会直接触发报错。
  • 空值风险未处理:如果soup.find()找不到目标<ul>,会返回None,后续调用.select()会直接报错,得先确认ul元素存在再继续。

改好的代码:

# 先定位目标ul元素
target_ul = soup.find("ul", {"class": "product-attributes list-inline product-attributes-two-sizes"})
if target_ul:
    # 筛选class为ease的li元素
    ease_li_items = target_ul.select("li.ease")
    for li in ease_li_items:
        # 获取li的id,用get方法避免属性不存在时触发异常
        li_id = li.get("id")
        if li_id:
            print(li_id)
            # 需要存入列表的话添加下面这行
            # id_list.append(li_id)

关键说明:

  • li.ease 作为选择器,精准锁定class包含ease的<li>元素,避免匹配到其他无关元素。
  • 用li.get("id")替代直接li["id"],如果元素没有id属性,get()会返回None,不会抛出KeyError异常。
  • 增加target_ul的非空判断,防止找不到目标ul时后续代码直接报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:50:26