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

如何从非表格结构的Euronext网站提取营收数据至Excel?

用VBA提取Euronext网站非表格形式的营收数据方案

目标网站的内容是通过JavaScript动态渲染的,Excel内置的「获取数据」只能抓取原始HTML源码,因此无法识别到渲染后的营收数据。结合你熟悉VBA的情况,提供两种可行的解决思路:

思路一:使用IE浏览器控件(易上手,适合新手)

通过VBA调用IE浏览器加载页面,等待动态内容渲染完成后,直接定位目标元素提取数据:

步骤1:添加引用

打开VBA编辑器(Alt+F11),依次点击「工具」→「引用」,勾选:

  • Microsoft Internet Controls
  • Microsoft HTML Object Library

步骤2:示例代码

Sub ExtractEuronextRevenue()
    Dim ie As InternetExplorer
    Dim doc As HTMLDocument
    Dim targetElement As Object
    
    '初始化IE对象
    Set ie = New InternetExplorer
    ie.Visible = True '设为False可后台运行
    ie.Navigate "https://live.euronext.com/fr/product/equities/FR0014005AC9-XPAR/company-information"
    
    '等待页面完全加载(包括JS渲染)
    Do While ie.Busy Or ie.ReadyState <> READYSTATE_COMPLETE
        DoEvents
    Loop
    
    '获取页面文档对象
    Set doc = ie.Document
    
    '定位目标营收元素(需自行替换为实际选择器)
    '方法:打开网页按F12,右键选中红色标注的营收数据→「检查」,查看元素的class/id或XPath
    '示例:假设营收数据在class为"financial-value revenue"的元素中
    Set targetElement = doc.querySelector(".financial-value.revenue")
    
    '将数据写入Excel
    If Not targetElement Is Nothing Then
        Sheet1.Range("A1").Value = "年度营收"
        Sheet1.Range("B1").Value = targetElement.innerText
    Else
        MsgBox "未找到目标数据,请检查元素选择器是否正确"
    End If
    
    '清理资源
    ie.Quit
    Set ie = Nothing
    Set doc = Nothing
End Sub

关键说明

元素选择器需要自己确认:用浏览器开发者工具找到目标数据对应的HTML元素,优先用class或id定位,也可以用getElementsByClassName、getElementById等方法。


思路二:直接调用网站API(高效,无浏览器窗口)

动态网站的核心数据通常通过API接口加载,直接抓API比模拟浏览器更高效:

步骤1:找到API接口

  1. 打开目标网页,按F12打开开发者工具→切换到「网络」面板
  2. 刷新页面,筛选「XHR/Fetch」类型的请求
  3. 搜索关键词(如revenue、financial),找到返回营收数据的API请求,复制其URL和请求头

步骤2:示例代码(需配合VBA-JSON库解析数据)

Sub GetRevenueFromAPI()
    Dim xhr As Object
    Dim jsonResponse As String
    Dim jsonObj As Object
    
    '初始化XMLHTTP对象
    Set xhr = CreateObject("MSXML2.XMLHTTP.6.0")
    
    '替换为你找到的API地址
    xhr.Open "GET", "https://api.euronext.com/your-target-api-url", False
    '添加请求头模拟浏览器(避免被反爬)
    xhr.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
    
    '发送请求
    xhr.Send
    
    '处理响应
    If xhr.Status = 200 Then
        jsonResponse = xhr.responseText
        '用VBA-JSON库解析JSON(需先导入库)
        Set jsonObj = JsonConverter.ParseJson(jsonResponse)
        
        '根据JSON结构提取营收数据(需自行调整路径)
        Sheet1.Range("A1").Value = "年度营收"
        Sheet1.Range("B1").Value = jsonObj("data")("financials")("revenue")
    Else
        MsgBox "API请求失败,状态码:" & xhr.Status
    End If
    
    '清理资源
    Set xhr = Nothing
    Set jsonObj = Nothing
End Sub

关键说明

  • 需先导入VBA-JSON库:下载库文件后,在VBA编辑器中导入模块
  • 部分API可能需要携带认证参数(如Cookie),如果请求失败,可复制浏览器的请求头信息补充到代码中

注意事项

  • 网站的HTML结构或API接口可能会更新,若代码失效,需重新定位元素或查找新的API
  • 频繁请求可能触发反爬机制,建议添加适当的延迟(Application.Wait Now + TimeValue("00:00:02"))

内容的提问来源于stack exchange,提问作者Iñaki Vignal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 23:18:15