做某个学校大作业的时候,需要查接近$500$个数据;手动是不太现实的

于是通过网上冲浪找到了使用VBA的实现方法,在这里稍微总结下

VBA就是Microsoft Office / WPS Office中可以使用的Visual Basic插件;利用插件可以实现各种数据的获取和处理,并最终将数据存到Excel中

如果根据教程正确完成安装后,点开Excel的“开发工具”选项,就能发现“”VB编辑器”选项已经是可以选中的了

点开,进入VB编辑器

之后在左侧的资源视图中,右击Project,选中插入>模块

即可进入输VB代码的界面了

接着,需要进入工具>引用

这类似C++中的include,使用预设好的轮子

在我们的需求中,需要引用如下内容

(默认之外的有Microsoft HTML Object Library和Microsoft Internet Controls)

之后就是敲代码了

最基本的,我们需要先定义主函数

SubMain()Rem:在这里写代码

End Sub

由于我们需要从网上获取数据,那么就需要利用VBA对于IE浏览器的支持了

按照这样的方法进行定义

Dim IE As Object

那么如何打开一个网页呢?

使用如下语句,就可以打开一个网页(网址为url)

Dim url As Stringurl= "这里是网址"

Set IE = CreateObject("InternetExplorer.Application")

IE.Visible= TrueIE.navigate url

但是这样仅仅是将网页打开,我们还需要等待网页加载完毕才能获取数据;那么加入以下语句即可

While IE.readyState <> 4 Or IE.Busy = TrueDoEvents

Wend

现在就分为两种情况了:

1.

如果数据就在网页中,不需要进行额外的操作(比如填入文本/点击按钮等操作)

那么可以通过如下代码,获得网页中的全部文字

Dim alltxt As Stringalltxt= IE.document.body.innerText

alltxt中会包含各种标题、文字、甚至页眉页脚,那么就需要进行字符串操作获得所需信息了

不过由于一般所查询的网页中,所需信息出现的位置一般是相同的,那么我们可以定位到信息大致出现的位置,将那里的东西截取出来

介绍一些VB中常用的字符串操作(与C++不同,VB中String的下标是从$1$开始的 ):

(1) 遍历字符串的循环

For i = 1 To Len(alltxt)Rem: 在这里进行各种骚操作

Next i

(2) 截取子串

Dim substr As Stringsubstr= Mid(alltxt, pos, len)

其中alltxt是被截取的字符串,pos是起始下标(从$1$开始),len是截取长度;即最终得到的字符串为alltxt[pos...pos+len-1]

如果想要拿的是单个字符的话,也必须使用String变量(因为VB中貌似没有C++中char一样的变量)

(3) 字符比较

一个简单的例子如下

Dim ch As Stringch= "e"

Dim flag As String

If ch > "f" Thenflag= "YES"

Elseflag= "NO"

End If

运行过这个If语句后,flag="NO"

(4) MessageBox的使用

一般用于输出结果以调试(毕竟没有控制台)

MsgBox (flag)

MessageBox的括号中的内容,可以使用String相加的形式表示String的拼接

MsgBox (str1 + str2 + str3)

2. 如果所需要的信息并不直接出现在打开的网页中,那么就需要使用一点点其他的功能

以百度搜索为例,我们需要两个步骤来解决问题:先在输入框中填入待查询信息,再点击“百度一下”按钮

用大多数浏览器时,我们都可以按F12打开网页资源浏览器(Chrome、IE都是可以的)

使用该界面中左上方的追踪按钮

再点击一下对话框,就资源浏览器中就会显示对话框的html代码

需要注意这行html

这行说的是这个事情:这个对话框是个input,它的id是"kw",name是"wd",class是"s_ipt",再之后的属性对于我们的需求不是很重要

有了id,name,class,我们就可以使用VBA进行操作了

使用如下代码,就可以将字符串输入到百度的搜索框中

IE.Document.getElementById("kw").Value = "LiuRunky cnblogs"

这行代码的意思是,获取id为"kw"的元素,并将它的值设为某字符串

运行后即可产生如下效果

按下按钮的操作也是类似的,先获取“百度一下”按钮的id

可以得到type为"submit",id为"su"

那么使用如下代码即可完成点击的动作

IE.Document.getElementById("su").Click

接下来就是和1中一样的字符传操作了

假设我们已经把各种字符串操作完成了,已经获得了所需要的信息,那么如何将其存到表格中呢?

其实很简单,因为VBA也可以方便的操作Excel表格

Cells(row, col) = result

这行代码的意思是,将result(可以是String、Integer等各种类型)填到表格中的第$row$行第$col$列

如果想爬取很多个数据,那么在最外面设置一些for循环,就可以依次执行上述流程、然后将信息填入对应表格项中

大致的流程就是这样了

