excel网页数据抓取vba(输入输入AJAX自动完成功能不会触发列表原文标签-vba第一次)
优采云 发布时间: 2021-10-29 00:10excel网页数据抓取vba(输入输入AJAX自动完成功能不会触发列表原文标签-vba第一次)
excel-Excel VBA抓取网页数据,输入AJAX自动补全功能不会触发列表
原创标签 excelvbaexcel-vba
第一次尝试。
我的网页中有以下 HTML,我使用 Excel 和 VBA 根据我的 excel 文件中的用户地址获取数据。我遇到的问题是组合框不接受任何输入,但必须从其下拉列表中进行选择。
我可以选择输入字段并添加我的条目,但下拉列表没有出现。该站点使用自动完成功能,一旦检测到输入,就会通过 AJAX 调用构建列表。
如何触发组合框中的下拉列表并从中选择正确的条目以匹配我范围内的输入(如果存在)?下面的代码是我的各种尝试之一。
URL 是,我试图在 GO 按钮旁边的最后一个字段中输入郊区的名称。试试例如 Parramatta
一种观察结果是针对组合框元素:
如果我在字段中手动输入值,当我输入时,inspect 会显示 value= 的变化。当 VBA 改变这个值时,它不会在检查中改变。
谢谢
Search for
<a>
any gender /site/images/svg/DownArrow.svg
</a>
,
<br class="sm-hide md-hide lg-hide">
<a>
all ages /site/image/svg/DownArrow.svg
</a>
to
<a>
play /site/images/svg/DownArrow.svg
</a>
<br class="sm-hide md-hide lg-hide"> near
<a class="in-map-btn btn btn-primary btn-go btn-mobile-fixed">GO</a>
到目前为止,我的宏是:
Sub get_data()
Const myURL As String = "http://play.afl/club-finder/?"
Dim c As Range
Dim appIE As Object
Set appIE = CreateObject("internetexplorer.application")
With appIE
.Navigate myURL
.Visible = True
End With
Do While appIE.Busy
DoEvents
Loop
For Each c In Range("MY_SEARCH")
Set searchBar = appIE.document.getElementsByClassName("program-filters")(0)
Set myInput = searchBar.getElementsByTagName("INPUT")(0)
myInput.Focus
myInput.Value = c.Value
myInput.FireEvent ("onchange")
Set myAutoComplete = searchBar.getElementsByClassName("autocomplete")(0)
If Not myAutoComplete Is Nothing Then
'FIND IN LIST AND SELECT HERE
searchBar.getElementsByClassName("in-map-btn btn btn-primary btn-go btn-mobile-fixed")(0).Click
Do While appIE.Busy
DoEvents
Loop
'COLLECT DATA HERE
End If
Next
appIE.Quit
Set appIE = Nothing
End Sub
尝试从jQuery执行vba触发AJAX,没有错误但是不行:
appIE.Document.parentWindow.execScript "jQuery('.program-filters input').trigger('change')"
虽然没有错误,但使用以下建议仍然不起作用:
jq = "jQuery('.program-filters input').val('" & c.Value & "').trigger('change')"
appIE.Document.parentWindow.execScript jq
最佳答案
您可能都必须在输入字段(组合框)中填写一个值,然后触发更改事件以使其工作。尝试这个:
appIE.Document.parentWindow.execScript "jQuery('.program-filters input').val('yourvalue').trigger('change')"
关于excel-Excel VBA抓取网页数据,在AJAX自动补全功能中输入input不会触发列表,我们在Stack Overflow上发现了类似的问题: