1

我希望将网站表格中的所有文本内容放入 Excel 单元格 A9 到 A16。单元格 A1 到 A8 很好,因为所有数据都在那里,但格式不好(另一个问题)。

我正在使用.getElementByClassName,表的类名是 table,它是站点中的第一个表,因此是 0。我试图获取 tr 标签中的所有文本内容,但它没有从 A9 开始完全填充。我假设在它们之间或另一列之间有很多空格。

Sub VBAWebscraping()

    Dim ieObj As InternetExplorer
    Dim htmlEle As IHTMLElement
    Dim i As Integer
    i = 1
    
    Set ieObj = New InternetExplorer
    ieObj.Visible = True
    ieObj.navigate Url:="https://www.miamidade.gov/Apps/PA/propertysearch/#/?folio=0431070030890"
    
    Do While ieObj.Busy = True Or ieObj.readyState <> READYSTATE_COMPLETE
        Application.Wait Now + TimeValue("00:00:05")
    Loop
    
    For Each htmlEle In ieObj.document.getElementsByClassName("table")(0).getElementsByTagName("tr")
    
        With ActiveSheet
            .Range("A" & i).Value = htmlEle.Children(0).textContent
        End With
    
        i = i + 1
    
    Next htmlEle
    
End Sub
4

1 回答 1

0

i需要使用值 9 进行初始化。您还可以迭代getElementById("#property_info").rows而不是返回整个表集合并对其进行索引。

对于整理,这是因为您提取了每个第一个子节点的内容,这些子节点可能是各种其他节点的父节点,这些节点虽然在页面上很整洁,但如果没有工作表中的 html 格式,看起来很乱。您需要根据子节点编写更详细的内容。

您也可以使用数据>工具>网络查询来拉表(昂贵),或 使用剪贴板将.outerHTML表格传输到您将使用的页面clipboard.SetText ie.document.getElementById("#property_info").outerHTML

于 2020-11-10T20:09:13.053 回答