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

Python爬虫获取页码遇IndexError,如何在if语句中赋值默认值1

错误原因

  • 核心报错来自第七个页面没有匹配到#yw2 a选择器对应的页码元素,pag列表处理后为空,直接访问pag[-1]触发索引越界
  • 原代码的if逻辑完全不生效:既没有给变量赋值,else分支的continue还会直接跳过后续分页链接处理流程
  • 没有处理页码元素无href属性的场景,后续取t['href']时也可能触发报错

修正后代码

final_data = []
for m in range(0, 10):
    df = {'data':[]}
    driver.get(links_countries['links'][m])
    time.sleep(3)
    soup = BeautifulSoup(driver.page_source, 'html5lib')
    pages = soup.select("#yw2 a")
    pag = []
    for p in pages:
        pag.append(p.get_text(strip=True))
    # 过滤空字符串
    pag = [string for string in pag if string]
    # 处理分页总页数:空列表/值小于1都默认设为1
    if not pag or int(pag[-1]) < 1:
        total_page = 1
    else:
        total_page = int(pag[-1])
    print('Page number', total_page)
    
    href = []
    for t in pages:
        # 先判断有没有href属性再收集
        if 'href' in t.attrs and t['href'].strip():
            href.append(t['href'])
    
    # 处理无分页链接的情况,默认用当前页链接
    if not href:
        urls = links_countries['links'][m]
    else:
        urls = "https://www.transfermarkt.co.uk" + href[0]
    print(urls)

额外说明

  • 原代码中p.get_text(strip=True).replace('', '')是冗余写法,strip=True已经可以处理首尾空白,不需要额外替换空字符串
  • 新增了href属性存在性校验,避免部分无href的页码元素导致的KeyError
  • 新增了href列表为空的兜底处理,避免索引越界

内容的提问来源于stack exchange,提问作者me.limes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:45:03