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

Excel VBA结合Selenium循环提取网页表格重复取首表如何解决

问题原因

你的代码核心问题是在循环执行前就固定绑定了第一个id="rank_table"的表格对象到tbl变量,循环过程中没有切换到后续匹配到的表格,因此重复输出第一个表格的次数和表格总数一致。

修正后的代码
Dim bot As New ChromeDriver, tbls As Selenium.WebElements, tbl As Selenium.TableElement, LRow As Long, i As Long

Const sURL As String = "https://www.racingandsports.com/form-guide/thoroughbred/australia/sale/2021-10-06/race-tips"

With bot
    .Get sURL
    ' 先获取所有id为rank_table的元素集合
    Set tbls = .FindElementsById("rank_table")
    
    For i = 1 To tbls.Count
        ' 每次循环绑定当前遍历到的表格
        Set tbl = tbls(i).AsTable
        
        Sheets("Import").Select
        LRow = Cells(Rows.Count, 1).End(xlUp).Row
        
        tbl.ToExcel ThisWorkbook.Sheets("Import").Range("A" & LRow + 2)
    Next i
End With
核心修改点
  • 先通过FindElementsById获取所有符合条件的表格元素集合,存储到tbls变量中
  • 循环过程中每次取当前索引对应的tbls(i)元素转为Table对象,再执行写入操作,保证每次处理的都是不同的表格
  • 去掉了重复的FindElementsById计数调用,直接用集合的Count属性获取表格总数,性能更优

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:09:02