vba - Excel VBA抓取网页数据,将输入输入AJAX自动完成不会触发列表
问题描述
第一次尝试这个。
HTML
我在网页中有以下内容,我正在使用Excel
并VBA
根据excel
文件中的用户地址抓取数据。我遇到的问题是combobox
不接受任何输入,但它必须是从下拉列表中选择的。
我可以选择输入字段并添加我的条目,但下拉列表没有出现。一旦检测到输入,该站点就会使用调用autocomplete
来构建列表的位置。AJAX
如何触发组合框中的下拉列表并从中选择正确的条目以匹配我范围内的输入(如果存在)?下面的代码是我的各种尝试之一。
网址是http://play.afl/club-finder/?
,我试图在GO
按钮旁边的最后一个字段中输入郊区名称。试一下,例如,Parramatta
一个观察是对于combobox
元素:
<input role="combobox" aria-autocomplete="list" value="Parramatta, NSW" autocomplete="off">
如果我在字段中手动输入值,inspect 会在value=
我输入时显示更改。当vba
更改此值时,它不会在检查中更改。
谢谢
<div class="program-filters">
<span>Search for </span>
<a>
any gender <img src="/site/images/svg/DownArrow.svg" alt="Down Arrow" class="down-arrow-icon">
</a>
<span class="xs-hide">,</span>
<br class="sm-hide md-hide lg-hide">
<a>
all ages <img src="/site/image/svg/DownArrow.svg" alt="Down Arrow" class="down-arrow-icon">
</a>
to
<a>
play <img src="/site/images/svg/DownArrow.svg" alt="Down Arrow" class="down-arrow-icon">
</a>
<br class="sm-hide md-hide lg-hide"> near
<div style="display: inline-block;">
<input role="combobox" aria-autocomplete="list" autocomplete="off" value="SEARCH VALUE HERE">
</div>
<a class="in-map-btn btn btn-primary btn-go btn-mobile-fixed">GO</a>
</div>
到目前为止,我的宏是:
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
fromvba
以触发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')"
推荐阅读
- django - 请求正文没有从 axios 传递给 Django Rest Framework
- google-cloud-platform - 使用 REST API 在 GCP 中创建服务帐户密钥
- ios - UserDefaults.standard.removeObject(forKey: ) 是否有可能失败?
- c++ - 如何要求用户输入整数,直到他在 C++ 中输入空行?
- sql - 多个连接列上的多个 STRING_AGG 会导致聚合膨胀
- c++11 - 函数返回一个额外的 0
- php - PHP 上传到 imgur 相册不起作用?
- java - 我应该如何确定数据库中是否已经存在数据
- django - 如何在 django rest-framework 中获得多对多字段过滤器?
- c# - 将 CameraCaptureUI 中的图像保存到文件夹