ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: liucqa

[分享] 【网页采集教程】【高级篇】第二课-使用VBA解析JSON格式的网页

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-1-10 16:10 | 显示全部楼层
本帖已被收录到知识树中,索引项:网页交互
老师的课程太高端了,先存着。

非常感谢老师无私分享,以后有问题我一定请教您,祝老师一切顺利。

由衷感谢!

TA的精华主题

TA的得分主题

发表于 2013-5-31 20:51 | 显示全部楼层
很努力  看了一遍,一遍 又一遍......,  
很遺憾...   太深了!   這篇 高級第二課 實在是看不懂!

怎地自己程度竟然差那麼多! 真是怨恨呀!   
夏蟲不可以語冰,  就暫且當一回夏蟲吧!

還是十分感謝 各位前輩 先進 的分享!

TA的精华主题

TA的得分主题

发表于 2013-6-6 08:18 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-6-11 07:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
终于全部下载完毕,这下可以系统的学习了,谢谢楼主的分享
与VBA的表格处理、文件处理相比,这个网页处理麻烦的多,涉及到网络,而网络不是由我说了算,网页结构、语言,网络速度、服务器控制等,增加了编写代码的难度和运行的稳定性
而单位里局域网中各种系统多如牛毛,自动化处理是必需的
所以,只有谢谢了,楼主做了一件大好事

TA的精华主题

TA的得分主题

发表于 2013-6-11 10:29 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-7-14 17:08 | 显示全部楼层
本帖最后由 lqh123108 于 2013-7-14 17:10 编辑
liucqa 发表于 2012-11-4 22:28
前面讲了使用JS脚本语言来解析JSON格式文本的例子,那么到底有没有办法直接采用VBA自己的代码来解析JSON呢? ...


谢谢老师的分亨

这里有个类模块..实在太高深了,,,,不懂..

能不能拿这个类模块,来循环处理一个JSON格式,以得到结构化的数据..
如:http://dict.qq.com/dict?q=word 或者你给的 金宝博网站的JSON数据示例(太多数据,太乱了,很难分析)

如:
人名
    鹏张某 16岁
      住址
        生日
           ...
    李某某 18岁
      住址
        生日
           ...

TA的精华主题

TA的得分主题

发表于 2013-11-7 10:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-1-11 12:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-8-6 17:39 | 显示全部楼层
本帖最后由 RockedPanda 于 2014-8-6 17:41 编辑
liucqa 发表于 2012-11-4 22:11
通过在VBA中使用上面的JS语句,我们可以得到简单的JSON文本数据。
然而,在实际应用中,上述语句会出现许多 ...

"1x2"这种命名在JS中是一个合法属性,但这种属性不能通过"."运算符访问,可以通过"[]"运算符访问.VBA刚开始学,不清楚有没有简单的方法,目前已测试的方法如下:

ss = "function property(obj, key) { return obj[key]; }"   '构造一个辅助的属性访问函数
x.AddCode ss
'利用访问函数获取1x2这种特殊属性,其他可能的形式还包括: 纯数字123,特殊符号@#_等等.
MsgBox x.Run("property", y, "1x2")

完整的例子:
Sub Sample()
    Dim aa, x, y As Object, s, ss
    aa = "{ ""people"": [{ ""firstName"": ""Brett"",""1x2"":""this is 1x2"", ""11"":""this is number 11"", ""@11"":""this is char @"", ""lastName"":""McLaughlin"", ""email"": ""brett@newInstance.com"" },{ ""firstName"": ""Jason"", ""lastName"":""Hunter"", ""email"": ""jason@servlets.com"" }, { ""firstName"": ""Elliotte"", ""lastName"":""Harold"", ""email"": ""elharo@macfaq.com"" }]}"
    Set x = CreateObject("ScriptControl")
    x.Language = "JScript"

    s = "function j(s) { return eval('(' + s + ').people[0]'); }"
    x.AddCode s
    ss = "function property(obj, key) { return obj[key]; }"   '构造一个辅助的属性访问函数
    x.AddCode ss
   
    Set y = x.Run("j", aa)
    MsgBox y.firstName
    MsgBox CallByName(y, "email", VbGet)
    '利用访问函数获取1x2这种特殊属性,其他可能的形式还包括: 纯数字123,特殊符号@#_等等.
    MsgBox x.Run("property", y, "1x2")
    MsgBox x.Run("property", y, "11")
    MsgBox x.Run("property", y, "@11")
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-6 20:37 | 显示全部楼层
RockedPanda 发表于 2014-8-6 17:39
"1x2"这种命名在JS中是一个合法属性,但这种属性不能通过"."运算符访问,可以通过"[]"运算符访问.VBA刚开始 ...

谢谢帮助        
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 23:08 , Processed in 0.035915 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表