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

Selenium处理动态分页问题:网页存档爬虫无法连续翻页

解决Web Archive爬虫分页跳转失效问题

问题根源

分页元素的ID是动态生成的,每一页都会变化,固定XPath/CSS选择器无法适配所有页面。你之前尝试的两种方法存在语法错误或元素定位逻辑问题,导致无法持续跳转。

修正方案

使用稳定的元素特征定位下一页按钮,比如:

  • 按钮的rel="next"属性(分页组件的标准标识)
  • 分页栏的通用类名或按钮文本

正确的定位方式

  1. 通过rel属性定位(最稳定):
a[rel="next"]

你之前的写法存在引号嵌套错误,导致选择器失效。

  1. 通过按钮文本定位:
//a[contains(text(), 'Next')]

修改后的完整代码

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, StaleElementReferenceException
import time

URL = "https://web.archive.org/web/20230203123249/https://www.coinpeople.com/forum/64-new-member-information-and-welcome33/"

driver = webdriver.Chrome()
driver.get(URL)

try:
    while True:
        # 滚动页面到底部
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(2)
        
        # 此处添加爬取当前页面信息的代码
        print("正在爬取当前页面...")
        # 示例:爬取帖子标题
        # posts = driver.find_elements(By.CSS_SELECTOR, "h4.ipsDataItem_title a")
        # for post in posts:
        #     print(post.text)
        
        # 等待并点击下一页
        try:
            next_page = WebDriverWait(driver, 10).until(
                EC.element_to_be_clickable((By.CSS_SELECTOR, "a[rel='next']"))
            )
            next_page.click()
            # 等待页面加载完成
            time.sleep(3)
        except (TimeoutException, StaleElementReferenceException):
            print("没有更多页面了,结束爬取。")
            break
finally:
    driver.quit()

关键修改点

  • 替换固定XPath为a[rel='next']CSS选择器,该属性不会随页面动态变化
  • 将滚动、爬取逻辑放入循环,确保每一页都执行相同操作
  • 添加StaleElementReferenceException捕获,避免页面刷新后元素失效的问题
  • 使用try-finally确保浏览器正常关闭

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:17:16