2015-10-21 4 views
0

Я пытаюсь получить ряд данных из этой таблицы на этом сайте: http://www.nasdaq.com/symbol/neog/financials?query=balance-sheetVBA веб выскабливание

Теперь я могу управлять, чтобы получить строку «Итого обязательства» с использованием

doc.getelementsbyclassname("net")(3).innertext 

но I не могут понять, как получить любые другие строки данных, такие как обыкновенные акции.

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 выделено, что я хочу захватить.

screenshot of HTML code

Вопрос является метод нахождения данных строк таблицы. Может ли кто-нибудь объяснить мне, как получить другие строки данных? Это будет высоко ценится !

+0

[JPs IE Automation Tips] (http://www.jpsoftwaretech.com/an-exploration-of-ie-browser-methods-part-ii/) очень помогли исследовать, как очищать данные с веб-страниц в VBA , Здесь есть код, чтобы перебирать элементы, которые затем можно использовать 'debug.print', чтобы выяснить, какой из них вам нужен. –

+0

@ScottHoltzman Ссылка, которую вы предоставляете, больше не работает. Есть ли другой источник? –

+0

@RickHenderson - Да, этот сайт был снят. Есть много ресурсов в Интернете, если вы ищете немного. –

ответ

0

я был в состоянии сделать проб и ошибок и получить правильную ссылку так:

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): обыкновенные акции ... (куча пространства) ... $ 5.941 $ 5.877 $ 5.773 $ 3.779

затем я проверил это утверждение:

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

И получил тот же результат.

Смежные вопросы