VBA Web抓取:对象结果为空(getelementbyID)

问题描述 投票:0回答:1

我打算从下面的网站(马来语网站)中提取有关招标信息的信息。https://tender.selangor.my/results?type=tenders

我的代码如下,但是'tenders'对象显示为Nothing,导致我无法继续进行操作。希望您能分享一些有关我做错事情的指导。

Worksheets("Data").Cells.Clear

Dim xhr As Object
Dim html As New HTMLDocument
Dim tenders As Object, item As Object, item2 As Object
Dim tender As Object
Dim i As Integer

Set xhr = CreateObject("MSXML2.XMLHTTP")

With xhr
    .Open "GET", "https://tender.selangor.my/results?type=tenders", False
    .send

    If .readyState = 4 And .Status = 200 Then
        html.body.innerHTML = .responseText
    Else
        MsgBox "Error" & vbNewLine & "Ready state: " & .readyState & _
        vbNewLine & "HTTP request status: " & .Status
    End If

End With

Set tenders = html.getElementById("DataTables_Table_0")
html vba dom web-scraping
1个回答
0
投票

您感兴趣的表格内容是动态生成的,因此您可以使用Internet Explorer或发出带有适当参数的get http请求以使用第三方库来解析json内容。由于第一个选项很容易使用,因此我使用相同的示例创建了一个示例:

Sub GetInformation()
    Dim tenders As Object

    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .navigate "https://tender.selangor.my/results?type=tenders"
        While .Busy Or .readyState < 4: DoEvents: Wend
        Application.Wait Now + TimeValue("00:00:05")
        Set tenders = .document.getElementById("DataTables_Table_0")
        Debug.Print tenders.innerText
        .Quit
    End With
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.