2014-02-13 6 views
4

Я новичок на этом веб-сайте и в программировании VBA. Я столкнулся с проблемой, когда мне нужно получить данные от this page. Мне нужно иметь гиперссылку URL Check Rates 10. Может ли кто-нибудь помочь мне с этой проблемой.Код vba для получения данных с сайта

Я сделал следующий код:

Sub GetData() 

Dim IE As New InternetExplorer 
IE.navigate "http://www.kieskeurig.nl/zoeken/index.html?q=4960999543345" 
IE.Visible = False 

Do 
    DoEvents 
Loop Until IE.readyState = READYSTATE_COMPLETE 

Application.Wait (Now() + TimeValue("00:00:016")) ' For internal page refresh or loading 
Dim doc As HTMLDocument 'variable for document or data which need to be extracted out of webpage 
Set doc = IE.document 
Dim dd As Variant 
dd = doc.getElementsByClassName("lgn")(0).outerHtml 
'Range("a1").Value = dd 
MsgBox dd 

End Sub 

В котором я получаю текст кнопки, но я хочу, чтобы иметь значение класса. Я думаю, что я очень близко к результату, но как-то не могу добраться до цели ... может кто-нибудь, пожалуйста, помогите мне ...

С уважением,

ответ

0

Я думаю, что это то, что вы ищете:

(код слегка модифицирована от ответа Кайла here)

Sub Test() 
'Must have the Microsoft HTML Object Library reference enabled 
Dim oHtml As HTMLDocument 
Dim oElement As Object 
Dim link As String 

Set oHtml = New HTMLDocument 

With CreateObject("WINHTTP.WinHTTPRequest.5.1") 
    .Open "GET", "http://www.kieskeurig.nl/zoeken/index.html?q=4960999543345", False 
    .Send 
    oHtml.Body.innerHTML = .responseText 
End With 

If InStr(1, oHtml.getElementsByClassName("lgn")(0).innerText, "Bekijk 10 prijzen") > 0 Then 
    link = Mid(oHtml.getElementsByClassName("lgn")(0).href, 7) 
    Debug.Print "http://www.kieskeurig.nl" & link 
End If 

End Sub 

Этот код печатает URL в немедленном окне. Надеюсь, это поможет!

+0

благодарит вас обоих ... он действительно работал для меня! спасибо тонну – user3305327

0

Это работает для меня ...

Sub GetData() 
    Set IE = CreateObject("InternetExplorer.Application") 
    my_url = "http://www.kieskeurig.nl/zoeken/index.html?q=4960999543345" 

    With IE 
     .Visible = True 
     .navigate my_url 
     .Top = 50 
     .Left = 530 
     .Height = 400 
     .Width = 400 

    Do Until Not IE.Busy And IE.readyState = 4 
     DoEvents 
    Loop 

    End With 

    Application.Wait (Now() + TimeValue("00:00:016")) ' For internal page refresh or loading 

    Set Results = IE.document.getElementsByTagName("a") 
    For Each itm In Results 
     If itm.classname = "lgn" Then 
      dd = itm.getAttribute("href") 
      Exit For 
     End If 
    Next 

' if you wnat to click the link 
    itm.Click 

' otherwise 
    'Range("a1").Value = dd 
    MsgBox dd 
End Sub 
+0

Привет всем! Я получаю еще одну проблему в этом запросе, пока я прохожу через код, есть некоторые страницы, где класс «lgn» недоступен, поэтому для этого мне нужно напечатать «Недоступно», но я получаю ошибку. .. – user3305327

+0

Привет, я решил эту проблему следующим кодом Если oHtml.getElementsByClassName ("lgn"). Length> 0 Then Если InStr (1, oHtml.getElementsByClassName ("lgn") (0) .innerText, «Bekijk 10 prijzen»)> 0 Затем link = Mid (oHtml.getElementsByClassName («lgn») (0) .href, 7) Range ("f" & i) .Value = "http: //www.kieskeurig .nl "& link Конец Если Else Дальность (" f "и i) .Value =" NA " Конец Если Следующий i Спасибо, – user3305327

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