《VBA信息获取与处理》教程是我推出第六套教程,目前已经是初版修订了。
这套教程定位于最高级,是学完低级,中级后的教程。
这部教程给大家讲解的内容有:跨运用程序信息得到、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板运用、Split函数扩展、事情表信息与其他运用交互,FSO工具的利用、事情表及文件夹信息的获取、图形信息的获取以及定制事情表信息函数等等内容。
程序文件通过32位和64位两种OFFICE系统测试。
是非常抽象的,更具研究的代价。

教程共两册,八十四讲。
今日的内容是专题六“VBA中利用XMLHTTP完成网抓数据”的第3讲:VBA网抓数据结果的链接

第三节 利用XMLHTTP抓取百度搜索数据结果,给出打开链接

在上一讲中我们实现了利用XMLHTTP的方法抓取了搜索关键词的数据,但是我们在网络查询的时候,每每不仅须要总的数据支持,还须要一些详细的数据,比如:查找到了哪些网址,标题是什么?如果我须要进一步的查看每每要须要打开的链接。
这种数据如何抓取呢?这讲我就来实现这个问题。

搜索结果页面html模板VBA网抓数据成果的链接 React

实现的场景:如下图当我们点击右侧的按钮“利用VBA提取搜索关键词的数据,并给出下载的链接”时能够不才面的数据区域给出查询到的结果。

实在,这种处理也是事情中常常碰着的,可以对付我们浏览的网页进行适当的保存,在须要的时候再详细的查询。
特殊是把这些数据保存在EXCEL表格中,更让管理条理清晰。
那么如何实现这个场景呢?我们仍是利用XMLHTTP来完成我们的事情。

1 运用XMLHTTP实现数据查询并提取网页链接的思路剖析

我们先仿照一下直接在网页上查询数据,当我们输入一个数据点击回车的时候,做事器会反馈回数据在我们的浏览器上,我们须要对网页的源代码进行剖析,

上面的截图便是我录入“VBA措辞专家”点击回车后的在后台看到的源代码,你会创造,所有我们要写入EXCEL表格的信息都涌如今了这里。

个中“标题”可以用innerText属性来得到,链接可以用href的属性来得到,真的非常随意马虎,下面我们就要实现把多页查询的结果填到excel表格中,这个时候我们利用发送给做事器时哀求头部检讨一下查询的韶光即可如下代码:.setRequestHeader "If-Modified-Since", "0"

这样就可以实现我们的哀求了。

2 运用XMLHTTP实现数据查询并提取网页链接的代码实现过程

下面我们把上面的思路转换为代码,如下所示:

Sub myNZA() '利用VBA提取搜索关键词的数据,并给出下载的链接

【详细见教程】

End Sub

代码截图:

代码讲解:

1) Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

Set objDOM = CreateObject("htmlfile")

上述代码建立了两个引用,一个是XMLHTTP ,一个是htmlfile ,之后将利用这两个引用完成我们的事情。

2)UU = Range("B1").Value 这是我们要查询的关键数据

3)For i = 0 To 50 Step 10 '五页 这是要查询5次利用i作为查询的页码

4) strURL = "https://www.baidu.com/s?"

strURL = strURL & "wd=" & UU

strURL = strURL & "&pn=" & i

上述代码是完成了我们要查询的要求URL。

5) .Open "GET", strURL, False 利用OPEN 方法

6) .setRequestHeader "If-Modified-Since", "0" 要求头部把浏览器端缓存页面的末了修正韶光一起发到做事器去,做事器会把这个韶光与做事器上实际文件的末了修正韶光进行比较,以保障我们每次要求到的数据是没有重复的。

7) .send 把稳要求头部的提交要在此命令之前完成

8)objDOM.body.innerHTML = .responseText '将.responseText内容写入新objDOM工具的body

9) For Each objTitle In objDOM.getElementsByTagName("h3") 在每个H3标签即标题进行遍历操作。
把稳<h1> 到 <h6>是标签标题。
<h1> 定义最大的标题。
<h6> 定义最小的标题。

10)With objTitle.getElementsByTagName("a")(0) 对付每个属性名称为为“a”的元素

11)Cells(k, 2) = .innerText

Cells(k, 3) = .href

提取标签之间的纯文本信息和链接

12)Set objXMLHTTP = Nothing

Set objDOM = Nothing

Set objTitle = Nothing

回收内存。

3 运用XMLHTTP实现数据查询并提取网页链接的实现效果

我们先来看看当我们点击运行按钮后的实现效果:

此时我们任意点击一个单元格的链接,就会转跳到下面的页面:

从而实现了我们最初的课题哀求。

本节知识点回向:如何利用XMLHTTP反馈网页中的关键词的搜索结果和网页的链接?

本讲参考程序文件:006事情表.XLSM

我20多年的VBA实践履历,全部浓缩不才面的各个教程中,教程学习顺序: