2013-10-12 3 views
1
<span itemprop="streetAddress"> 

    **94 Grand St** 

</span> 

как получить эти данные с помощью метода getelementby в Excel VBAПолучить данные с сайта

Я попытался getelementbyid, getelementbyname и т.д., но ничего не работает

Option Explicit 

Sub find() 
'Uses late binding, or add reference to Microsoft HTML Object Library 
' and change variable Types to use intellisense 
Dim ie As Object 'InternetExplorer.Application 
Dim html As Object 'HTMLDocument 
Dim Listings As Object 'IHTMLElementCollection 
Dim l As Object 'IHTMLElement 
Dim r As Long 
    Set ie = CreateObject("InternetExplorer.Application") 
    With ie 
     .Visible = False 
     .Navigate "http://www.yelp.com/biz/if-boutique-new-york#query:boutique" 
     ' Don't show window 
     'Wait until IE is done loading page 
     Do While .readyState <> 4 
      Application.StatusBar = "Downloading information, Please wait..." 
      DoEvents 
     Loop 
     Set html = .Document 
    End With 
    Set Listings = html.getElementsByTagName("span") ' ## returns the list 
    MsgBox (Listings(0)) 
    For Each l In Listings 
     '## make sure this list item looks like the listings Div Class: 
     ' then, build the string to put in your cell 
     Range("A1").Offset(r, 0).Value = l.innerText 
      r = r + 1 
    Next 

Set html = Nothing 
Set ie = Nothing 
End Sub 

выше программа используется мне получить значение innerText внутри тега span ... но его не работает

+1

Вопросы просящих кода должны продемонстрировать минимальное понимание решаемой задачи. Включите попытки решения, почему они не работают и ожидаемые результаты. См. Также: [Контрольный список вопросов переполнения стека] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) –

+1

Что он делает вместо работы? Ваше getElementsByTagName выглядит нормально, так что происходит, когда вы запускаете это? –

+0

У вас есть отлаженный код ur .. где u r получает ошибку? –

ответ

1

Для получения единственного результата, который вы ищете, вы хотите использовать эти две строки в своем коде (есть только 1 реклама на детальном уровне)

Адаптировать ваш код IE

Set Listings = html.getElementbyid("bizInfoBody") ' ## returns the list 
    Range("A1").Offset(r, 0).Value = Listings.innerText 

с XMLHTTP

Sub GetTxt() 
Dim objXmlHTTP As Object 
Dim objHtmlDoc As Object 
Dim objHtmlBody As Object 
Dim objTbl As Object 

Dim strResponse As String 
Dim strSite As String 


Set objHtmlDoc = CreateObject("htmlfile") 
Set objHtmlBody = objHtmlDoc.body 

Set objXmlHTTP = CreateObject("MSXML2.XMLHTTP") 
strSite = "http://www.yelp.com/biz/if-boutique-new-york" 

With objXmlHTTP 
    .Open "GET", strSite, False 
    .Send 
    If .Status = 200 Then 
    strResponse = .responseText 
    objHtmlBody.innerHTML = objXmlHTTP.responseText 
    Set objTbl = objHtmlBody.Document.getElementbyid("bizInfoBody") 
    MsgBox objTbl.innerText 
    End If 
End With 

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