Hallo Daniel,
bevor ich jetzt schlafen gehe, habe ich mir doch noch Zeit genommen, Dir ein Beispiel zu programmieren, wie Du die Preise und Zeitstempel von der ersten Suchseite auslesen kannst. Brauchst Du nicht auch zumindest noch den Angebotstitel? Sonst weißt Du doch gar nicht, zu was Preis und Datum gehören. Habe ich mal mit aufgenommen.
Pro Seite werden maximal 200 Suchergebnisse angezeigt. Man kann auch alle Suchseiten durchgehen, dass ist mir aber gerade zu nervig. Du musst auch nochmal Dein Tabellenkonzept überdenken. Siehe Kommentare im Makro.
Probere das Makro einfach mal in einer neuen Datei aus:
Sub EbayBeendeteAngebotePreisDatum()
Dim url As String
Dim IE As Object
Dim nodeOfferContainer As Object
Dim nodeAllOffers As Object 'max. 200 pro Seite
Dim nodeOneOffer As Object
Dim currentRowDest As Long
'Startzeile zum schreiben der ausgelesenen Werte
currentRowDest = 2
'Kannst Du auch wieder auf Tabelle umstellen und das
'folgende in eine Schleife um alle Suchterme legen
'Du kannst allerdings nicht die abzuklappernden Suchen
'und die Suchergebnisse in die gleiche Tabelle schreiben
'Die URL belegt eine Zeile, die Suchergebnisse ggf. mehrere 100 oder mehr
url = "https://www.ebay.com/sch/i.html?_from=R40&_nkw=Acuna+Topps+Update+PSA+9+us250&_sacat=0&LH_TitleDesc=0&LH_Sold=1&LH_Complete=1&rt=nc"
'Internet Explorer klar machen
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate url
Do: DoEvents: Loop Until IE.readyState = 4
'Seitenbereich mit Angebotsauflistung holen
On Error Resume Next
Set nodeOfferContainer = IE.document.getElementByID("srp-river-results")
On Error GoTo 0
If Not nodeOfferContainer Is Nothing Then
'Wenn es Angebote gibt, die Liste aus dem Container holen
Set nodeAllOffers = nodeOfferContainer.getElementsByClassName("s-item")
'Alle Angebote der aufgerufenen Seite durchgehen
For Each nodeOneOffer In nodeAllOffers
'Angebotstitel in die Tabelle schreiben aus der das Makro gestartet wurde
ActiveSheet.Cells(currentRowDest, 1).Value = nodeOneOffer.getElementsByTagName("h3")(0).innerText
'Preis in die Tabelle schreiben aus der das Makro gestartet wurde
ActiveSheet.Cells(currentRowDest, 2).Value = nodeOneOffer.getElementsByClassName("s-item__price")(0).innerText
'Zeitstempel in die Tabelle schreiben aus der das Makro gestartet wurde
ActiveSheet.Cells(currentRowDest, 3).Value = nodeOneOffer.getElementsByClassName("s-item__ended-date")(0).innerText
'Nächste Zeile vorbereiten
currentRowDest = currentRowDest + 1
Next nodeOneOffer
Else
'Kein Angebots-Container
MsgBox "Keine Angebote gefunden"
End If
'Spaltenbreiten anpassen
Columns("A:C").EntireColumn.AutoFit
'IE schließen
IE.Quit
End Sub
Meine Empfehlung für jemanden, der sich gar nicht mit der Materie auskennt ist allerdings, sich BayWotch mal genauer anzusehen.
Viele Grüße,
Zwenn
|