分享

东方财富网数据的JSON处理方法 | VBA实例教程

 gblhp 2015-02-16

除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www./cat3/531.html,VBA交流群273624828。

之前的文章中讲过东方财富网数据的下载,因为网站改版的原因原来的程序失效了,有不少网友把网址一换发现不行就来问我怎么程序不好用?网抓程序在处理方法上是相同的,但是在处理细节方面有很大的不同,很多不懂的网友以为改个网址就可以通用,如果你也只是到这种程序就不要来问我为什么不能用或者让我来给你重新写代码了。虽然网上有不少人会帮人做义工,但我不是其中之一,尤其是玩彩票和股票的朋友,如果你有这种需要但又不舍得花钱那还是不要来找我了。

言归正传,这次我们仍然来看看之前课程中那个网址的数据,http://data.eastmoney.com/executive/list.html,改版之后我们进行抓包所得到的网址是http://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GG&sty=GGMX&p=2&ps=50&js=var%20VVAUuXKL={pages:(pc),data:[(x)]}&rt=47184514。之前我们处理的时候用的是split处理字符串的方法,这次我们用JSON方法来处理得到的字符串。

这里我们只取一页数据来做例子。

    Sub test()
Dim winhttp, URL, arr, i, j, p, t, objJS, objS, pages, n
Sheet1.Cells.Clear
Set winhttp = CreateObject("WinHttp.WinHttpRequest.5.1")
Set objJS = CreateObject("MSScriptControl.ScriptControl")
Application.ScreenUpdating = False
Application.DisplayStatusBar = True
With winhttp
URL = "http://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GG&sty=GGMX&p=1&ps=50&js=var VVAUuXKL={pages:(pc),data:[(x)]}&rt=47184514"
.Open "GET", URL, False
.setRequestHeader "Connection", "Keep-Alive"
.send
t = .responsetext
With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")       '调试用,数据放入剪贴板
.SetText t
.PutInClipboard
End With
With objJS
.Language = "javascript"
.addcode t
Set objS = .codeobject
pages = CallByName(CallByName(objS, "VVAUuXKL", VbGet), "pages", VbGet)
Debug.Print pages
For Each p In CallByName(CallByName(objS, "VVAUuXKL", VbGet), "data", VbGet)
n = n + 1
arr = Split(p, ",")
Cells(n, 1).Resize(1, UBound(arr) + 1) = arr
Next
End With
End With
Set winhttp = Nothing
Set arr = Nothing
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub

得到数据并不难,主要在数据的处理上有些东西要注意,不明白的朋友请自行百度关于JSON的知识。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多