网页抓取: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
结果:
我想了解特定地区的房地产价格。
我创建了将价格转移到列表中并进行统计的代码。
我的程序从特定的 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
结果: