如何使用VBA爬取SSI iboard站点HOSE板块的实时数据
问题根因
你当前请求的是站点的静态HTML文件,该站点的交易数据为前端动态渲染生成,静态页面仅包含框架代码,没有实际业务数据,所以直接GET页面无法获取到目标内容。
调整步骤
- 更换请求地址为站点实际返回数据的API接口,HOSE板块的实时数据接口为
https://iboard.ssi.com.vn/dchart/api/1.0/default/securities?market=HOSE - 为请求添加符合浏览器规则的请求头,绕过站点基础反爬校验
- 处理返回的JSON格式数据,提取需要的字段信息
修正后可运行的代码示例
Sub Get_ssi_data() Dim xmlhttp As Object ' 调用高版本XMLHTTP组件,兼容性和稳定性更好 Set xmlhttp = CreateObject("MSXML2.XMLHTTP.6.0") Dim apiUrl As String apiUrl = "https://iboard.ssi.com.vn/dchart/api/1.0/default/securities?market=HOSE" xmlhttp.Open "GET", apiUrl, False ' 添加必要请求头,模拟正常浏览器请求 xmlhttp.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" xmlhttp.setRequestHeader "Referer", "https://iboard.ssi.com.vn/" xmlhttp.setRequestHeader "Accept", "application/json" xmlhttp.send ' 输出JSON格式的返回数据 Debug.Print xmlhttp.responseText End Sub
额外注意事项
- VBA原生不支持JSON解析,可引入第三方JSON解析库处理返回的结构化数据,提取股价、交易量等你需要的字段
- 站点有访问频率限制,不要设置过短的轮询间隔,避免IP被临时限制访问
内容的提问来源于stack exchange,提问作者Cao Doremi
相关产品推荐
相关产品推荐

