首页 > 解决方案 > 如何使用 vba 从网站中提取数据

问题描述

我是从网站提取数据的 vba 编码新手,所以一般来说,我使用此代码连接并检查项目以从网站提取数据,但此代码无法使用我的公司 webapp 通过 vba 中的手表检查数据。当我在课堂上添加手表时它什么也没显示,所以我该怎么办。我公司 webapp 的 HTML 代码 1

来自我公司 webapp 2 的 HTML 代码

Sub Connect_web()

    Dim ie As InternetExplorer
    Dim doc As HTMLdocument
    Dim ele As IHTMLElement
    Dim col As IHTMLElementCollection
    Dim ele_tmp As IHTMLElement

    Set ie = New InternetExplorer
    URL = "" ' Cannot provide
    ie.Visible = True
    ie.navigate URL

    Do While ie.readyState <> READYSTATE_COMPLETE

        Application.StatusBar = "Loading Page..."
        DoEvents

        End If

    Loop

    Set doc = ie.Document
    Set ele = doc.getElementByClassName("GDB3EHGDHLC")

end sub

标签: htmlexcelvbaweb-scraping

解决方案


让我们从四件事开始:

1)代替.Navigate使用.Navigate2

2)使用适当的等待

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

3)更正您的Set ele行的语法。您正在使用ByClassNamewhich 返回一个集合,因此是复数。您s缺少element.

正如您已声明ele为单数(元素),也许首先将集合设置为单独的变量并索引到该集合。

Dim eles As Object, ele As Object
Set eles  = doc.getElementsByClassName("GDB3EHGDHLC")
Set ele = eles(0)

4) 如果可能,您应该始终使用 id 而非其他属性,因为 id 通常检索速度更快。您的图像中有一个针对该类名称的 id(突出显示的元素)。我不会尝试全部输入。请使用片段工具分享您的 HTML,通过编辑您的问题,以便我们可以轻松地与您的 html 相关联。

Set ele = doc.getElementById("gwt-debug-restOfIdStringGoesHere")

推荐阅读