VBA网页刮不能填写搜索框,潜在的安全问题..?

时间:2017-06-30 19:54:41

标签: vba html-parsing webpage scrape getelementsbyclassname

我有以下删节代码导航到网页并填写搜索框。但是,如果将classname嵌入到input元素中,我无法理解如何填充搜索框。如果您有任何见解,请告诉我。感谢。

Dim ie, results As Object
Dim pagenumber, pagetotal, r, s As Long
Dim finrawebpage As HTMLDocument
Dim searchterm As HTMLElementCollection
Dim i As Integer

Set ie = CreateObject("InternetExplorer.application")
brokersearch = InputBox("ENTER BROKER NAME OR CRD#")
'firmsearch = InputBox("ENTER FIRM NAME OR CRD#")
'geosearch = InputBox("ENTER CITY, STATE, OR ZIP")

Application.StatusBar = "LOADING FINRA SEARCH"

With ie
.Visible = True
.navigate "https://brokercheck.finra.org/"

Do While .busy Or _
.readystate <> 4
DoEvents
Loop

Set finrawebpage = ie.document

'Set searchterm = finrawebpage.getElementsByTagName("input")
'i = 0
'While i < searchterm.Length
'If searchterm(i).Type = "text" Then
'searchterm(i).Value = brokersearch

'Set searchterm = finrawebpage.getElementsByClassName("ng-pristine ng-scope ng-empty ng-valid ng-valid-required ng-touched")
'If searchterm.Length > 0 Then
'searchterm(0).Value = brokersearch
'End If

finrawebpage.getElementsByClassName("ng-pristine ng-scope ng-empty ng-valid ng-valid-required ng-touched").Item.Value = brokersearch
'finrawebpage.getElementsByClassName("searchAutoContainer flex-auto").Item.innertext = brokersearch
'finrawebpage.getElementsByClassName("md-raised md-primary md-hue-2 md-button md-ink-ripple").Item.Click

'Wend

End With

End Sub

1 个答案:

答案 0 :(得分:0)

根据代码中的注释行,您似乎处于正确的轨道上。尝试:

Do While i < ie.document.getElementsByTagName("input").length
  If ie.document.getElementsByTagName("input")(i).getAttribute("placeholder") = "Name or CRD#" Then
    ie.document.getElementsByTagName("input")(i).value = brokersearch
  End If
Loop

这将消除硬编码元素位置的需要,如果频繁更新页面,则该元素很可能会破坏。这并不是说关键占位符是完美的,但根据我在页面上看到的内容,您的选项受到限制。