【问题标题】:Select an option from drop down list excel vba scraping从下拉列表中选择一个选项 excel vba 抓取
【发布时间】:2018-02-11 22:02:31
【问题描述】:

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

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" .. 感谢高级帮助

【问题讨论】:

    标签: excel vba select web-scraping option


    【解决方案1】:

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

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

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

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

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

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

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

    CSS 查询结果示例:


    直接选择单个选项

    再次使用Datum der Bekanntmachung 下拉的日期,您可以使用 CSS 选择器

    [name=vt] option[value='2']
    

    这是另一个组合两个属性选择器的后代组合器。父元素具有vtname 属性,目标、单数选项、子元素具有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
    

    【讨论】:

      【解决方案2】:

      我可以通过遍历标签名称“select”来解决这个问题

          For Each e In ie.document.getElementsByTagName("select")
              'Stuff of code
          Next e

      非常感谢

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多