2014-02-13 5 views
4

나는이 웹 사이트와 VBA 프로그래밍의 초보자입니다. 내가 this page에서 데이터를 가져와야하는 문제에 봉착했습니다. Check Rates 10 버튼의 하이퍼 링크 URL이 필요합니다. 누구든지이 문제로 나를 도울 수 있습니까? 나는 버튼의 텍스트를 얻고 있지만 내가하고자하는웹 사이트에서 데이터를 가져 오는 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

... 저를 도와주세요 수 있습니다 나는 결과에 매우 근접라고 생각하지만, 어떻게 든 캔트 목표에 도달 :

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을 인쇄 (코드 카일의 대답 here에서 약간 수정). 희망이 도움이됩니다!

+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"클래스를 사용할 수 없기 때문에 "Not Available"을 인쇄해야하지만 오류가 발생합니다. .. – user3305327

+0

안녕하세요, 다음 코드로이 문제를 해결했습니다 oHtml.getElementsByClassName ("lgn"). Length> 0 Then InStr (1, oHtml.getElementsByClassName ("lgn") (0) .innerText,링크 = 중간 (oHtml.getElementsByClassName ("lgn") (0) .href, 7) 범위 ("f"& i). 값 = "http : //www.kieskeurig .nl "& link 끝 부분 Else 범위 ("f "& i). 값 ="NA " 끝나는 경우 다음 i 감사합니다. – user3305327

관련 문제