Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1704to1708
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Erfassung ASIN

Erfassung ASIN
13.08.2019 13:18:15
Rolf-Jan
Hallo zusammen,
zuersteinmal @Zwenn: Vielen Dank für die Nachricht (siehe unten)!
Ein Problem gibt es leider noch.
Ich möchte die ASIN bei Amazon mittels VBA erfassen.
Bsp.
https://www.amazon.de/s?k=4011097641904&__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&ref=nb_sb_noss
Mein Code, der leider nicht funktioniert ist:
V2.Offset(0, 3).Value = .getElementsByclassnames("sg-col-20-of-24 s-result-item sg-col-0-of-12 sg-col-28-of-32 sg-col-16-of-20 AdHolder sg-col sg-col-32-of-36 sg-col-12-of-16 sg-col-24-of-28")(1).getattribute("data-asin")
Bzw. (0), (2) usw.
Mittlerweile zeigt mir Amazon wieder nur einen Treffer an. Mir geht es aber generell darum, für eine EAN die richtige ASIN zu finden, und nicht die "falschen" gesponserten Links.
Woran könnte das liegen?
VG
Rolf-Jan

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
dabei vielleicht bedenkenswert:
13.08.2019 15:15:07
lupo1
https://de.wikipedia.org/wiki/Amazon_Standard_Identification_Number
...
Die Verwendung einer ASIN kann für Händler in Deutschland als Markenrechtsverletzung gewertet werden, ohne dass die ASIN dem Endverbraucher dabei ersichtlich sein muss, entschied das Landgericht Düsseldorf mit Urteil vom 20. Januar 2014 (Az. 2a O 58/13).
...
AW: dabei vielleicht bedenkenswert:
13.08.2019 15:21:43
Rolf-Jan
Danke für den Einwand Lupo
...betrifft allerdings (Gott sei Dank) meinen Fall nicht
AW: Erfassung ASIN
13.08.2019 16:46:35
Zwenn
Hallo Rolf,
Dann hast Du für Ebay ja schonmal ein funktionierendes Werkzeug gefunden ;-)
Amazon ist so ziemlich die grützigste Seite, die man auslesen kann, um es nett auszudrücken. Es gibt so einige Sonderfälle, die Du hoffentlich nicht abdecken musst.
Wenn Du die gesponserten Suchtreffer aussortieren willst, musst Du das während des Durchgehens der Liste aller Suchtreffer machen. Um alle Suchtreffer zu prüfen, musst Du dabei über alle div-Tags gehen und auf das Attribut data-index prüfen, mit dem alle Suchtreffer durchnummeriert sind.
Ich entwickle selber grade ein sehr aufwändiges Amazon-Tool für einen Kunden und habe Dir mal die entsprechenden Passagen für Deine Zwecke zusammenkopiert:

Sub AmazonASINsAuslesen()
'Für den Internetzugriff
Dim browser As Object
Dim url As String
Dim knotenStamm As Object
Dim knotenDiv As Object
'ASIN-Handling
Dim asin As String
Dim dataIndexErsteNull As Boolean
Dim istGesponsert As Boolean
'Abgekürzte Amazon URL zu Suchtreffern
'ACHTUNG: Mit dieser Schreibweise ist nur die
'erste Seite aller Suchtreffer aufrufbar
url = "https://www.amazon.de/s?k=4011097641904"
'Internet Explorer initialisieren, Sichtbarkeit festlegen,
'URL aufrufen und warten bis Seite vollständig geladen wurde
Set browser = CreateObject("internetexplorer.application")
browser.Visible = False
browser.navigate url
Do Until browser.ReadyState = 4: DoEvents: Loop
'Alle Div-Tags in NodeCollection schreiben, um Listen-Abschnitte zu identifizieren
Set knotenStamm = browser.document.getElementsByTagName("div")
If Not knotenStamm Is Nothing Then
'Alle Div-Tags durchgehen und auf Attribut data-index prüfen
For Each knotenDiv In knotenStamm
'Mit data-index sind alle Suchtreffer durchnummeriert
If knotenDiv.hasAttribute("data-index") Then
'Es kann vorkommen, dass unter der Liste mit den echten Suchtreffern weitere Listen
'auftauchen, die willkurliche Ergebnisse zu alternativen Suchtermen anzeigen
'Diese beginnen den data-index für ihre Trefferzählung wieder bei 0
'Deshalb wird beim finden des ersten data-Index mit dem Wert 0 eine Prüfvariable
'auf true gesetzt. Ist die Prüfvariable dataIndexErsteNull bereits true, wird die
'Schleife für diesen Suchterm abgebrochen
If dataIndexErsteNull Then
If knotenDiv.getAttribute("data-index") = 0 Then
Exit For
End If
Else
If knotenDiv.getAttribute("data-index") = 0 Then
dataIndexErsteNull = True
End If
End If
'Aktuellen Knoten auf "Gesponsert" prüfen
istGesponsert = PruefenObGesponsert(knotenDiv)
If istGesponsert = False Then
'ASIN holen, wenn aktueller Knoten nicht gesponert ist
'Für das Beispiel wird zur Verarbeitung der gefundenen
'ASINs ein Ausgabestring aufgebaut
If Len(asin) = 0 Then
'Wenn erste ASIN, ohne Zeilenumbruch übernehmen
asin = Trim(knotenDiv.getAttribute("data-asin"))
Else
'Wenn weitere ASIN, untereinander fortführen
asin = asin & Chr(13) & Trim(knotenDiv.getAttribute("data-asin"))
End If
End If
End If
Next knotenDiv
Else
'Keine Suchtreffer
MsgBox "Keine Liste mit Suchtreffern auf der geladenen Seite gefunden."
End If
'Ergebnisstring zur Sichtkontrolle ausgeben
MsgBox asin
End Sub

