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

VBA提取网页嵌套Div商品价格:querySelectorAll函数无法正常工作

解决VBA获取Skinport商品价格的问题

问题根源

你的代码里querySelectorAll失效主要有两个原因:

  • 动态内容加载:Skinport的商品价格是通过JavaScript动态渲染的,MSXML2.XMLHTTP只能获取页面的静态HTML源码,拿不到JS加载后的实际价格数据。
  • 代码本身的小问题:数组MyValue()未初始化就直接赋值MyValue(1),会触发下标越界错误;另外querySelectorAll使用Item(1)是取第二个匹配元素,大概率不符合你要获取首条价格的需求。

修正方案(使用IE处理动态渲染内容)

改用IE浏览器加载页面,等待JS渲染完成后再提取价格:

Sub Update_Price()
    Dim Webpage As String
    Dim ie As Object
    Dim priceElement As Object
    
    ' 从单元格读取目标页面URL
    Webpage = Worksheets(2).Cells(2, 5).Value
    
    ' 初始化IE对象
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = False ' 设为True可查看页面加载过程
    ie.Navigate Webpage
    
    ' 等待页面完全加载(含JS渲染)
    Do While ie.Busy Or ie.ReadyState <> 4
        DoEvents
    Loop
    
    ' 定位价格元素(注意类名大小写与页面一致)
    Set priceElement = ie.Document.querySelector(".ItemPage-value .Tooltip-link")
    
    ' 将价格写入指定单元格
    If Not priceElement Is Nothing Then
        Worksheets(2).Cells(2, 12).Value = priceElement.innerText
    Else
        Worksheets(2).Cells(2, 12).Value = "未找到价格"
    End If
    
    ' 清理资源
    ie.Quit
    Set ie = Nothing
End Sub

额外说明

  • 若不想用IE,可通过抓包找到Skinport的商品价格API接口,直接用MSXML2.XMLHTTP请求接口获取JSON数据并解析价格,这种方式效率更高,但需要自行分析接口地址与参数。
  • 确保类名拼写完全匹配页面:原页面中价格所在类为ItemPage-value(小写v),代码中需保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:55:20