gpt4 book ai didi

html - VBA Web Scraping 使用 getElementsByClassName 获取名称和地址

转载 作者:行者123 更新时间:2023-12-04 22:27:31 28 4
gpt4 key购买 nike

我正在尝试从以下网页中提取所有诊所的诊所名称和相应地址:https://medimap.ca/Location/Calgary,%20AB,%20Canada

我在定位我应该深入研究的确切区域时遇到问题。所有诊所名称都有相同的类名“_1FLG5”,地址都是“_1-Gov”。但是,当我运行下面的代码时,什么也没有发生 - 没有错误,什么都没有。

我也不确定 .getElementsByClassName 之后的引用是否正确,因为我想要与我引用“_1FLG5”的同一行中的内部文本(0),并且因为我想要“_1-Gov”下方两行中的文本“我引用了(2)。

Option Explicit

Sub GetClinicData()

Dim objIE As InternetExplorer
Dim clinicEle As Object
Dim clinicAdd As Object

Dim clinicName As String
Dim address As String
Dim y As Integer
Dim x As Integer

Set objIE = New InternetExplorer
objIE.Visible = False

objIE.navigate "https://medimap.ca/Location/Calgary,%20AB,%20Canada"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

y = 1

For Each clinicEle In objIE.document.getElementsByClassName("_1FLG5")
clinicName = clinicEle.getElementsByClassName("_1FLG5")(0).innerText
Sheets("Sheet1").Range("A" & y).Value = clinicName
y = y + 1
Next

x = 1

For Each clinicAdd In objIE.document.getElementsByClassName("_1-Gov")
clinicAdd = clinicAdd.getElementsByClassName("_1-Gov")(2).innerText
Sheets("Sheet1").Range("B" & x).Value = clinicAdd
x = x + 1
Next


End Sub

最佳答案

内容是动态加载的,因此您需要等待条件以确保内容加载 - 否则您的集合最终长度为 0。我使用 querySelectorAll应用返回 nodeList 你的类名 For Loop超过 .Length的。理想情况下,您应该在循环中添加超时条件。我显示一个定时 loop这里。

Option Explicit

'VBE > Tools > References: Microsoft Internet Controls
Public Sub GetData()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.Navigate2 "https://medimap.ca/Location/Calgary,%20AB,%20Canada"

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

Dim clinics As Object, addresses As Object, i As Long
With .document

Do
Set clinics = .querySelectorAll("._1FLG5")
Set addresses = .querySelectorAll("._1-Gov")
Loop While clinics.Length = 0

For i = 0 To clinics.Length - 1
With ThisWorkbook.Worksheets("Sheet1")
.Cells(i + 1, 1) = Trim$(clinics.item(i).innerText)
.Cells(i + 1, 2) = Trim$(addresses.item(i).innerText)
End With
Next
End With
.Quit
End With
End Sub

关于html - VBA Web Scraping 使用 getElementsByClassName 获取名称和地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56401801/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com