VBA抓取解禁股票信息
优采云 发布时间: 2022-06-02 13:05VBA抓取解禁股票信息
【分享成果,随喜正能量】为什么会觉得委屈?因为你只记住了自己的好,还记住了别人的不好。凡事,把对方摆在和你一样的位置,只会让彼此的心灵越来越远,何不多一些宽容,让一些琐碎和怨恨远离我们,让我们的心胸更加开阔。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题九“利用IE抓取网络数据”:VBA抓取解禁股票信息
第四节 利用IE,抓取解禁*敏*感*词*大家好,这讲讲解的是利用IE,抓取东方财富网解禁股票的数据,利用的方法和上一讲基本类似,目的仍是给大家展示一下VBA中抓取数据的实例,给大家多介绍一种实用的场景,供大家选择利用。
实用场景:我不是太清楚解禁股的概念,但很多玩股票的朋友都有关注,经常要看每天股票解禁的*敏*感*词*,以便等到某种信息,要求利用IE实现提取某网站股票的解禁股信息,将这些数据放到工作表中以备选查看。选择的网址是: 即东方财富网的数据。1 应用IE实现抓取解禁股票信息的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先要建立一个IE对象,然后将网页文档提取出来,在网页文档上提取第三个表的数据即可。提取表数据的时候可以模拟真正工作表的行列循环,依次提取数据,在我之前的讲解中提到Rows.Length是指网页表格的个数,Cells(j).innertext是指单元格的内容。这两点在写代码的时候要注意。另外,在抓取网页文档的表时我们这讲采用all.tags("table")(3)的方法,这种方法在之前的讲解中讲过是非常模糊但非常好用的一种数据查找的方案。all.tags(“标签名称”):返回该类标签的元素集合。这里选择序号(3)是指序号为3的表的数据。对于innertext的概念,大家要注意理解innerText 是指标签之间的纯文本信息。在实现提取数据后,将内存释放,这是我建议的方案。
2 应用IE实现抓取抓取解禁股票信息的代码实现为了实现上述的思路,我给出了下面的代码:
Sub myNZB() '利用IE,抓取解禁*敏*感*词* DimIE, dmt, tb, i&, j& SetIE = CreateObject("InternetExplorer.Application") '创建一个IE对象 Sheets("SHEET3").Select Cells.ClearComments WithIE .Visible= True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop Setdmt = .document '将IE浏览器加载的页面文档,赋予dmt变量 Settb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象 Fori = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next EndWith SetIE = Nothing Setdmt = Nothing Settb = Nothing MsgBox("ok")
End Sub
代码的讲解:
1)Set IE = CreateObject("InternetExplorer.Application") 建立IE 的引用。2).Visible = True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop上述代码令浏览器可见,加载网址, 一直到加载完成,其中的DoEvents 是避免软死机的现象出现。3) Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量4) Set tb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象5)For i = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next提取表格的数据到工作表。6) Set IE = Nothing Setdmt = NothingSet tb = Nothing回收内存。对于回收内存的操作,建议大家利用.在数据库、字典、查找等等案例中都有类似的操作。
代码截图:
通过上述的代码,就可以完成我们的思路。3 应用IE实现抓取解禁股票信息的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
从而验证了我们思路的正确。
本节知识点回向:如何在页面文档中提取指定表的数据?
本节内容参考:009工作表.xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
【分享成果,随喜正能量】人生起起落落是常态,谁都会遇到不尽人意的时候,坦然接受所有的不幸,不颓废、不放弃、不抱怨,生活的转机就在前方。。