2012-08-04 46 views
0

我试图从网站收集数据,一旦源代码以字符串形式出现,就应该可以管理数据。环顾四周,我组装了一些可能的解决方案,但遇到了问题,所有的人:从VBA中的HTML源代码获取数据(excel)

  1. 使用InternetExplorer.Application打开URL,然后访问内部HTML
  2. 的Inet
  3. 使用Shell命令运行wget的

这里是我有问题:

  1. 当我的innerHTML存储到〜应变g,它不是整个源代码,只有一小部分
  2. ActiveX不允许创建Inet对象(错误429)
  3. 我已将htm插入到计算机上的文件夹中,我如何获取它VBA中的字符串?

代码1:

子的getData() 昏暗URL作为字符串,即作为对象,状态作为整数 昏暗文本作为变体,开始作为整数,结束作为整数

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 
+2

html文本有多大?你能向我们展示你使用的代码和url吗?我指的是第1点。 – 2012-08-04 02:16:25

+0

如果数据是表格性质,那么获取外部数据可能比您迄今尝试的低级别方法更适合您 – Pynner 2012-08-04 19:12:34

+0

以下是网址:http://eoddata.com/stockquote/纳斯达克/ AAPL.htm – user1575474 2012-08-08 02:32:05

回答

1

如果我试图从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将返回高价格等。

由于该页面上有很多日期,因此您可能还想检查它是否在最近的收盘价格和公司资料之间。