vba抓取网页数据(InternetExplorer浏览器的集合(一)|基本操作)
优采云 发布时间: 2021-09-24 06:14vba抓取网页数据(InternetExplorer浏览器的集合(一)|基本操作)
有几种方法可以做到这一点。我写的答案是希望你在浏览关键词“Grab data from 网站”的时候能找到所有Internet Explorer自动化的基础知识,但是请记住,你自己的研究没有什么价值(如果你不想保留)您无法自定义预先编写的代码)。
请注意,这是一种在性能方面我不喜欢的方法(因为它取决于浏览器的速度),但它提供了对 Internet 自动化背后原理的很好的理解。
1)如果你需要浏览互联网,你需要一个浏览器!因此,我创建了一个 Internet Explorer 浏览器:
Dim appIE As Object
Set appIE = CreateObject("internetexplorer.application")
2)我要求浏览器浏览目标网页。通过使用属性“.Visible”,我决定是否要查看浏览器是否正常工作。在构建代码的时候,最好让Visible = True,但是在代码工作抓取数据的时候,最好不要每次都看到,所以Visible = False。
With appIE
.Navigate "http://uk.investing.com/rates-bonds/financial-futures"
.Visible = True
End With
3)网页加载需要一些时间。所以,我会等我忙……
Do While appIE.Busy
DoEvents
Loop
4)好的,现在页面加载完毕。假设我想抓取 US30Y T 债券的变化:我要做的就是在 Internet Explorer 上点击 F12 查看网页的代码,所以使用指针(红色圆圈)点击元素,我想抓取它看如何达到目的。
5) 我应该做的很简单。首先,我将通过 ID 属性获取收录该值的 tr 元素:
Set allRowOfData = appIE.document.getElementById("pair_8907")
在这里,我会得到一个td元素的集合(具体来说,tr是一行数据,td是它的单元格。我们要找第8个元素,所以我会写:
Dim myValue As String: myValue = allRowOfData.Cells(7).innerHTML
为什么我写 7 而不是 8?因为单元格的集合是从0开始的,所以第八个元素的索引是7(8-1)。简单分析以下几行代码:
一旦我们有了我们的值(现在将它存储在 myValue 变量中),我们可以关闭 IE 浏览器并通过将其设置为 Nothing 来释放内存:
appIE.Quit
Set appIE = Nothing
好的,现在你有了自己的值,你可以用它做任何你想做的事:把它放在一个单元格 (Range("A1").Value = myValue) 或一个表单的标签 (Me.label1.Text = myValue )。
我想向您指出,这不是 StackOverflow 的工作方式:您在此处发布有关特定编码问题的问题,但您应该先进行自己的搜索。我之所以回答一个没有花多少精力的问题,是因为这个问题我已经问过很多次了。回到我学会如何做的时候,我记得我希望有一些更好的方法来支持入门。因此,我希望这个答案只是“研究输入”,而不是可以为下一个遇到相同问题的用户提供支持的最佳/最完整的解决方案。因为我通过这个社区学会了如何编程,我想你和其他初学者可以用我的建议来探索编程的美丽世界。
享受你的练习;)