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
相关产品推荐
相关产品推荐

