ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何使用VBA获取网页JAVASCRIPT的对象集合的变量,并导出成为数组

如何使用VBA获取网页JAVASCRIPT的对象集合的变量,并导出成为数组

作者:绿色风 分类: 时间:2022-08-17 浏览:97
楼主
xmyjk
Q:如何获取http://www.zhcw.com/ssq/,如动画示的数据系列。

 
即导出每期开奖的相关数据。

A:
难点1:数据存在于网页的JAVASCRIPT的变量中,如图
 
需要把他们导出来。

难点2:数据是在JS里面的变量,是以对象集合的形式存在的,需要转换后才能输出。

 

难点3:也是最难的,对象集合变量里面的每个对象的名称,是以数字形式存在的,VBA中,不允许变量名或者属性或者方法等以数字的形式存在的(例如X.111,是不合法的)。因此,采用CALLBYNAME的方法去提取。
  1. Option Explicit
  2. Sub GetData()
  3.     Dim v() As String, a, b, myjs, aa, bb, ARR(), BRR(), qh, i&
  4.     Dim str As String
  5.     [a1].CurrentRegion.Clear
  6.     With CreateObject("Microsoft.XmlHttp") 'xmlhttp对象截取JS脚本变量数据
  7.         .Open "POST", "http://www.zhcw.com/ssq/", False
  8.         .setRequestHeader "Content-Type", "application/json; charset=UTF-8"
  9.         .send
  10.         v = Filter(Filter(Split(Trim(.responsetext), vbCrLf), "var", True), "!", False)
  11.     End With
  12.     Set myjs = CreateObject("MSScriptControl.ScriptControl") '调用ScriptControl对象将提取的变量文本运算形成对象集合
  13.     str = v(0) & v(1) & v(2)
  14.     myjs.Language = "javascript"
  15.     myjs.addcode (str) '输入
  16.     Set a = myjs.CodeObject.kjData '把开奖数据输出
  17.     Set b = myjs.CodeObject.zjData
  18.     qh = Split(myjs.CodeObject.issueNos, ",") '取得期号
  19.     ReDim ARR(UBound(qh)) '构造输出数组
  20.     ReDim BRR(UBound(qh))
  21.     For i = 0 To UBound(qh)
  22.        Set aa = CallByName(a, qh(i), VbGet) '按期号,从对象集合里面提取每一期的对象
  23.        Set bb = CallByName(b, qh(i), VbGet)
  24.        ARR(i) = aa.kjZNum '获取每一期中的数据属性
  25.        BRR(i) = "销售额:" & bb.tzMoney & "一等奖奖金:" & bb.oneJ & "奖池累计金额" & bb.jcMoney
  26.     Next
  27.     [a1].Resize(UBound(qh) + 1, 1) = Application.Transpose(qh) '输出到单元格
  28.     [b1].Resize(UBound(qh) + 1, 1) = Application.Transpose(ARR)
  29.     [c1].Resize(UBound(qh) + 1, 1) = Application.Transpose(BRR)
  30. MsgBox "ok!"
  31. End Sub

开奖数据提取.rar
2楼
xyf2210
学习师傅
3楼
水星钓鱼
还是看不懂
4楼
liucq
网站的URL和变量都变了
5楼
水星钓鱼
网络提取就是有这个不好,一旦链接变了就失效了。
6楼
老糊涂

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap