VBA网抓股票历史数据

【分享成果,随喜正能量】学会宽容,严以律己,宽以待人 。对自己,不要太放纵,对别人,不要太苛刻 。人与人之间都是相互的 , 如果你自己做不到,就没有理由去过分要求别人 。在努力做好自己的同时 , 学会给别人多一些宽容,世界会因此变得更加温暖 。。
《VBA信息获取与处理》教程是我推出第六套教程 , 目前已经是第一版修订了 。这套教程定位于最高级,是学完初级,中级后的教程 。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容 。程序文件通过32位和64位两种OFFICE系统测试 。是非常抽象的 , 更具研究的价值 。教程共两册,八十四讲 。今日的内容是专题六“VBA中利用XMLHTTP完成网抓数据”的第7讲:VBA网抓股票历史数据

VBA网抓股票历史数据

第七节 利用XMLHTTP抓取网易财经股票历史数据

大家好 , 我们继续网抓数据的讲解,这讲的内容更为实用,我们讲解某支股票历史数据的抓?。?对于玩股票的朋友而言,股票的信息有开盘价、最高价、最低价、收盘价、涨跌额、涨跌幅(%)、成交量(手)、成交金额(万元)、振幅(%)、换手率(%),因人而异关注点也是不同的,有人关注资金的流入和流出,有的人关注换手率的多少,当无论你关注什么数据,都希望这些数据不是停留在看板上,而是在我们的EXCEL表格中,然后进行有的放矢的分析 。如何把这些数据从网页上抓取处理呢?
实现场景:从网页的数据中提取给定股票的信息到EXCEL表格中,这些信息包括某一段时间的开盘价、最高价、最低价、收盘价、涨跌额、涨跌幅(%)、成交量(手)、成交金额(万元)、振幅(%)、换手率(%) 。如下图,要提取出“601899”股票的20年第二季度的数据 。
VBA网抓股票历史数据

1 应用XMLHTTP实现网抓股票数据的思路分析

我们首先仍是建立应用CreateObject("MSXML2.XMLHTTP")和CreateObject("htmlfile")第二个应用用于处理提取出来的网页数据 , 然后我们在“网易财经”的网址上抓取数据
网易财经”的网址:http://quotes.money.163.com/trade/lsjysj_" & 股票名称 。
抓取时利用 .Open "GET", strURL, False 及 .send 的命令,数据返回时将.responseText赋给第二个引用innerHTML属性 。innerHTML 属性返回表格行的开始和结束标签之间的 HTML 。
提取完数据后我们利用循环语句来提取数据 。
在循环语句中我们要有行和列的区分,逐一提取行列的数据 。在网页表格处理的时候,我们可以利用遍历的方法 。可以用类似于工作表的行:Rows,单元格:Cells 的表述方案 。
【VBA网抓股票历史数据】最后要记得内存的释放 。

2 应用XMLHTTP实现网抓股票数据的代码实现

下面我们看实现上述思路的代码部分,我直接给出了我的代码:
Sub myNZE() '网易财经股票历史数据的抓取
[代码见教程]
End Sub
代码截图:
VBA网抓股票历史数据

VBA网抓股票历史数据

代码解读:
1) Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
Set objDOM = CreateObject("htmlfile")
上述代码建立了两个引用 。
2) GPCode = Cells(1, 4).Value
GPY = Cells(2, 4).Value
GPJ = Cells(3, 4).Value
上述代码提取股票的名称 , 历史数据的年,季度 。
3) strURL = "http://quotes.money.163.com/trade/lsjysj_" & GPCode
strURL = strURL & ".html?year=" & GPY
strURL = strURL & "&season=" & GPJ
建立网址的代码 。
4)With objXMLHTTP
.Open "GET", strURL, False
.send
objDOM.body.innerHTML = .responseText
End With
上述代码从网页中提取数据,并将数据赋值给objDOM.body.innerHTML ,objDOM是我们建立的第二个引用对象 。
5)For Each objTR In objTable.Rows
HRow = HRow1
LCol = 0
For Each objCell In objTR.Cells
LCol = LCol1
Cells(HRow4, LCol) = objCell.innerText
Next objCell
Next
上述代码是从("TABLE")(3)中提取数据到工作表中 。
6) Set objXMLHTTP = Nothing
Set objDOM = Nothing
Set objTable = Nothing
Set objTR = Nothing
Set objCell = Nothing
上述代码是释放内存 。

3 应用XMLHTTP实现网抓股票数据的实现效果

最后,我们点击运行按钮,看看随后的实现效果:
VBA网抓股票历史数据

将这种数据提取到工作表中后,我们就可以做数据分析处理了 。确实,我们在股票分析的时候也非常需要这种数据的提取 。
本节知识点回向:
如何提取网页股票的历史数据到工作表中?这种方案和之前的哪节知识点类似?

相关经验推荐