【问题标题】:Getting specific line of text through elements通过元素获取特定的文本行
【发布时间】:2020-12-04 02:16:14
【问题描述】:

我如何在网页的育种部分获得幼崽日期?它出现为'对象不支持此属性或方法。

更新:再次感谢 Zwenn 纠正我的错误。

      Sub GetADog2()
        
        URL2 = "https://fasttrack.grv.org.au/Dog/Details/-370317"
        Set request = CreateObject("MSXML2.XMLHTTP")
        Dim http As New XMLHTTP60, html As New HTMLDocument
        Dim node1 As HTMLHtmlElement
        Dim Element1 As Object
        Set ws = ThisWorkbook.Worksheets("Sheet1")
        
        With http
            .Open "GET", URL2, False
            .send
            html.body.innerHTML = .responseText
        End With
        
        'Problem starts here
        Set Element1 = html.getElementById("breedingArea").getElementsByClassName("display-value")(0)
        ws.Cells(5, 1) = Trim(Replace(Element1.innerText, "/", "~"))
        
        End Sub

【问题讨论】:

    标签: excel xml vba element worksheet


    【解决方案1】:

    始终使用Option Explicit 作为每个模块的第一行并对代码进行排序。如果您使用早期和晚期绑定,getElementsByClassName() 不能以这种方式使用。它不适用于后期绑定。我不知道为什么它在两行中混合使用。

    Sub GetADog2()
      
      Dim http As New XMLHTTP60
      Dim html As New HTMLDocument
      Dim Element1 As HTMLHtmlElement
      Dim node1 As HTMLHtmlElement
      Dim ws As Worksheet
      Dim url2 As String
      
      url2 = "https://fasttrack.grv.org.au/Dog/Details/-370317"
      Set http = CreateObject("MSXML2.XMLHTTP")
      Set ws = ThisWorkbook.Worksheets("Sheet1")
      
      With http
        .Open "GET", url2, False
        .send
        html.body.innerHTML = .responseText
      End With
      
      'Problem starts here
      Set Element1 = html.getElementById("breedingArea")
      Set node1 = Element1.getElementsByClassName("display-value")(0)
      ws.Cells(5, 1) = Trim(Replace(node1.innerText, "/", "~"))
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-21
      • 2019-07-14
      相关资源
      最近更新 更多