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

使用VBA获取Axie网站网页元素无法返回正确结果求助

VBA抓取Axie网站基因数据代码问题排查及修正

原代码核心问题

  • 异步请求未等待响应完成:WinHttpRequest.Open 第三个参数设为True代表异步发送请求,代码执行到send后不会等待服务器返回结果,直接读取responseText只能拿到空值或不完整内容
  • 调用了不存在的DOM方法:MSHTML.HTMLDocument对象没有FindElementByClass方法,该方法属于Selenium类库,原生HTML文档查询类名元素要使用getElementsByClassName
  • 返回值逻辑错误:原代码最后返回的是整个HTML文档的文本,而非指定类名元素内的目标内容
  • 缺少必要的状态校验:没有校验HTTP请求响应状态,请求出错的情况下无法定位问题

修正后的代码

Function scrape2(id As String) As String
    On Error GoTo ErrHandler
    Dim objhttp1 As WinHttp.WinHttpRequest
    Dim doc1 As MSHTML.HTMLDocument
    Dim targetNodes As Object, node As Object, resultText As String
    
    ' 初始化请求对象,使用同步请求
    Set objhttp1 = New WinHttp.WinHttpRequest
    objhttp1.Open "GET", "https://www.axie.tech/axie-pricing/" & id, False ' 第三个参数设为False启用同步
    objhttp1.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    objhttp1.send
    
    ' 校验请求是否成功
    If objhttp1.Status <> 200 Then
        scrape2 = "请求失败,状态码:" & objhttp1.Status
        Exit Function
    End If
    
    ' 解析HTML
    Set doc1 = New MSHTML.HTMLDocument
    doc1.body.innerHTML = objhttp1.responseText
    
    ' 查询目标类名元素
    Set targetNodes = doc1.getElementsByClassName("axie-pricing_decodedGenesCapsule__m9R-C")
    If targetNodes.Length = 0 Then
        scrape2 = "未找到目标元素"
        Exit Function
    End If
    
    ' 拼接元素内的文本内容
    For Each node In targetNodes
        resultText = resultText & node.innerText & vbCrLf
    Next
    ' 去掉末尾多余换行
    scrape2 = Left(resultText, Len(resultText) - 2)
    
    Exit Function
ErrHandler:
    scrape2 = "运行出错:" & Err.Description
End Function

使用说明

调用时传入参数373595即可返回你预期的基因列表内容,使用前请确保你已经在VBA编辑器的「工具-引用」中勾选了「Microsoft WinHTTP Services, version 5.1」和「Microsoft HTML Object Library」两个依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:06:03