从网页获取链接/URL-Excel VBA

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19976326/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 17:12:14  来源:igfitidea点击:

Getting Links/URL from a webpage-Excel VBA

excel-vbavbaexcel

提问by Matchendran

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

上面的代码从网页中获取所有链接,但我只需要搜索结果链接。我上传了一张图片,如果那是我的网页,我只需要获取搜索结果链接而不是所有链接。请帮我解决这个问题

回答by Santosh

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