Excel VBA数据抓取-并非所有数据都被提取

时间:2019-06-05 07:03:48

标签: excel vba

我最近发布了一个类似的问题,但是自那时以来,我已经能够成功地从网页中抓取一些数据。但是,我遇到了一个问题。尝试从此页面抓取时:https://www.scpcn.ca/clinics

我正在尝试获取地址和诊所名称,但是,当我使用此代码时,我只会得到第一页。它还在首页上输出每个诊所中的两个,但没有地址。

甚至更奇怪的是,它只工作了一次,拉开了所有的诊所和大约一半的地址,当我删除它并尝试再次运行时,我只得到了前十家诊所,而这就是现在的位置。

我以为问题是页面没有等待足够长的时间,所以我添加了一个等待计时器,但似乎什么也没做。

.container {
        max-width: 2000px;
        text-align: center;
        color: rgb(177, 177, 179);
    }

nav {
        display: flex;
        justify-content: space-around;
        position: fixed; 
    }

1 个答案:

答案 0 :(得分:2)

尝试以下方法,该方法将基于类返回nodeLists,然后在其中建立索引

Option Explicit
Public Sub GetInfo()
    Dim html As HTMLDocument
    Set html = New HTMLDocument
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", "https://www.scpcn.ca/clinics", False
        .send
        html.body.innerHTML = .responseText
        Dim names As Object, addresses As Object, i As Long
        Set names = html.querySelectorAll(".clinic-title")
        Set addresses = html.querySelectorAll(".clinic-address")
        For i = 0 To names.Length - 1
            With ActiveSheet
                .Cells(i + 1, 1) = names.item(i).innerText
                .Cells(i + 1, 2) = addresses.item(i).innerText
            End With
        Next
    End With
End Sub