(完)

vba获取html代码数据,用VBA实现网页数据获取相关推荐

  1. vba获取html代码数据,VBA获取网页表格数据

    '获取中国地震网的地震信息 Option Explicit 'http://data.earthquake.cn/datashare/globeEarthquake_csn.html Sub WebI ...

  2. Python量化交易实战-10实时获取股票的数据函数封装

    B站配套视频教程观看 实时获取股票的数据函数封装 实现股票数据获取的模块及方法 从这节课开始 我们就开始构建所谓的量化交易系统,量化交易平台功能模块. 上面是量化交易系统的功能模块图,主要分为3块,第 ...

  3. Excel 2010 VBA 入门 037 获取最后一行数据的行数

    目录 示例: 实现代码1 使用Find方法查找最后的单元格 Find方法按行查找和按列查找的区别 实现代码2 获取工作表总行数 实现代码3 单元格对象的End属性 End属性的局限性 其他获取最后数据 ...

  4. VBA获取数据区域的行列数

    VBA获取数据区域的行列数 方法1 方法2 方法1 ActiveSheet.UsedRange.Rows.Count ActiveSheet.UsedRange.Columns.Count 缺点:把最 ...

  5. AutoCAD VBA 获取单个转角标注的相关数据。

    AutoCAD VBA 获取单个转角标注的相关数据.@TOC 菜鸟献丑了,请多指教! 这是一个在AutoCAD VBA中获取转角标注关键点数据的方法. DXF不会弄,只能用这个土方法.不是很标准规范, ...

  6. excel vba区域求和 获取筛选后数据行号 获取筛选后行号总数

    获取筛选后行号总数 Sub get_total_filer_count()Dim rngCell As RangeDim lngRowCnt As LongFor Each rngCell In [a ...

  7. vba二维数组初始化_将工作表数据写入VBA数组

    大家好,最近推出的内容是"VBA信息获取与处理"中的部分内容,这套教程面向中高级人员,涉及范围更广,实用性更强,现在的内容是第四个专题"EXCEL工作表数据的读取.回填和 ...

  8. keil debug如何在watch直接修改变量值_零基础学VBA:什么是VBA?如何编写和运行VBA代码?...

    HI,大家好,我是星光,今天咱们来继续学习VBA.在上一章咱们讲了为什么要学习VBA~VBA还值不值得学~学了还有没有用~零基础学VBA编程01:VBA还能不能学?学了还有没有用? 这一章咱们再来简单 ...

  9. vba抓取html文件数据,VBA抓取PDF数据

    Excel VBA如何批量获取PDF文件中的内容 VBA能不能在pdf文件的内容中提取所需要的内容建议把人工操作步骤,写成按键精灵程序去半自动化完成.vba对pdf处理极弱,python也好不了太多. ...

最新文章

  1. AttributeError: ‘tuple‘ object has no attribute ‘group‘
  2. MyBatis之传入参数——parameterType(转)
  3. Hadoop RPC protocol description--转
  4. 关于微信公众号小程序在运营过程中的注意事项
  5. beam search算法
  6. 使用udp协议实现服务器端程序时,用VisualC#实现UDP协议(二)
  7. linux_nmon监控教程,如何使用Nmon监控Linux系统性能
  8. html5指南--1.html5全局属性(html5 global attributes)
  9. postgresql 编写函数实现 获取中文姓名全拼
  10. 了解开源图表组件FusionChartsFree
  11. win7资源监视器介绍
  12. oracle sql 查询全年日期,oracle下sql创建指定年份全年日期表(区分工作日)
  13. optionsAPI与compositionAPI
  14. C语言课程设计大作业——学生管理系统(详细含报告和源码)
  15. 计算机cpu执行时间 指令条数的单位,计算机原理2015年10月真题(02384)
  16. laya-oppo 广告问题ad had showd, please reload
  17. redis中 Could not get a resource from the pool 异常解决
  18. zigbee设备类型
  19. 2020作为一个资深的Android开发者需要掌握哪些技能?
  20. 利用Python进行股票交易分析(三):A股量化交易策略的验证及数据分析。

热门文章

  1. 群晖python套件包_群晖中给Python3安装pip工具以安装扩展包
  2. 差压艾默生流量计指示为零不工作的4点原因
  3. Java主人喂猫吃鱼的实验总结,小猫吃鱼的作文4篇
  4. 玛雅2016 Mac主要功能及使用详解
  5. mvn 安装本地jar
  6. 谷歌seo独立站搜索引擎优化指南【2023新版】
  7. eclipse中文版本转英文版
  8. 注册会计可以用计算机,注册会计师考试能带科学计算器吗?
  9. 【汤普森问题】正弦定理乱搞解法
  10. 别想找借口不学习!考研科学作息表呈上!