【问题标题】:Want to select button on website using excel vba想要使用 excel vba 在网站上选择按钮
【发布时间】:2017-03-29 19:16:18
【问题描述】:

我想使用 excel 浏览网页。但该网站不像普通网站(亚马逊、谷歌等)那样使用 ID。该网站是http://www.scoopmae.com/。我将如何选择“预订演示”按钮。我通常会使用 getelementbyID,但我不知道 id。我也尝试过标签和类,但没有运气。

Sub scoop()
Set objie = CreateObject("InternetExplorer.Application")
objie.Top = 0
objie.Left = 0
objie.Width = 1600
objie.Height = 900
objie.Visible = True 'We can see IE

On Error Resume Next
objie.navigate ("http://scoopmae.com")
Do
DoEvents
Loop Until objue.readystate = 4

Application.Wait (Now + TimeValue("0:00:02"))
'MsgBox ("wait")
'click button
'objie.document.getElementsById("scoop-sort").Click



 x = objie.document.getElementsByClassName("a")
Cells(1, 2) = x
End Sub

【问题讨论】:

标签: excel vba web-scraping


【解决方案1】:

我可以通过这样做访问按钮。

Sub test()


Dim oHtml As HTMLDocument
Dim oElement As Object

Set oHtml = New HTMLDocument

With CreateObject("WINHTTP.WinHTTPRequest.5.1")
    .Open "GET", "http://www.scoopmae.com/", False
    .send
    oHtml.body.innerHTML = .responseText
End With

Set mybtn = oHtml.getElementsByClassName("sf-button large orange default  dropshadow")(0).getElementsByTagName("span")

i = 0
For Each oElement In mybtn
    Debug.Print mybtn(i).innerText
    i = i + 1
Next oElement

End Sub

确保您转到工具 -> 引用并添加对 Microsoft HTML 对象库 [MSHTML.TLB] 的引用 谢谢 米格尔

【讨论】:

  • 谢谢,但我收到错误 424。我尝试将 dados 设置为对象,但没有帮助。我的参考资料设置正确
  • @andrew,我的错误复制粘贴又让我失望了。再试一次。我修复了 for each loop 我错了Var
  • 谢谢!效果很好。我将 Debug.print mybtn(i).innerText 更改为 Sheets("sheet1").Range("A" & i + 1) = mybtn(i).innerText。否则什么都没有打印。但我希望网页也可见。我尝试在 with 循环中设置 HTMLDocument.visible = true 但它不起作用。我习惯于将 IE 用于这些类型的应用程序。我应该从 IE 重写代码还是缺少捷径?再次感谢您,您的帮助很大!
  • @Andrew,很高兴为您提供帮助。不要忘记将其设置为答案!
【解决方案2】:

你基本上就在那里!!确保添加 2 个引用: 1 微软互联网控制 2. 微软 HTML 对象库 阅读更多http://vbadud.blogspot.com/2009/08/how-to-login-to-website-using-v

查看此链接。

http://vbadud.blogspot.com/2009/08/how-to-login-to-website-using-vba.html

代码如下:

Sub test()


Dim oHtml As HTMLDocument
Dim oElement As Object

Set oHtml = New HTMLDocument

With CreateObject("WINHTTP.WinHTTPRequest.5.1")
    .Open "GET", "http://www.scoopmae.com/", False
    .send
    oHtml.body.innerHTML = .responseText
End With

Set mybtn = oHtml.getElementsByClassName("sf-button large orange default  dropshadow")(0).getElementsByTagName("span")

i = 0
For Each oElement In mybtn
    Debug.Print mybtn(i).innerText
    oElement.Click
    i = i + 1
Next oElement

End Sub

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2019-11-23
    • 2020-11-21
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    相关资源
    最近更新 更多