【分享成果,随喜正能量】做人,要像一杯水。无色则纯,只要心里清澈,世事皆易;无味则淡,只要心里明了,万物皆空;无欲则刚,只要心里释然,一切皆无。。
《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。
教程共两册,八十四讲。今日的内容是专题九“利用IE抓取网络数据”:IE抓取资金主力流入的股票
第二节 利用IE,抓取资金主力流入的股票
大家好,我们从这讲开始讲利用IE控件完成抓取网络数据的任务,由于基础知识已经讲解了很多,这里的代码讲解会简单些,大家可以参考我给出的代码注释进行理解。
实现场景:我们在做股票分析的时候,资金的动向是我们最为关心的,是否有大的资金流入是大多数散户进行某支股票投资的重要依据。我们以财富网提供的资金主力流入的股票数据为数据提取的基础。网址是:http://data.eastmoney.com/zjlx/ 。
1 应用IE实现资金主力流入数据抓取的思路分析
为了抓取数据,我们先看看网页页面,下面是2020年6月11日网页提供的数据:
我们的任务是要把上述数据抓取到EXCEL表格中。为了实现利用IE进行数据抓取,我们首先要建立一个IE引用CreateObject("InternetExplorer.Application")。然后IE打开给出的网址,.navigate "http://data.eastmoney.com/zjlx/"实现我们从网页中得出这个表序号是5,那么将提取这个表中的数据。大家可以先复习一下我前面有关表的知识讲解.在网页文档中提取document对象,利用dmt.all.tags("table")(5)找到这个表,然后利用tb.Rows(i).Cells(j).innertext输出数据。
2 应用IE实现资金主力流入数据抓取的代码实现
为了实现上述的思路,我给出如下我的代码:
Sub myNZ() '利用IE,抓取财富网资金主力流入的股票
Dim ie, dmt, tb, i&, j&
Set myIE = CreateObject("InternetExplorer.Application") '创建一个IE对象
Sheets("SHEET1").Select
Rows("3:100").ClearContents
With myIE
.Visible = True '显示它
.navigate "http://data.eastmoney.com/zjlx/" '加载东风财富网资金主力流入情况
Do Until .readystate = 4 '检查网页是否加载完毕(4表示完全加载)
DoEvents '循环中交回工作权限给系统,以免"软死机"
Loop
Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量
Set tb = dmt.all.tags("table")(5) '通过索引号捕捉表格对象
For i = 2 To tb.Rows.Length - 1 '历遍其每个行
For j = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格
Cells(i + 1, j + 1) = "'" & tb.Rows(i).Cells(j).innertext '将其innertext写入单元格
Next
Next
End With
MsgBox ("OK")
End Sub
代码截图:
代码分析:
1)Set myIE = CreateObject("InternetExplorer.Application") 这段代码是创建一个IE对象,或者叫后期的绑定。引用都可以。
2) Sheets("SHEET1").Select
Rows("3:100").ClearContents
清空数据待填区域。
3) With myIE
.Visible = True '显示它
.navigate "http://data.eastmoney.com/zjlx/"
上述代码在IE中加载"http://data.eastmoney.com/zjlx/" 网址,即东风财富网资金主力流入情况。
4) Do Until .readystate = 4 '检查网页是否加载完毕(4表示完全加载)
DoEvents '循环中交回工作权限给系统,以免"软死机"
Loop
这段代码是让网页加载完成,以便后续提取网页的数据
5)Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量,这里的DMT是一个对象变量。
6) Set tb = dmt.all.tags("table")(5) '通过索引号捕捉表格对象 这里的序号是我们分析网页得来,也可以利用工具进行网页的页面分析。
7)For i = 2 To tb.Rows.Length - 1 '历遍其每个行
For j = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格
Cells(i + 1, j + 1) = "'" & tb.Rows(i).Cells(j).innertext '将其innertext写入单元格
Next
Next
提取表的数据,这里tb.Rows.Length – 1 是行数;tb.Rows(i).Cells(j).innertext 是单元格的内容。
3 应用IE实现资金主力流入数据抓取的实现效果
我们点击页面的运行按钮,实现下面的数据抓取:
从实现的效果看,完全达到了我们场景需求。
本节知识点回向:如何在页面文档中提取表的数据?
本节内容参考:009工作表.xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
【分享成果,随喜正能量】从来茶倒七分满,留下三分是人情。半人半我半自在,半醒半醉半神仙。半亲半爱半苦乐,半俗半禅半随缘。人生,其实是很公平的。在哪里付出,就在哪里得到;在哪里打磨,就在哪里闪耀。。