[英]Getting data from HTML source in VBA (excel)
我正在尝试从一个网站收集数据,一旦源为字符串形式,该数据应该是可管理的。 环顾四周,我已经整理了一些可能的解决方案,但是所有这些解决方案都遇到了问题:
这是我遇到的问题:
代码1:
Sub getData()Dim url作为字符串,即作为对象,状态作为Integer Dim文本作为Variant,startS作为Integer,endS作为Integer
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = 0
url = "http://www.eoddata.com/stockquote/NASDAQ/AAPL.htm"
ie.Navigate url
state = 0
Do Until state = 4
DoEvents
state = ie.readyState
Loop
text = ie.Document.Body.innerHTML
startS = InStr(ie.Document.Body.innerHTML, "7/26/2012")
endS = InStr(ie.Document.Body.innerHTML, "7/25/2012")
text = Mid(ie.Document.Body.innerHTML, startS, endS - startS)
MsgBox text
如果我试图从该页面的08/10/12开盘价起,这类似于我假设您正在做的事情,那么我将执行以下操作:
Set ie = New InternetExplorer
With ie
.navigate "http://eoddata.com/stockquote/NASDAQ/AAPL.htm"
.Visible = False
While .Busy Or .readyState <> READYSTATE_COMPLETE
DoEvents
Wend
Set objHTML = .document
DoEvents
End With
Set elementONE = objHTML.getElementsByTagName("TD")
For i = 1 To elementONE.Length
elementTWO = elementONE.Item(i).innerText
If elementTWO = "08/10/12" Then
MsgBox (elementONE.Item(i + 1).innerText)
Exit For
End If
Next i
DoEvents
ie.Quit
DoEvents
Set ie = Nothing
您可以修改它以运行HTML并提取所需的任何数据。 迭代+2将返回高价,依此类推。
由于该页面上的日期很多,因此您可能还需要检查一下该日期是否在“近期收盘价”和“公司资料”之间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.