Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
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

Web Scraping

Web Scraping
16.03.2023 10:43:40
Reaper Grim

Hallo,

ich arbeite grad an einem kleinen Projekt für eine Spielergemeinschaft um einfach und schnell diverse Analysen zu machen. So wie es aussieht hab ich mich ein bissl verrannt und brauch ne kleine Hilfestellung.
Ich versuche via scraping eine URL zu extrahieren und diese später im Code entweder direkt oder über einen Umweg (kopieren und einsetzen in einer bestimmten Spalte) als variable zu benutzen. Die relevanten Daten über die einzelen Spieler die ich verwenden möchte kann ich problemlos extrahieren. Da es aber teils bis zu 50 Mitspieler sind will ich das ganze über ne Schleife machen, Hier brauch ich aber die individuelle ID der einzelen Mitspieler, welche nur teils auf der Webseite ersichtlich sind (Problem ist, dass wenn man auf der Webseite sich nicht registriert hat erschient diese ID nicht, is aber im Webcode als URL hinterlegt, sprich wenn man diese URL anklickt wird man direkt aud dessen Seite verlinkt).
Das was ich will ist entweder die ganze URL als solche zu benutzen oder nur die in dieser URL hinterlegte ID.

Ich hab schon diverse Varianten ausprobiert (Dank Zwenn) aber iwi bekomm ich nicht diese URL ausgelesen.
Eine Beispielmappe ist anbei.
https://www.herber.de/bbs/user/158282.xlsm
Ich bedanke mich schon mal im voraus für eure Mühen

viele Grüße

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Web Scraping
16.03.2023 13:20:08
Zwenn
Hallo

Wow, entweder Du hast mit Code von mir gelernt oder das Projekt ist schon älter. Insgesamt sieht es gut aus. Ich würde einige Dinge anders aufschreiben, aber der Aufbau des Makros ist ok. Ich nehme an, Du möchtest noch mehr Werte auslesen. Bevor Du das machst, versuche erst einmal an die zu kommen, die Du von den spezifischen Player Seiten auslesen möchtest. Es kann sein, dass xhr Dir nicht alles liefert, weil nicht alles in der ausgelesenen HTML Datei enthalten ist.

Um an die gewünschten IDs zu kommen, hast Du querySelectorAll() ausprobiert. Finde ich gut. Mein Ansatz ist aber ein anderer. Es gibt nur eine Tabelle auf der Seite und deshalb gibt es auch nur einen tbody Tag. In diesem liegen alle Links zu den Spieler Seiten. Das Gute ist, es sind die einzigen Links, die es innerhalb von tbody gibt. Es reicht also völlig aus, wenn Du zuerst auf das erste tbody Tag zugreifst (wichtig, mit Index 0) und dann auf alle darin enthaltenen a Tags (machst Du schon in der For i Schleife, die alle Indizes der Node Collection zu a abklappert)). Im Code Deines Testmakros brauchst Du dafür lediglich die Zeile mit querySelectorAll() gegen diese austauschen:
With Html.getElementsByTagName("tbody")(0).getElementsByTagName("a")
Das rauslösen der ID ist dann nur eine String Operation. Den vorderen Teil wegschneiden, den hinteren Teil wegschneiden. Die URLs zu den Player Seiten sind immer gleich aufgebaut. Die codest Du also so, dass nur die ID dynamisch ausgetauscht wird. Aber wie gesagt, probiere erstmal an die gewünschten Werte einer Player Seite zu kommen, bzw. schaue in der runtergeladenen HTML Datei nach, ob alle Werte enthalten sind, die Du möchtest.

Viel Spaß beim weitertüfteln am Makro :-)

Zwenn


Anzeige
AW: Web Scraping
17.03.2023 09:27:59
Reaper Grim
Hi Zenn,

ja Du hast Recht mit dem auslesen diverser Stats der einzelen Player. An die Werte der einzelnen Player ran zu kommen ist kein Problem, das läuft bereits, jedoch musste ich hier immer die individuelle ID manuell einpflegen was müsig ist, deshalb wollte ich das ganze automatisiert machen.

Was ich komisch finde ist, dass ich mit dem "tbody" ebenfalls rum expierimentiert hatte aber nicht zum Erfolg gekommen bin, aber jetzt funktioniert es wunderbar.
Jetzt kann es an den Feinschliff gehen.
Recht vielen Dank für Deine schnelle Antwort :-)

PS: was würdest Du im Code anders schreiben ?

viele Grüße

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige