如何使用excel vba单击网页上的链接

Mut*_*tor 2 excel vba web-scraping

我正在编写一个vba脚本,旨在从用户获取股票代码,导航到网站,输入股票代码并单击相应的链接.不幸的是,我在点击链接时遇到了麻烦.我已经研究过这个StackOverflow问题和响应,但是,我没有使用innertext值.我也花了一个小时在网上研究一个潜在的解决方案而没有任何运气.

我的VB脚本如下:

Sub clicklick()
Dim ie As Object
Dim form As Variant, button As Variant
Set ie = CreateObject("InternetExplorer.Application")
ticker = InputBox("Enter Ticker Symbol: ")

With ie
.Visible = True
.Navigate ("http://www.SITE_URL.com")

While ie.ReadyState <> 4
DoEvents
Wend

ie.document.getElementsbyName("sSrchTerm").Item.innertext = ticker

End With
End Sub
Run Code Online (Sandbox Code Playgroud)

我尝试单击的链接在页面源中显示如下:

<a class="hqt_button" href="javascript:void(0): onclick=HeaderBox.trySubmit()"></a>
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何点击链接.该元素似乎没有名称,innertext或id,所以我不知道如何到达它.

编辑:

    Set Link = ie.document.getElementsByTagName("a") 
    For Each l In Link 
        If Link.classname = "hqt_button" Then 
            Link.Click 
            Exit For 
        End If 
    Next l 
Run Code Online (Sandbox Code Playgroud)

Dav*_*ens 7

尝试获取锚标记的集合,包括:

GetElementsByTagName("a")
Run Code Online (Sandbox Code Playgroud)

然后,使用尽可能多的逻辑迭代该集合,以确保您单击右键.

For each l in ie.document.getElementsByTagName("a") 
    If l.ClassName = "hqt_button" Then
        l.Click
        Exit For
    Next
Run Code Online (Sandbox Code Playgroud)

如果有多个具有相同类名的锚,您可以这样做:

    If l.ClassName = "hqt_button" AND l.Href = ""javascript:void(0): onclick=HeaderBox.trySubmit()" Then
        l.Click
        Exit For
    Next
Run Code Online (Sandbox Code Playgroud)

另外

如果您使用的是IE9 +,则可以使用该GetElementsByClassName方法.

GetElementsByClassName("hqt_button")   
Run Code Online (Sandbox Code Playgroud)