4

enter image description here

I want to write a macro which will take the search result links in a webpage. I have written like this

Sub webpage()

Dim internet As InternetExplorer

Dim internetdata As HTMLDocument

Dim internetlink As Object

Dim internetinnerlink As Object

Set internet = CreateObject("InternetExplorer.Application")

internet.Visible = True

internet.Navigate ("URL")

Do While internet.Busy

  DoEvents

Loop

Do Until internet.ReadyState = READYSTATE_COMPLETE

  DoEvents

Loop

Set internetdata = internet.Document

Set internetlink = internetdata.getElementsByTagName("a")

i = 1

For Each internetinnerlink In internetlink

ActiveSheet.Cells(i, 2) = internetinnerlink.href

i = i + 1

Next internetinnerlink

End Sub

Above code takes all the links from the web page, but i need only the search result links. i have uploaded one image, if that is my webpage, i need to take only the search result links and not all the links. please help me to fix this

Community
  • 1
  • 1
Matchendran
  • 333
  • 2
  • 6
  • 20

1 Answers1

5

Try this code

Sub webpage()

    Dim internet As Object
    Dim internetdata As Object
    Dim div_result As Object
    Dim header_links As Object
    Dim link As Object
    Dim URL As String

    Set internet = CreateObject("InternetExplorer.Application")
    internet.Visible = True

    URL = "https://www.google.co.in/search?q=how+to+program+in+vba"
    internet.Navigate URL

    Do Until internet.ReadyState >= 4
        DoEvents
    Loop

    Application.Wait Now + TimeSerial(0, 0, 5)

    Set internetdata = internet.Document
    Set div_result = internetdata.getelementbyid("res")


    Set header_links = div_result.getelementsbytagname("h3")

    For Each h In header_links
        Set link = h.ChildNodes.Item(0)
        Cells(Range("A" & Rows.Count).End(xlUp).Row + 1, 1) = link.href
    Next

    MsgBox "done"
End Sub
Santosh
  • 12,175
  • 4
  • 41
  • 72
  • @Matchendran Also this [link](http://stackoverflow.com/questions/17495644/using-vba-in-excel-to-google-search-in-ie-and-return-the-hyperlink-of-the-first) may be helpful. – Santosh Nov 14 '13 at 18:29
  • @santhosh : Your code works so perfectly, But if i use href property to get the links , iam getting " Object doesn't support this property or method" error `Set internetdata = internet.Document Set internetdatalink = internetdata.getElementById("rso") Set internetlink = internetdatalink.getElementsByTagName("h3") For Each texttext In internetlink ActiveSheet.Cells(i, 2).Value = texttext.href i = i + 1 Next texttext` this is the code iam using – Matchendran Nov 15 '13 at 04:54
  • @Matchendran Its bcoz

    tag does not have href property where as tag has it.

    – Santosh Nov 15 '13 at 10:59
  • @santhosh: To get the link, i have written like this, `Set internetlink = internetdatalink.getElementsByTagName("h3") Set interinnerlink = internetlink.getElementsByTagName("a")` Iam getting same "Object Doesn't Support this property or method Error" pointing at the second line... – Matchendran Nov 15 '13 at 12:10
  • @Matchendran internetlink is a header object so it won’t obviously have any elements. `internetlink.getElementsByTagName("a")` seems incorrect. Try to debug the code by adding watch window for better understanding the objects. – Santosh Nov 15 '13 at 12:17
  • @Matchendran see my updated answer. Don't forget to accept if its helpful. – Santosh Nov 15 '13 at 13:03