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

Selenium循环点击下一页并收集所有页面URL至列表的实现方法

解决Selenium循环收集分页URL的问题

你之前的代码核心问题有这几个:

  • 没初始化用来存URL的列表,也没执行append操作
  • URL收集时机没处理好,容易漏页
  • 用except:捕获所有异常太宽泛,应该针对性捕获元素不存在的异常
  • 没处理页面加载延迟,可能导致元素找不到的误判

下面是修正后的完整代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException

# 初始化浏览器驱动
driver = webdriver.Chrome()
# 初始化存储URL的列表
page_urls = []

# 打开初始页面(替换成你的目标初始URL)
driver.get("你的初始页面URL")

while True:
    # 先把当前页面URL加入列表
    current_url = driver.current_url
    if current_url not in page_urls:  # 避免重复添加(部分网站最后一页Next按钮点击无反应)
        page_urls.append(current_url)
    
    try:
        # 显式等待Next按钮加载可点击,最多等10秒
        next_btn = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.LINK_TEXT, "Next"))
        )
        next_btn.click()
        # 页面加载慢的话可以加短等待
        # driver.implicitly_wait(2)
    except NoSuchElementException:
        # 找不到Next按钮,说明到最后一页,退出循环
        break

# 输出所有收集到的URL
print("所有页面URL:")
for url in page_urls:
    print(url)

driver.quit()

关键修改说明:

  • 提前初始化page_urls列表,每次循环先存当前页面URL,确保第一页和最后一页都不会遗漏
  • 用WebDriverWait显式等待元素,避免页面未加载完成就查找元素的错误
  • 只捕获NoSuchElementException,不会把其他异常(比如网络错误)当成“到最后一页”处理
  • 增加重复URL判断,防止部分网站最后一页Next按钮仍存在但点击无效的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:10:25