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

如何用Power Query提取网站未完全加载的完整表格?

解决Power Query提取需点击“Load More”的完整表格问题

这类网站的“Load More”按钮一般通过AJAX异步请求加载数据,URL不会变化,直接用Power Query的常规网页抓取只能拿到初始加载的内容,得通过以下方式获取全量数据:

方法1:抓取后台API接口(推荐)

这类网站的“Load More”本质是向后台接口发送分页请求,返回JSON格式的新增数据,直接抓这个接口就能拿到全量内容:

  • 打开目标网站,按F12调出开发者工具,切换到「网络」标签页
  • 清空现有请求记录,点击“Load More”按钮,观察新出现的XHR/Fetch类型请求
  • 找到返回表格数据的请求,复制它的完整URL,同时留意请求参数里的分页标识(比如page、offset、limit,代表页码、起始位置、每页条数)
  • 新建Power Query查询,选「从其他源」>「从Web」,粘贴复制的API URL
  • 如果需要多页数据,用Power Query生成页码列表(比如List.Numbers(1, 6)表示1到6页),再用List.Transform批量替换URL里的页码参数,生成所有请求URL,最后用Table.Combine合并所有返回的表格数据
  • 将返回的JSON数据转成表格,展开嵌套字段,匹配原网页表格结构后加载到Excel

方法2:VBA模拟点击加载全量数据

如果API接口参数复杂难以抓取,可先用VBA模拟点击“Load More”,把所有数据加载到浏览器后再用Power Query抓取:

  1. 打开Excel,按Alt+F11打开VBA编辑器,插入模块,粘贴以下代码(替换目标URL和按钮的CSS选择器):
Sub LoadAllTableData()
    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.Navigate "你的目标网页URL"
    
    ' 等待页面初始加载完成
    Do While ie.Busy Or ie.ReadyState <> 4
        DoEvents
    Loop
    
    ' 循环点击Load More按钮,直到按钮消失
    Do
        On Error Resume Next
        ' 替换成页面上Load More按钮的CSS选择器,比如".load-more-btn"
        ie.Document.querySelector(".load-more-btn").Click
        On Error GoTo 0
        ' 等待数据加载,根据网站速度调整等待时间
        Application.Wait Now + TimeValue("00:00:02")
    Loop Until ie.Document.querySelector(".load-more-btn") Is Nothing
    
    ' 此时页面已加载全量数据,可关闭浏览器后用Power Query抓取
    ie.Quit
    Set ie = Nothing
End Sub
  1. 运行VBA代码,等待所有数据加载完成后,再用你原来的Power Query步骤抓取网页表格即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:12:07