vba抓取网页数据(教程中第十个专题“利用QueryTables抓取网络数据”的第三节)
优采云 发布时间: 2021-10-06 10:41vba抓取网页数据(教程中第十个专题“利用QueryTables抓取网络数据”的第三节)
大家好,今天我们讲解《VBA信息获取与处理》教程第十题《使用QueryTables捕获网络数据》第三节《使用QueryTables提取某只股票的历史交易信息数据》,这个题目很有用的知识点,希望大家都能掌握。
第三部分使用QueryTables提取某只股票的历史交易信息数据
大家好,这个解释是关于使用QueryTables获取网页数据的具体应用。在上一讲的讲解中,我们看到使用QueryTables方法的代码确实很简单,实现的效果也很好。下面我们继续讲解这个方法的使用。在本讲中,我们将完成对某只股票的历史交易信息的提取。
实际场景:使用QueryTables抓取网易财经某只股票的历史交易数据。这里我选择紫金矿业的股票。捕捉2020年第二季度的数据,网易财经网站为:/trade/lsjysj,该股目前不仅是个人投资的一种方式,也是经济社会发展的晴雨表。有很多人追随他们。他们也希望能分析出一组数据,可以用于自己在市场运行中的投资理财。不过炒股是有风险的,大家还是要谨慎,不要被表面的高额利润所诱惑。我只能为您提供基本的数据积累,不涉及股票操作。
1 使用QueryTables提取某只股票历史交易信息数据的思路分析
为了实现上面的场景,我们来看看上面URL提供的信息:
在上面的网页中,我要提取的是红框中的数据。来分析一下思路:先清空回填数据的区域,然后使用QueryTables.Add方法提取网页上4号表的数据即可。提取表格数据时,可以选择填写格式。使用Add方法连接时,要给出年份和季节参数,并在A5单元格中选择回填数据的区域。
为了验证 URL,我们可以将 URL 保存在工作表的单元格中。用于验证。
2 使用QueryTables提取某股票历史交易信息数据的代码实现
为了实现上面的想法,我给出了以下代码:
sub myNZA()'获取网易财经股票的价格和信息
Dim strQuery As String
表格(“Sheet2”)。选择
ActiveSheet.UsedRange.Offset(4).ClearContents
GPCode = Cells(1, 4).Value
myN = Cells(2, 4).Value
myJ = Cells(3, 4).Value
strQuery = "URL;/trade/lsjysj_" & GPCode
strQuery = strQuery & ".html?year=" & myN
strQuery = strQuery & "&season=" & myJ
Cells(1, "l") = strQuery
使用 ActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range("A5"))
.Name = "历史"
.RefreshOnFileOpen = False
.BackgroundQuery = True
.SaveData = 真
.PreserveFormatting = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "4"
.Refresh BackgroundQuery:=False
结束于
MsgBox ("确定")
结束子
代码说明:
1) Sheets("Sheet2").选择
ActiveSheet.UsedRange.Offset(4).ClearContents
以上代码清除了数据的回填区,注意第二句的写法。
2)GPCode = Cells(1, 4).Value 获取股票代码
3) myN = Cells(2, 4).Value 获取要查询的年份
4) myJ = Cells(3, 4).Value 获取要查询的季节
5)strQuery = "URL;/trade/lsjysj_" & GPCode
strQuery = strQuery & ".html?year=" & myN
strQuery = strQuery & "&season=" & myJ
获取上面连接的URL
6) Cells(1, "l") = strQuery
备份工作表单元格中的 URL 以进行验证。
7)使用 ActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range("A5"))
上面代码指定加载URL /trade/lsjysj_601899.html?year=2020&season=2的数据,Range("a5")回填到工作表区域左上角的单元格。
8).Name = "历史"
9).RefreshOnFileOpen = False
如果每次打开工作簿时都会自动更新数据表缓存或查找表,则为 True。默认值为 False。读/写布尔值。
10).BackgroundQuery = True
是否在后台异步执行,如果查询表的查询是异步执行(在后台执行),则为True。
11) .SaveData = True
如果数据数据与工作簿一起保存,则为 True。如果只保存数据透视表的定义,则为 False。读/写布尔值。
12) .PreserveFormatting = True
如果前五行数据的任何常见格式应用于查询表的新数据行,则为真。未使用的单元格不会被格式化。如果将应用于查询表的最新自动格式应用于新数据行,则该属性为 False。默认值是true。对于数据库查询表,默认格式设置为 xlSimple 常量。
当查询表刷新时,新的自动格式化样式将应用于查询表。只要 PreserveFormatting 的值为 False,AutoFormat(自动格式化)就会被设置为 None。因此,在 PreserveFormatting 之前设置的任何自动格式设置都设置为 False,并且在刷新查询表之前不会生效,并且不会对生成的查询表应用任何格式。
13) .AdjustColumnWidth = False
如果每次刷新指定查询表时自动将列宽调整为最合适的宽度,则为True。如果每次刷新都没有自动调整列宽,则为False。默认值是true。
14) .RefreshPeriod = 0
返回或设置两次刷新之间的时间间隔。读/写长。将周期设置为 0(零)将禁用自动定时刷新,相当于将此属性设置为 Null。RefreshPeriod 属性的值可以是 0 到 32767 之间的整数。
15) .WebSelectionType = xlSpecifiedTables 指定表
16) .WebFormatting = xlWebFormattingNone 提取无格式表数据
17) .WebTables = "4" 选择序号为4的表
18) .Refresh BackgroundQuery:=False
更新查找表数据。更新 QueryTable 对象中的*敏*感*词*。
以上属性为大家详细讲解,希望大家能够理解。
代码截图:
通过上面的代码,我们就可以完成我们的想法了。
3 使用QueryTables提取某只股票历史交易信息数据的效果
当我们点击运行按钮时,如图中箭头所示,程序将开始运行并将网页数据抓取到工作表中。当然,在实际应用中,用户可以根据自己的实际需要,到指定位置完成抓取工作。
这验证了我们想法的正确性。从代码到实现的过程非常简洁,代码理解也非常容易,给我们的学习和使用带来了方便。
本节知识点:如何使用对QueryTables对象的各种属性的理解和掌握。
本节内容参考:010 worksheet.xlsm
积木式编程的内涵:
在我的系列丛书中,我一直在强调“积木”的编程思想,这也是学习使用VBA的主要方法,尤其是对于职场专业人士。其主要内涵:
1 不要自己输入所有代码。您要做的就是将构建块放在正确的位置,然后修改代码。一定要复制,从你的积木库中复制,然后修改代码,以利用你的时间进行高效思考。
2 建立自己的“积木库”。平时在学习的过程中,把自己觉得有用的代码拼凑起来,多积累一些,用到的时候随时可以拿到。您的构建块库中的数据越多,您的编程想法就越广泛。
VBA 应用程序的定义
VBA是使用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA应用的定义。在取代OFFICE的新办公软件到来之前,谁能做到数据处理的极致才是王道。其中,技能的巅峰非VBA莫属!
记得20年前第一次学VBA的时候,当时资料很少。只能自己看源码自己弄明白了。这真的很困难。二十年过去了。为了不让正在学习VBA的朋友重复我之前的经验,根据我多年VBA的实际使用,我推出了六个VBA专用教程:
第一套:VBA代码解法是对VBA中各个知识点的讲解。一共147个教程,涵盖了大部分VBA知识点,初学者必备;
第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中层人员学习。
第三套:VBA数组和字典解决方案。数组和字典是 VBA 的精髓。字典是提高VBA代码水平的有效手段。值得深入研究。它是初学者和中级人员改进代码的一种手段。
第四套:VBA代码解题视频是专门针对初学者的视频讲解。您可以快速入门并更快地掌握此技能。这套教程是第一套教程视频讲解,听元音比较好听。
第五套:VBA中类的解释和利用这是一个高级教程,用于解释类的空性和肉体的程度。虽然类的使用较少,但仔细研究可以促进你的VBA理论的提高。这套教程的领悟主要是读者的领悟,对佛教哲学的领悟。
第六套教程:《VBA信息获取与处理》,这是一本进阶教程,覆盖面更广,实用性更强,面向中高级人员。教程共20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split函数扩展、工作表信息等应用交互、使用FSO对象、工作表和文件夹信息的获取、图形信息的获取、工作表信息功能的定制等。
您可以根据以上信息按照1→3→2→6→5或4→3→2→6→5的顺序逐步学习更多。本教程在提供大量构建块的同时提供了解释。如有需要,您可以微信:NZ9668
学习VBA是一个过程,也需要体验一种枯燥的感觉
如太白的诗:百鸟高飞,孤云自在。相视不倦,唯景亭山。学习的过程,也是修心的过程,修心的过程。在代码的世界里,心静,心情好,身体自然好。心平气正,心无邪见,妄念不多。造福他人就是造福自己。这些教程也是为了帮助大家起航,助力自己的实力。我上面的教程是我很多经验的传递。
“水利万物而不争”,密密麻麻,微静无声,巨浪汹涌。学习也是如此,知道自己需要什么,不要蜷缩在你认为是天堂的一小片世界里,等到晚年再自欺欺人。努力提升自己,用一颗充满活力的心,把握当下,这才是进取。越有意义的事情,越困难。意志力决定一切,智慧决定成败。不管遇到什么,都是风景。无视纠纷,无视得失。茶,不管是满是小,都不用担心;浓或淡,都有它自己的味道。感受真实的时光,静下心来,多学习,积累祝福。它' 不是每天都在胡闹,也不会每天都忍受。在存量更加严峻的后疫情世界,我们会为自己的生存储备知识,尤其是新知识的储备。学时小而无声,用时则大而动荡。
每一次的收获都是成长的记录,所以没有依据。正是这种坚持,造就了朝霞的光辉。最后给致力于VBA学习的朋友做个小测验,让大家感受一下学习过程的枯燥和坚持:
浮云掠过,耳语无声,
唯有微风,震撼了梦中的莹莹。
看星星,去掉北斗七星,
奈与过去同行。
稻田的人们,灯火通明,
熊顾长亭。
多少VBA人,
在漆黑的夜里,静静地寻梦,盼望黎明。
没有证据!
回到学习使用VBA的历史,不禁感慨,想把这些话跟大家分享,分享我多年实际工作经验的成果,喜欢这些有用的东西,给各位旅友谁真的需要使用VBA。