VBA网页抓取



我想从这个网站上的表中得到一行数据:http://www.nasdaq.com/symbol/neog/financials?query=balance-sheet

现在我可以使用

获取"总负债"行
doc.getelementsbyclassname("net")(3).innertext 

,但我不知道如何获得任何其他行数据,如普通股。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = Range("bscode").Row And _
Target.Column = Range("bscode").Column Then
Dim IE As New InternetExplorer
IE.Visible = True
IE.navigate "http://www.nasdaq.com/symbol/" & Range("bscode").Value & "/financials?query=balance-sheet&data=quarterly"
Do
 DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE
Dim Doc As HTMLDocument
Set Doc = IE.document
Dim sD As String
sD = Doc.getElementsByTagName("tr")(8).innerText
MsgBox sD
Dim aD As Variant
aD = Split(sD, "$")
Range("bs").Value = aD(1)
Range("ba").Value = aD(2)
Range("bb").Value = aD(3)
Range("bc").Value = aD(4)
End If
End Sub

如果有帮助的话,我已经突出显示了我想要抓取的HTML源代码和tr。

HTML代码截图

问题是查找表行数据的方法。有人可以向我解释如何获得其他行数据吗?我将不胜感激!

我能够做一些试验和错误,并得到正确的引用,这种方式:

Dim eTR As Object, cTR As Object, I as Integer 'I used object, because I did late binding
Set cTR = Doc.getElementsByTagName("tr")
i = 0
For Each eTR In cTR
    If Left(eTR.innerText, 3) = "Com" Then
        Debug.Print "(" & i; "): " & eTR.innerText
    End If
    i = i + 1
Next

立即窗口显示

(308):普通股…(一堆空间)……5941 5877 5773美元3779美元

然后测试这个语句:

sd = Doc.getElementsByTagName("tr")(308).innerText
Debug.Print sd

得到了相同的结果

相关内容

  • 没有找到相关文章

最新更新