【发布时间】:2016-06-09 19:44:59
【问题描述】:
我正在尝试使用 VBA 从investing.com 上的多个页面中抓取商品/股票价格,并将它们插入到Excel 电子表格中。
以下代码是我正在努力做的单一价格,在这个例子中是黄金:
Sub Extractdatafromwebsite()
Dim ie As New InternetExplorer
Dim doc As HTMLDocument
ie.Visible = False
ie.navigate "http://uk.investing.com/commodities/gold"
Do
DoEvents
Loop Until ie.READYSTATE = READYSTATE_COMPLETE
Set doc = ie.document
output = doc.GetElementById("last_last").innerText
Range("A1").Value = output
ie.Quit
End Sub
但是,我需要来自多个网站的数据才能同时获得不同的价格。
我尝试详细说明我正在运行的代码,以下示例是我尝试显示黄金和白银价格的示例,但它仅在单元格 A1 和 A2 中显示黄金价格:
Sub Extractdatafromwebsite()
Dim ie As New InternetExplorer
Dim doc As HTMLDocument
ie.Visible = False
ie.navigate "http://uk.investing.com/commodities/gold"
Do
DoEvents
Loop Until ie.READYSTATE = READYSTATE_COMPLETE
Set doc = ie.document
output = doc.GetElementById("last_last").innerText
Range("A1").Value = output
ie.Quit
ie.navigate "http://uk.investing.com/commodities/silver"
Set doc = ie.document
output = doc.GetElementById("last_last").innerText
Range("A2").Value = output
ie.Quit
End Sub
请有人帮我弄清楚如何让它适用于多个页面?我试过搜索,但没有找到适合我需要的东西。
在收集数据的同时,是否可以弹出类似“Waiting...”之类的内容?
谢谢
【问题讨论】:
-
首先,您可能不应该在第二个
Navigate之前Quitie实例,其次,您可能需要重复Do..Loop Until以让浏览器有时间完成正在加载页面... -
谢谢,工作得很好,我最初确实有循环,但它没有工作,删除了退出 ie 并对其进行了排序。再次感谢。