vba抓取网页数据(教程中第十个专题“利用QueryTables抓取网络数据”的第三节)

优采云 发布时间: 2021-10-06 10:41

  vba抓取网页数据(教程中第十个专题“利用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。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线