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

Python基于Selenium+Chromedriver开发的爬虫卡在倒数第二页循环问题求助

代码修复方案

核心问题分析

  • 原代码捕获到next按钮不存在的异常后仅执行pass,页面停留在当前页不再跳转,但page变量仍持续累加,导致一直重复抓取当前页面
  • 原有终止条件if page < 1逻辑完全不生效,page从1开始自增永远不会满足该条件,最终进入无限循环

修改后的代码

def extract(page):
    while True:
        pc = 1
        print ("Extracting Page: " + str(page))
        while pc <= 10:
            colpageprod(pc)
            browser.back()
            waitSmall()
            pc+=1
        try:
            browser.find_element_by_xpath('//li[@class="next"]/a').click()
            waitSmall()
        except:
            # 找不到next按钮时直接终止爬取循环
            break
        page +=1

try:            
    extract(1)

关键修改说明

  • 删除了无效的终止判断逻辑if page < 1: break
  • 将捕获异常后的pass改为break,找不到next按钮时直接终止外层爬取循环,避免死循环
  • 移除了冗余的np变量赋值,click()方法本身无返回值,原有赋值操作无意义

可选优化(适配next按钮置灰场景)

如果部分站点next按钮元素存在但处于不可点击状态,可以增加属性判断逻辑:

try:
    next_btn = browser.find_element_by_xpath('//li[@class="next"]/a')
    # 可根据站点实际结构调整判断条件,比如判断是否包含disabled类名、disabled属性等
    if "disabled" in next_btn.get_attribute("class") or next_btn.get_attribute("disabled"):
        break
    next_btn.click()
    waitSmall()
except:
    break

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 23:45:01