html - 如何使用 ie vba web-scrape 脚本选择 <li>

标签 html css excel vba web-scraping

我编写了一个用 VBA 编写的自动化流程,它从客户那里获取数千个始发地和目的地的邮政编码,并使用 VBA 和 Excel 从我的铁路供应商那里收集价格。特别是一家供应商最近更新了他们的页面,要求我们在输入出发地/目的地邮政编码后选择城市/州组合。

我可以输入 zip,这样很好;但是,这样做之后我不知道如何选择列表项。以下是该网站的 HTML。

邮政编码输入框

这是我放在 zip 中的代码:(我在那里有 Select,希望能显示 ul 表)

ieDoc.all.shipFromLocation.Value = oZip
ieDoc.all.shipFromLocation.Select
ieDoc.all.shipToLocation.Value = dZip
ieDoc.all.shipToLocation.Select

输入邮政编码后,将出现此 ul 框:

<ul class="ui-autocomplete ui-front ui-menu ui-widget ui-widget-content ui-corner-all location-ac-menu" id="ui-id-1" tabindex="0" aria-disabled="false" style="display: none; width: 222.77777767181396px; top: 260.34715270996094px; left: 164.01385498046875px;">
<li><strong class="location-ac-heading">Please select:</strong></li>
<li class="ui-menu-item" role="presentation"><a id="ui-id-87" class="ui-corner-all" tabindex="-1">PHILA, PA 19106 US</a></li>
<li class="ui-menu-item" role="presentation"><a id="ui-id-88" class="ui-corner-all" tabindex="-1">WM PENN ANX E, PA 19106 US</a></li>
<li class="ui-menu-item" role="presentation"><a id="ui-id-89" class="ui-corner-all" tabindex="-1">WILLIAM PENN ANNEX E, PA 19106 US</a></li>
<li class="ui-menu-item" role="presentation"><a id="ui-id-90" class="ui-corner-all" tabindex="-1">PHILADELPHIA, PA 19106 US</a></li>
</ul>

看起来像这样: enter image description here

最佳答案

CSS 选择器:

没有更多 HTML 或 URL 继续,您可以使用 CSS 选择器(用于选择元素的模式)选择这些元素。

.ui-menu-item[role="presentation"]

上面选择器中的 .class selector即通过 className 选择元素。希望这是足够具体的,因为我还指定了带有 className ui-menu-item 的元素应该包含文本 role="presentation"

更通用的方法可能是 ieDoc.getElementsByClassName("ui-menu-item")


HTML 示例的 CSS 查询结果:

CSS query

查询显示返回了一个元素列表,0-3,这将需要HTML元素(ieDoc变量)的.querySelectorAll方法来捕获所有匹配项并返回一个 nodeList,然后可以对其进行迭代。


VBA:

Dim NodeList As Object, i As Long
Set NodeList = ieDoc.querySelectorAll(".ui-menu-item[role=""presentation""]")

For i = 0 To NodeList.Length - 1
    Debug.Print NodeList.item(i).Click '<==this way          '
   'Debug.Print NodeList(i).Click   '<==Or this method
Next i

您可能还需要首先设置焦点,例如NodeList.item(i).focus ;假设支持的方法。


更多信息:

看我的回答here .

关于html - 如何使用 ie vba web-scrape 脚本选择 <li>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25352002/

相关文章:

jQuery:点击放大和移动

css - 如何将自定义 css 添加到 Sharepoint 应用程序 (iframe)

arrays - 在 Excel VBA 中对二维数组进行排序

javascript - jQuery 高亮效果不起作用?

c# - 构建一个显示最近更新的网站的 C# 应用程序

HTML 文本位置

excel - Excel中的多个If Else

javascript - 将 HTML 表格导出到 Excel JavaScript 函数添加选择文件名

php - 在 php 分页上设置事件选项卡

html - swf 顶部的分层下拉菜单