网页抓取:innertext

Web Scraping: innertext

我想了解特定地区的房地产价格。
我创建了将价格转移到列表中并进行统计的代码。
我的程序从特定的 link.

中抓取价格、区域等信息

下一步我想通过 VBA.
自动创建这个 link-列表 对于这一步,我需要将 exposeIDs 提取到 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.examplexyz.de"
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

预期结果:所有 exposeID 的列表。

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

屏幕截图:HTML 来自主页(标签以黄色突出显示)

我的列表图片:
[![结果 Excel][2]][2]

您应该能够结合使用 class 和属性 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

我知道与 QHarr 一直在这里抛出的东西相比,这真的非常原始,但它可能足以作为一个开始。

Sub DumpData()

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

URL = "https://www.immobilienscout24.de/Suche/de/niedersachsen/oldenburg-oldenburg/haus-kaufen?pagenumber=1"

'Wait for site to fully load
IE.Navigate2 URL
Do While IE.Busy = True
   DoEvents
Loop

RowCount = 2

With Sheets("Sheet1")
   .Cells.ClearContents
   For Each itm In IE.document.all
      If itm.ID Like "*result-*" Then
        .Range("B" & RowCount) = itm.ID
        RowCount = RowCount + 1
      End If
   Next itm
End With
End Sub

结果: