excel网页数据抓取vba(STM32静态网页与爬虫操作的演示程序的核心命令解释)

优采云 发布时间: 2021-10-04 22:31

  excel网页数据抓取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扩展

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线