我最近发布了一个类似的问题,但是自那时以来,我已经能够成功地从网页中抓取一些数据。但是,我遇到了一个问题。尝试从此页面抓取时: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;
}
答案 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