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

Selenium在while循环翻页时无法更新driver url的问题咨询

Selenium自动翻页执行数据采集方案

问题根因

  • 核心错误是代码末尾driver = driver.current_url语句:原本driver是Selenium WebDriver实例对象,该语句将其强制覆盖为字符串类型的URL,导致后续无法调用driver相关方法,同时触发变量作用域报错
  • 直接将元素查找语句放在while判断条件中,当下一页按钮不存在时会直接抛出NoSuchElementException异常,无法正常终止循环
  • 无需手动更新driver状态:点击下一页按钮后,driver会自动同步当前页面的所有状态,包括current_url、页面DOM结构等,不需要手动修改driver本身
  • 原有逻辑漏了首页的数据采集,进入循环后直接点击下一页,第一页的get_data没有执行

可运行修改后代码

import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException

PATH = '/Applications/chromedriver'
driver = webdriver.Chrome(PATH)

def moving_pages():
    # 打开首页
    driver.get('https://link-page-1')
    while True:
        # 先采集当前页数据
        get_data(driver.current_url)
        try:
            # 查找下一页按钮
            button = driver.find_element_by_class_name('next-page-btn')
        except NoSuchElementException:
            # 找不到按钮就终止循环
            break
        # 点击下一页
        button.click()
        # 等待页面加载完成,可根据实际情况调整等待时间,或者替换成显式等待更稳定
        time.sleep(4)

# 调用函数执行
moving_pages()
# 所有页面采集完成后关闭driver
driver.quit()

优化建议(可选)

  • 可以将固定时长的time.sleep(4)替换为Selenium显式等待,等待页面指定元素加载完成后再执行采集,避免网络波动导致的采集失败
  • 如果页面跳转后URL变化有规律,也可以增加URL变更校验逻辑,避免点击按钮后页面未跳转就执行采集的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:54:02