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

如何使用Pandas读取点击下一页后URL无更新的动态HTML表格数据

问题解决方法

原因说明

你遇到的是典型的动态分页站点爬取问题:网站的下一页内容是通过AJAX异步加载的,点击下页时浏览器不会跳转整个页面,URL自然不会变化,而pandas.read_html()只能获取单次HTTP请求返回的静态HTML内容,自然只能拿到第一页数据。

可行实现方案

这里给两种常用的解决路径,你可以根据自己的需求选择:

方案1:用Selenium模拟浏览器交互(上手简单)

直接模拟真人点击下页的操作,拿到每一页渲染完成后的完整HTML,再交给Pandas解析即可。

依赖安装

首先安装需要的库和浏览器驱动:

pip install selenium
# 注意还要下载和你Chrome版本对应的ChromeDriver,放到系统路径或者脚本同级目录

示例代码

import pandas as pd
import time
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

# 初始化浏览器
driver = webdriver.Chrome()
driver.get('https://www.wowprogress.com/')
all_dfs = []
max_page = 10 # 你需要爬取的最大页码,按需修改

for page in range(max_page):
    # 等待表格加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, 'table'))
    )
    # 解析当前页表格
    current_html = driver.page_source
    current_tables = pd.read_html(current_html)
    # 取第一个你需要的表格
    all_dfs.append(current_tables[0])
    
    # 找下一页按钮,判断是否可点击
    try:
        # 实际的选择器可以打开F12自己定位下页按钮调整
        next_btn = driver.find_element(By.CSS_SELECTOR, 'a[rel="next"]') 
        if 'disabled' in next_btn.get_attribute('class') or not next_btn.is_displayed():
            break
        next_btn.click()
        # 留足加载时间,避免爬取太快被封
        time.sleep(2)
    except:
        # 找不到下页按钮说明到最后一页了,退出循环
        break

# 合并所有页的数据
final_df = pd.concat(all_dfs, ignore_index=True)
print(final_df)
driver.quit()

方案2:直接抓异步请求接口(效率更高)

不需要启动浏览器,直接通过浏览器开发者工具抓取下页触发的AJAX请求,构造参数批量获取数据即可,速度比Selenium快很多。
操作步骤:

  1. 打开目标页面,按F12调出开发者工具,切换到「网络」标签,筛选「XHR/ fetch」类型的请求
  2. 点击页面上的下一页按钮,观察新出现的请求,一般请求参数里会包含page、p这类页码参数
  3. 模仿这个请求的头信息和参数,直接用requests库构造请求,拿到返回的HTML后交给pd.read_html()解析即可

注意事项

  • 控制爬取频率,每次请求间隔至少1-2秒,避免给站点服务器造成压力,也防止你的IP被临时封禁
  • 爬取前确认站点的robots规则,确保你的爬取行为符合站点要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:54:04