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

使用Selenium无法点击下一页且未知总页数的爬取问题

解决AskLaila翻页爬取问题

你的代码核心问题是固定循环次数+未判断下一页按钮状态,到第5页失效大概率是页面加载延迟或者下一页按钮状态变化(比如变成不可点击)导致的。要实现未知总页数的遍历,核心是每次爬取后检查是否还有可点击的下一页按钮,直到没有为止。

修改后的代码

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 TimeoutException, NoSuchElementException

dist = []

def extract_url():
    # 等待当前页的结果链接加载完成,避免提前操作
    WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located((By.XPATH, "//h2[@class='resultTitle']//a"))
    )
    # 提取当前页所有经销商链接
    urls = driver.find_elements(By.XPATH, "//h2[@class='resultTitle']//a")
    for url in urls:
        dist.append(url.get_attribute("href"))
    
    # 滚动到底部,确保下一页按钮完全加载
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
    
    try:
        # 等待下一页按钮可点击,排除已禁用的按钮(最后一页的按钮通常会加disabled属性)
        next_btn = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.XPATH, "//li[@class='btnNextPre']//a[not(@disabled)]"))
        )
        next_btn.click()
        # 等待页面跳转完成:直到当前页的第一个链接失效,说明新页面已加载
        WebDriverWait(driver, 10).until(
            EC.staleness_of(urls[0])
        )
        return True  # 存在下一页,继续循环
    except (TimeoutException, NoSuchElementException):
        # 没有可点击的下一页按钮,终止循环
        return False

# 初始化浏览器(根据你的浏览器类型调整,比如Firefox)
driver = webdriver.Chrome()
driver.get("https://www.asklaila.com/search/Delhi-NCR/-/book-distributor/")

# 循环爬取所有页面
while True:
    has_next_page = extract_url()
    if not has_next_page:
        break

# 关闭浏览器,释放资源
driver.quit()

# 查看爬取结果
print(f"共获取到 {len(dist)} 个经销商链接")

关键优化点

  • 等待机制替代硬操作:用WebDriverWait等待元素加载,解决页面加载延迟导致的元素找不到问题(这是你第5页后失效的主要原因)
  • 动态判断下一页:通过not(@disabled)筛选可点击的按钮,最后一页的按钮会被禁用,此时自动退出循环
  • 页面跳转验证:用staleness_of确保页面完全跳转后再继续爬取,避免重复抓取同一页内容
  • 异常捕获:处理按钮不存在或超时的情况,避免程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:05:48