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

使用Excel VBA抓取网页表格如何仅提取目标内容排除多余数据

VBA提取指定网页表格的修改方案

问题根因

你当前的代码会遍历页面内所有<table>标签并全部写入工作表,因此会导入页面上所有无关的表格内容,只需调整表格定位逻辑,只抓取目标表格即可。

调整后的代码

Sub Web_Table()
    Dim HTMLDoc As New HTMLDocument
    Dim objTable As Object
    Dim lngRow As Long
    Dim lngCol As Long
    Dim ActRw As Long
    Dim objIE As InternetExplorer
    
    ' 初始化IE对象
    Set objIE = New InternetExplorer
    objIE.Navigate "https://www.eia.gov/dnav/pet/hist/LeafHandler.ashx?n=PET&s=EMD_EPD2DXL0_PTE_NUS_DPG&f=W"
    
    ' 等待页面加载完成
    Do Until objIE.ReadyState = 4 And Not objIE.Busy
        DoEvents
    Loop
    Application.Wait (Now + TimeValue("0:00:03")) '等待JS渲染完成
    HTMLDoc.body.innerHTML = objIE.Document.body.innerHTML
    
    ' 清空目标工作表旧数据
    ThisWorkbook.Sheets("Sheet1").Cells.Clear
    
    ' ==========核心修改:直接定位目标表格,无需遍历所有表格==========
    ' 方法1:如果你已经知道目标表格是页面中第N个表格(索引从0开始),直接指定索引
    Set objTable = HTMLDoc.getElementsByTagName("table")(2) ' 你可以先调试确定正确的索引
    
    ' 方法2:如果表格有唯一id/class,用querySelector定位更稳定,比如表格class为data-grid就写:
    ' Set objTable = HTMLDoc.querySelector("table.data-grid")
    ' ============================================================
    
    ' 判断表格是否存在,避免报错
    If Not objTable Is Nothing Then
        For lngRow = 0 To objTable.Rows.Length - 1
            For lngCol = 0 To objTable.Rows(lngRow).Cells.Length - 1
                ThisWorkbook.Sheets("Sheet1").Cells(lngRow + 1, lngCol + 1) = objTable.Rows(lngRow).Cells(lngCol).innerText
            Next lngCol
        Next lngRow
    Else
        MsgBox "未找到目标表格,请检查页面结构或定位参数"
    End If
    
    ' 释放资源
    objIE.Quit
    Set objIE = Nothing
    Set HTMLDoc = Nothing
End Sub

调试技巧

如果不知道目标表格的索引,可以在获取所有表格后加一段调试代码,在立即窗口输出所有表格的特征,找到对应索引:

Set allTables = HTMLDoc.getElementsByTagName("table")
For i = 0 to allTables.Length - 1
    Debug.Print "索引:" & i & ",首行内容:" & allTables(i).Rows(0).innerText & ",行数:" & allTables(i).Rows.Length
Next i

注意事项

  • 运行前请在VBA编辑器的「工具」-「引用」中勾选 Microsoft HTML Object Library 和 Microsoft Internet Controls
  • 如果后续页面结构变动,只需重新确认目标表格的索引或选择器,替换对应定位参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 01:48:02