VBA-网页搜罗:内部文本

问题描述 投票:0回答:1

我正在从事一个私有的VBA-Web-Scraping项目,请获得一些支持。

我的目标是:我想大致了解特定地区的房地产价格。因此,我创建了一个VBA,将价格转移到清单中并进行统计。我的程序能够从特定链接中抓取价格,区域等。

下一步,我想通过VBA自动创建此链接列表。对于此步骤,我需要将ExposureIDs提取到Excel。但这是行不通的...

我的编码:

Option Explicit

Sub ExposeID()
Dim browser As Object   'Aufnehmen der verwendeten Instanz des Browsers (Internet Explorer)
Dim knotenAst As Object 'Aufnehmen einer HTML Struktur aus dem Browser Dokument
Dim url As String       'Aufnehmen der auszulesenden Adresse
Dim ExposeID As String

url = "https://www.immobilienscout24.de/Suche/de/niedersachsen/oldenburg-oldenburg/haus-kaufen?pagenumber=1"
Set browser = CreateObject("internetexplorer.application")
browser.Visible = False
browser.navigate url
Do Until browser.readyState = 4: DoEvents: Loop

Set knotenAst = browser.document.getElementsByClassName("is24-res-list is24-res-gallery result-list border-top")(0).getElementsBytagName("li")

'ExposeID
 If Not knotenAst Is Nothing Then
 ExposeID = Trim(knotenAst.innerText)

 Else
 ExposeID = "KeinWert"
 End If
 MsgBox ExposeID, vbOKCancel

'Aufräumen
browser.Quit
Set browser = Nothing
Set knotenAst = Nothing

End Sub

预期结果:获取所有暴露ID的列表。

实际结果:我得到了一个转储。

Screenshot: HTML from the homepage (tag is yellow highlighted)

有人知道我该如何解决吗?

感谢与问候!

更新:添加了我的列表图片:Result in Excel

excel vba web-scraping getelementsbytagname
1个回答
1
投票

您应该能够同时使用类和属性CSS选择器

Dim nodeList As Object, i As Long

Set nodeList = browser.document.querySelectorAll(".result-list__listing[data-id]")

For i = 0 To nodeList.Length - 1 

    Debug.Print nodeList.item(i).getAttribute("data-id")

Next
© www.soinside.com 2019 - 2024. All rights reserved.