Function PruefenObGesponsert(htmlKnoten As Object) As Boolean
Dim ergebnis As Boolean
If InStr(1, htmlKnoten.innertext, "Gesponsert") > 0 Then
ergebnis = True
End If
PruefenObGesponsert = ergebnis
End Function

Damit solltest Du klar kommen. Ich kann Dir aus eigener Erfahrung sagen, dass es auch zu EANs mitunter mehrere gültige Suchtreffer gibt. Deshalb habe ich direkt eingebaut, wie alle eingesammelt werden. Wie Du die einzelnen ASINs sammelst oder jede sofort weiter verarbeitest, bekommst Du mit Deinem VBA-Lvl sicher gut hin.
Viele Grüße,
Zwenn
Anzeige
Aufräumarbeiten vergessen
13.08.2019 16:52:48
Zwenn
Ups,
habe vergessen den Browser am Ende wieder zu schließen:

Sub AmazonASINsAuslesen()
'Für den Internetzugriff
Dim browser As Object
Dim url As String
Dim knotenStamm As Object
Dim knotenDiv As Object
'ASIN-Handling
Dim asin As String
Dim dataIndexErsteNull As Boolean
Dim istGesponsert As Boolean
'Abgekürzte Amazon URL zu Suchtreffern
'ACHTUNG: Mit dieser Schreibweise ist nur die
'erste Seite aller Suchtreffer aufrufbar
url = "https://www.amazon.de/s?k=4011097641904"
'Internet Explorer initialisieren, Sichtbarkeit festlegen,
'URL aufrufen und warten bis Seite vollständig geladen wurde
Set browser = CreateObject("internetexplorer.application")
browser.Visible = False
browser.navigate url
Do Until browser.ReadyState = 4: DoEvents: Loop
'Alle Div-Tags in NodeCollection schreiben, um Listen-Abschnitte zu identifizieren
Set knotenStamm = browser.document.getElementsByTagName("div")
If Not knotenStamm Is Nothing Then
'Alle Div-Tags durchgehen und auf Attribut data-index prüfen
For Each knotenDiv In knotenStamm
'Mit data-index sind alle Suchtreffer durchnummeriert
If knotenDiv.hasAttribute("data-index") Then
'Es kann vorkommen, dass unter der Liste mit den echten Suchtreffern weitere Listen
'auftauchen, die willkurliche Ergebnisse zu alternativen Suchtermen anzeigen
'Diese beginnen den data-index für ihre Trefferzählung wieder bei 0
'Deshalb wird beim finden des ersten data-Index mit dem Wert 0 eine Prüfvariable
'auf true gesetzt. Ist die Prüfvariable dataIndexErsteNull bereits true, wird die
'Schleife für diesen Suchterm abgebrochen
If dataIndexErsteNull Then
If knotenDiv.getAttribute("data-index") = 0 Then
Exit For
End If
Else
If knotenDiv.getAttribute("data-index") = 0 Then
dataIndexErsteNull = True
End If
End If
'Aktuellen Knoten auf "Gesponsert" prüfen
istGesponsert = PruefenObGesponsert(knotenDiv)
If istGesponsert = False Then
'ASIN holen, wenn aktueller Knoten nicht gesponert ist
'Für das Beispiel wird zur Verarbeitung der gefundenen
'ASINs ein Ausgabestring aufgebaut
If Len(asin) = 0 Then
'Wenn erste ASIN, ohne Zeilenumbruch übernehmen
asin = Trim(knotenDiv.getAttribute("data-asin"))
Else
'Wenn weitere ASIN, untereinander fortführen
asin = asin & Chr(13) & Trim(knotenDiv.getAttribute("data-asin"))
End If
End If
End If
Next knotenDiv
Else
'Keine Suchtreffer
MsgBox "Keine Liste mit Suchtreffern auf der geladenen Seite gefunden."
End If
'Aufräumen
browser.Quit
Set browser = Nothing
Set knotenStamm = Nothing
Set knotenDiv = Nothing
'Ergebnisstring zur Sichtkontrolle ausgeben
MsgBox asin
End Sub

Viele Grüße,
Zwenn
Anzeige
AW: Aufräumarbeiten vergessen
14.08.2019 12:16:32
Rolf-Jan
Moin Zwenn,
das hilft ungemein weiter!
Besten Dank!
Ich kann nur beistimmen. Im Gegensatz zu anderen Seiten ist Amazon für Datenerfassung echt mies!
Viele Grüße
Rolf-Jan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige