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

VBA Selenium获取同class名第二个表格数据失败求助

解决VBA Selenium提取同class名的第二个表格数据问题

问题核心

你之前的代码两次都用了FindElementByClass(单数方法),这个方法只会返回页面中第一个匹配class的元素,所以第二个循环其实还是在处理第一个表格的数据,自然拿不到第二个表格的内容。你尝试的item(2)无效,是因为单数方法返回的是单个元素,没有集合的索引属性,必须用复数的FindElementsByClass获取所有匹配元素的集合。

修改后的代码

Sub GetData()
    Dim DRow As Long ' 改用Long,避免行数超过Byte的255上限
    Dim DCol As Byte
    Dim WebDrv As New WebDriver
    Dim tr As Object, td As Object
    Dim tables As Object ' 存储所有匹配的表格集合

    WebDrv.Start "Chrome"
    WebDrv.Get "https://stripinfo.be/reeks/strip/11316_Jeremiah_5_Het_eindeloos_experiment"

    ' 用更可靠的显式等待,代替固定时长等待
    WebDrv.Wait 5000 ' 等待5秒,直到元素加载完成
    WebDrv.FindElementByClass("title").WaitDisplayed

    ' 获取页面中所有class为innerDividers的表格
    Set tables = WebDrv.FindElementsByClass("innerDividers")

    ' 提取第一个表格数据(索引从1开始)
    [D7] = WebDrv.FindElementByClass("title").Text
    DRow = 8
    DCol = 4
    For Each tr In tables(1).FindElementByTag("tbody").FindElementsByTag("tr")
        For Each td In tr.FindElementsByTag("td")
            Cells(DRow, DCol).Value = td.Text
            DCol = DCol + 1
        Next td
        DRow = DRow + 1
        DCol = 4
    Next tr

    ' 提取第二个表格数据
    DRow = 15
    DCol = 4 ' 重置列索引,避免数据偏移
    For Each tr In tables(2).FindElementByTag("tbody").FindElementsByTag("tr")
        For Each td In tr.FindElementsByTag("td")
            Cells(DRow, DCol).Value = td.Text
            DCol = DCol + 1
        Next td
        DRow = DRow + 1
        DCol = 4
    Next tr

    WebDrv.Quit ' 关闭浏览器,避免残留进程
End Sub

关键修改点

  • 改用复数方法获取表格集合:用FindElementsByClass代替FindElementByClass,得到所有class为innerDividers的表格,通过tables(1)和tables(2)分别访问第一个和第二个表格(Selenium VBA的元素集合是1-based索引,不是0-based)。
  • 修复列索引重置问题:第二个循环重置DCol为4,避免数据从上次结束的列开始写入。
  • 替换固定等待为显式等待:WebDrv.Wait和WaitDisplayed比Application.Wait更可靠,能适应不同的页面加载速度。
  • 变量类型优化:把DRow从Byte改为Long,避免当表格行数超过255时出现溢出错误。
  • 添加浏览器关闭操作:代码末尾加入WebDrv.Quit,防止Chrome进程后台残留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:24:51