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

使用VBA将亚马逊网页提取数据导出为JSON格式的实现问题

亚马逊抓取VBA导出JSON格式修改方案

前置修复说明

你现有代码存在两个基础问题需要先修正,避免运行报错:

  • 缺失IE页面加载等待逻辑,会大概率出现页面未渲染完成就抓取数据的异常
  • 代码中html1变量未定义,属于笔误

实现方案

VBA原生没有内置JSON处理能力,简单场景下可以直接手动拼接JSON字符串,无需额外引用第三方库,适配性最高,修改后的完整代码如下:

Function EscapeJson(str As String) As String
    ' 转义JSON特殊字符,避免格式错误
    EscapeJson = Replace(Replace(str, "\", "\\"), """", "\""")
End Function

Sub 亚马逊数据导出JSON()
    Dim Ie As Object, html As Object, fso As Object, Fileout As Object
    Dim pagen As String, endpage As String, jsonStr As String
    
    Set Ie = CreateObject("InternetExplorer.Application")
    Ie.Visible = True
    Ie.navigate "https://www.amazon.com/s?crid=AQO8JFH64H82&i=merchant-items&k=socks&me=A29M0OOY4LPNOT&qid=1635324852&ref=glow_cls&refresh=1&sprefix=socks%2Caps%2C315&low-price=0.1&high-price=5"
    
    ' 等待页面完全加载
    Do While Ie.Busy Or Ie.readyState <> 4: DoEvents: Loop
    Set html = Ie.Document
    
    ' 提取数据逻辑
    If html.body.innerHTML Like "*a-section a-spacing-small a-spacing-top-small*" _
        And html.body.innerHTML Like "*a-pagination*" Then
        
        pagen = html.getElementsByClassName("a-section a-spacing-small a-spacing-top-small")(0).innerText
        pagen = Replace(pagen, "'", "")
        endpage = html.getElementsByClassName("a-pagination")(0).innerText
        
        ' 拼接JSON字符串
        jsonStr = "{" & vbCrLf & _
            "  ""page_info"": """ & EscapeJson(pagen) & """," & vbCrLf & _
            "  ""pagination_total"": """ & EscapeJson(endpage) & """," & vbCrLf & _
            "  ""crawl_time"": """ & Format(Now(), "yyyy-mm-dd hh:mm:ss") & """" & vbCrLf & _
        "}"
    End If
    
    ' 导出为JSON文件
    Set fso = CreateObject("Scripting.FileSystemObject")
    ' 输出路径和原逻辑一致,仅修改后缀为json
    Set Fileout = fso.CreateTextFile("C:\Data\test" & Format(Now(), "_yyyy-mm-dd_hh-mm") & ".json", True, True)
    Fileout.Write jsonStr
    Fileout.Close
    
    ' 清理资源
    Ie.Quit
    Set Ie = Nothing
    Set html = Nothing
    Set fso = Nothing
    Set Fileout = Nothing
End Sub

修改点说明

  • 新增了EscapeJson工具函数,处理字符串中的特殊字符,保证生成的JSON格式合法
  • 新增了页面加载等待逻辑,避免空值报错
  • 把提取到的字段统一封装为标准JSON结构,你后续需要新增其他提取字段(比如商品标题、价格、ASIN等),只需要按照""键名"": ""值""的格式补充到JSON拼接逻辑中即可
  • 输出文件后缀修改为.json,符合JSON文件规范
  • 新增了资源释放逻辑,避免IE进程后台残留

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:06:03