excel网页数据抓取vba(STM32静态网页与爬虫操作的演示程序的核心命令解释)
优采云 发布时间: 2021-10-04 22:31excel网页数据抓取vba(STM32静态网页与爬虫操作的演示程序的核心命令解释)
b。然后处理响应并将其存储为相应的VBA对象
实际上,与爬虫操作相关的响应返回内容有四种:静态网页、JSON、XML和普通字符串。静态web页面和XML都可以通过DOM解析进行操作,xlminer对应于domtolist方法
' http request
' @return 字符串或是文档对象
' @param url url资源地址
' @param data 所传递参数
' @param asText 返回字符串或文档对象
' @param verb 请求类型 默认POST
Private Function post(ByVal url As String, Optional ByVal data As String, Optional ByVal asText As Boolean = False, Optional ByVal verb As String = "POST")
' 将文档解析为Lists对象
' @return 抽取目标对象 Lists
' @param query CSS选择器
' @param doc post函数所返回的文档对象
' @param elementAsArray 是否为两层嵌套对象 如 ,如果直接读取td,则无法保留其tr的从属结构, 或是 需要进一步分隔其中的字符串
' @param childQuery 第二层嵌套对象的CSS选择器
' @param tabSep 如果没有指定第二选择器,以tab或enter分隔
Private Function domToList(ByRef Query As String, ByRef doc As MSHTML.HTMLDocument, Optional ByVal elementAsArray As Boolean = False, Optional ByVal childQuery As String, Optional ByVal tabSep As Boolean = False) As Lists
字符串类型没有固定的模式,但解析起来比较清楚
最后是JSON解析。请参考JS类文件
function parserJSON(s){ return eval('(' + s + ')');}
返回值是一个JS对象。使用activexobject将JS对象转换为字典对象/将JS数组转换为VBA数组
var dict = new ActiveXObject('Scripting.Dictionary');
具体操作方法请参考随附的样本文件
下载地址
更新了对64位office的完美支持。之后为了适应Mac和vb7,用原生VBA重写了JSON解析库和字典库
c。处理并显示爬网结果
在本例中,将股票代码填入D4,然后单击按钮立即提取报告数据
演示程序的核心命令解释如下
' fs 读取报表数据, code股票代码, 2018 为年份,4指第四季度,fsType.BALANCE_STMT 指定资产负债表,
m.fs(code, 2018, 4, fsType.BALANCE_STMT).toRng .Cells(2, 1)
如果您感兴趣,您可以自己尝试其他参数
3.JS类文件与Excel VBA与JavaScript的交互
VBA中JS数据和程序的无缝调用为VBA的扩展提供了无限的可能性。在GitHub示例文件中,我展示了使用VBA从underline.js库调用函数的操作。p>
' load underscore.js
Call j.loadLib("js/underscore.js")
' load custom js code
Call j.loadLib("js/main.js")
' call the myzipp function in main.js
arr = j.js.run("myzipp", Array(1, 2, 3), Array("a", "b", "c"))
VBA对象以JSON字符串格式序列化,并通过JS读取,以实现另一个方向的连接。在实践中,d3js可视化项目有许多成功的先例
我对office JavaScript API的看法在前面的文章>中提到过。我深深怀疑JSAPI在现阶段的实用性。JS库是一个非官方的、不完善的替代和补充。VBA和JavaScript的动态结合是我长久以来的愿望。毕竟,scriptcontrol甚至不支持Es5语法。我非常期待这位官员在向后兼容的基础上引入更全面的JavaScript扩展