如何使用VBA从网站提取数据

时间:2018-12-20 08:01:04

标签: html excel vba excel-vba web-scraping

我是vba编码的新手,可以从网站提取数据,因此通常,我使用此代码连接并检查项目以从网站提取数据,但是此代码无法通过我公司的webapp在vba中通过观看检查数据。当我向班级添加监视功能时,它什么也没有显示。该怎么办。HTML Code from my firm webapp 1

HTML Code from my firm webapp 2

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

1 个答案:

答案 0 :(得分:2)

让我们从四件事开始:

1)使用.Navigate代替.Navigate2

2)使用适当的等待时间

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

3)更正Set ele行的语法。您正在使用ByClassName返回集合,因此是复数。您在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与您的html联系起来。

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