excel - 从下拉列表中选择一个选项 excel vba 抓取

标签 excel vba select web-scraping option

如何从下拉选项中选择一个项目(下拉列表在表结构中)

Sub Test()
    Dim ie          As Object
    
    Set ie = CreateObject("InternetExplorer.Application")
    
    With ie
        .Visible = True
        .navigate ("http://www.handelsregisterbekanntmachungen.de/?aktion=suche#Ergebnis")

        Do: DoEvents: Loop Until .readyState = 4
        
        '.document.getElementsByClassName("vt").Value = "1"
    End With
End Sub


检查元素时,我发现 name 属性 =“vt” ..
感谢先进的帮助

最佳答案

更通用的是使用 CSS 选择器。

从目标元素收集所有选项并为所需选项编制索引:

例如,对于名称为 vt 的日期下拉列表,您可以使用 [name=vt] 选项

第一个选择器匹配目标父元素中具有 name 的所有选项标签元素。值为 vt 的属性.

enter image description here

选择器组合是一个后代组合器,其中包括一个前导属性选择器,用于定位当天的父下拉列表。由于需要多个元素(所有选项),因此 querySelectorAll 方法用于返回一个节点列表,该节点列表被索引以将特定选项设置为选中:

Set list = .querySelectorAll("[name=vt] option") '<==nodeList
list.item(1).Selected = True 

最后一行针对下拉菜单的第 1 天选项。

CSS 查询结果示例:



直接选择一个选项

再次使用从 Datum der Bekanntmachung 下拉的日期,您可以使用 CSS 选择器
[name=vt] option[value='2']

这是另一个组合两个属性选择器的后代组合器。父元素有 name vt 的属性,并且目标单数选项子元素具有 option标签和属性 value值为 2 .这针对下拉菜单的第 2 天选项。

VBA:
Option Explicit
Public Sub MakeSelections()
    Dim IE As New InternetExplorer
    With IE
        .Visible = True
        .navigate "http://www.handelsregisterbekanntmachungen.de/?aktion=suche#Ergebnis"

        While .Busy Or .readyState < 4: DoEvents: Wend

        Dim list As Object
        With .document

            Set list = .querySelectorAll("[name=vt] option")
            list.item(1).Selected = True         '<==select first from list
            .querySelector("[name=vt] option[value='2']").Selected = True '<Select second direct
        End With
        Stop '<== Delete me later
        .Quit
    End With
End Sub

关于excel - 从下拉列表中选择一个选项 excel vba 抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48736954/

相关文章:

select - MySQL:只输出一些值一次

python - 如何使用openpyxl修改python中特定工作表中的数据

java - jTable 开头的复选框

excel - SAS 使用 DDE 保护 Excel 工作表

excel - 编写 VBA 代码以求几何平均值

excel - 使用 Excel VBA 自动邮件合并

jquery - 当最后一个当前选择更改时,如何创建新的选择行?

vba - 条件编译的自动化错误

excel - 获取多区域联合的外部边界范围

javascript - Ember,观察者以奇怪的顺序触发