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

Access VBA Selenium爬虫:NoSuchElementError捕获失效及匹配优化

解决方案:通过检查结果表格存在性替代错误捕获逻辑

核心思路

不再依赖捕获Err.Number=7(元素未找到错误),而是直接使用FindElementsByXPath(复数形式)获取目标结果表格的元素集合。该方法在元素不存在时不会抛出错误,仅返回空集合,通过判断集合数量是否大于0即可确定是否匹配成功。

修改后的代码实现

将原报错的代码行替换为以下逻辑:

Dim eleCollection As Selenium.WebElements
Set eleCollection = WD.FindElementsByXPath("//*[@id='eligibility']/div[2]/table[3]/tbody/tr[3]/td/table/tbody/tr[2]/td[2]")

If eleCollection.Count > 0 Then
    ' 匹配成功:读取MBI数据并写回Access
    Dim mbiValue As String
    mbiValue = eleCollection(1).Text ' Selenium集合索引从1开始
    ' 此处添加写回Access字段的代码
Else
    ' 无匹配:标记当前记录并跳转至下一条
    ' 此处添加标记无匹配的逻辑(如更新Access对应字段)
    ' 执行跳转至下一条记录的代码
End If

关键说明

  • FindElementsByXPath返回WebElements集合,无论元素是否存在都不会触发运行时错误,彻底解决原错误捕获逻辑仅首次生效的问题。
  • 需确保使用的XPath严格对应成功匹配时显示的结果表格元素,避免因页面结构微调导致判断失效。
  • 若需进一步验证表格内是否包含有效数据,可在Count>0的分支中额外检查元素文本内容是否为空。

整体代码调整建议

移除原有的On Error Resume Next或On Error GoTo错误处理块,替换为上述集合判断逻辑,确保流程稳定且无需依赖错误捕获机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:45:04