使用Selenium下载文件翻页后如何重置遍历循环计数
实现翻页后重置遍历计数的解决方案
原有代码使用固定范围的for循环无法灵活重置遍历计数,替换为手动控制变量的while循环即可满足需求,修改后代码如下:
import time from selenium.common.exceptions import NoSuchElementException # 初始化遍历计数、当前页码、最大翻页上限(可按需调整,防止死循环) x = 1 current_page = 1 max_allow_page = 20 while current_page <= max_allow_page: try: xpath = f'//*[@id="ctl00_CPH_Main_ctl00_RadGridFacturen_ctl00__{x}"]/td[10]/input' time.sleep(2) driver.find_element_by_xpath(xpath).click() # 找到元素后计数+1,继续遍历当前页下一个 x += 1 except NoSuchElementException: print('当前页元素遍历完毕,尝试跳转下一页') try: nextPage = driver.find_element_by_xpath('//*[@id="ctl00_CPH_Main_ctl00_RadGridFacturen_ctl00"]/tfoot/tr/td/table/tbody/tr/td/div[3]/input[1]') nextPage.click() # 翻页后重置遍历计数,从新页第1个元素开始 x = 1 current_page += 1 # 预留页面加载时间,可根据网络情况调整 time.sleep(3) except NoSuchElementException: print('已到达最后一页,全部任务执行完成') break
核心逻辑说明
- 替换固定范围的for循环为while结构,自行控制遍历计数变量和页码变量的更新
- 每次触发当前页元素找不到的异常时,先执行翻页操作,翻页成功后直接将遍历计数
x重置为1,即可实现新页面从第1个元素开始遍历 - 新增下一页按钮不存在的异常捕获,到达最后一页时自动终止程序,避免进入死循环
- 新增最大翻页上限参数,可根据实际业务需要调整,进一步规避死循环风险
内容的提问来源于stack exchange,提问作者BillNyes
相关产品推荐
相关产品推荐

