18.11.2019, 09:18 (Dieser Beitrag wurde zuletzt bearbeitet: 18.11.2019, 09:18 von sarkami.)
Guten morgen,
danke dass du dir die zeit genommen hast schauan.
Habe die stellen im quelltext der webpage gefunden (Bild1). Ja tatsache, beim datum kommt < br > vor, aber zwischen den beiden zahlen kommt kein < br > vor.
In Bild2 hab ich die markierung mal vergrössert: man sieht klar dass 1.02 und 961 in zwei unterschiedlichen zellen markiert sind, aber in excel dann zu einer werden, zu 1.02961. Kann man die 1.02961 auf excel irgendwie rückrechnen zu 1.02 und 961? problem hierbei zb: aus zb 1.20 und 888 wird 1.2888 und aus 1.28 und 88 wird auch 1.2888 ...
Optisch im web sieht man die trennung, aber excel erkennt es nicht.
18.11.2019, 13:41 (Dieser Beitrag wurde zuletzt bearbeitet: 18.11.2019, 13:43 von Zwenn.)
Hallo sarkami,
wenn Du die Werte manuell aus dem Browser kopieren willst, bleibt Dir nix anderes übrig, als sie einzeln zu holen. Wie Schauan schon gezeigt hat, werden die betreffenden Werte im HTML Quelltext nicht getrennt, sondern stehen direkt hintereinander. Auf der Seite werden sie durch die CSS-Klassen, die den Tags zugeordnet sind, optisch getrennt dargestellt. Diese Informationen gehen beim manuellen Kopieren aber verloren und Excel "sieht" nur den reinen Text pro Tabellenzelle.
Automatisiert kann man die Werte allerdings sehr leicht für sich betrachten, da es dann die Möglichkeit gibt, direkt die CSS-Klassen abzufragen. Um die ganze Tabelle so aufzubauen, wie sie auf der Seite steht, ist einiges Brimborium nötig, um alle Zellen den richtigen Zeilen und Spalten zuzuordnen. Dafür habe ich im Moment keine Zeit. Im folgenden Makro kannst Du aber beispielhaft sehen, wie man die beiden Werte der gleichen Zelle für sich ausliest. Da Dein Link nicht mehr funktioniert, habe ich einen anderen rausgesucht:
Code:
Sub OhneZeilenUmbruch()
Dim browser As Object Dim url As String Dim knotenAlleZellwerteOben As Object Dim knotenAlleZellwerteUnten As Object Dim knotenZellNr As Long Dim zellWerte As String
'Internet Explorer initialisieren, Sichtbarkeit festlegen, 'URL aufrufen und warten bis Seite vollständig geladen wurde Set browser = CreateObject("internetexplorer.application") browser.Visible = False 'browser.FullScreen = True browser.navigate url Do Until browser.ReadyState = 4: DoEvents: Loop 'Manuelle Pause, damit die Seite komplett zur Verfügung steht Application.Wait (Now + TimeSerial(0, 0, 3))
'Jeweils den oberen und unteren Zellwert anhand der CSS Klasse als NodeCollection holen Set knotenAlleZellwerteOben = browser.document.getElementsByClassName("js-odds biab_odds") Set knotenAlleZellwerteUnten = browser.document.getElementsByClassName("biab_bet-amount")
'Sofern immer 2 Werte in einer Zelle stehen, kann man anhand der Anzahl aller Elemente in 'einer Node Collection die gewünschten Teilstrings in einer Schleife aus den NodeCollections 'auslesen If Not knotenAlleZellwerteOben Is Nothing Then For knotenZellNr = 0 To knotenAlleZellwerteOben.Length - 1 zellWerte = zellWerte & "Zelle " & knotenZellNr + 1 & ":" & Chr(13) & _ knotenAlleZellwerteOben(knotenZellNr).innertext & Chr(13) & _ knotenAlleZellwerteUnten(knotenZellNr).innertext & Chr(13) & Chr(13) Next knotenZellNr End If
'Aufräumen browser.Quit Set browser = Nothing Set knotenAlleZellwerteOben = Nothing Set knotenAlleZellwerteUnten = Nothing
'Beispiel ausgeben MsgBox zellWerte End Sub
Viele Grüße,
Zwenn
Folgende(r) 1 Nutzer sagt Danke an Zwenn für diesen Beitrag:1 Nutzer sagt Danke an Zwenn für diesen Beitrag 28 • sarkami
Wie müsste der Code modifiziert sein, so dass man bei: 'Beispiel ausgeben, anstatt erscheinen einer MsgBox, die Daten Paare in die Zellen A1+A2, B1+B2, C1+C2 usw bekommt, (dann nächste Zeile in A3+A4, B3+B4 usw, übernächste Zeile in A5+A6, B5+B6 usw)?
Und bei jeder Aktualisierung dabei die vorhandenen Daten in den Zellen durch die jeweils neuen korrespondierenden Daten ersetzt werden?
(19.11.2019, 16:38)sarkami schrieb: wow Dank dir für den Code Zwenn.
Wie müsste der Code modifiziert sein, so dass man bei: 'Beispiel ausgeben, anstatt erscheinen einer MsgBox, die Daten Paare in die Zellen A1+A2, B1+B2, C1+C2 usw bekommt, (dann nächste Zeile in A3+A4, B3+B4 usw, übernächste Zeile in A5+A6, B5+B6 usw)?
Und bei jeder Aktualisierung dabei die vorhandenen Daten in den Zellen durch die jeweils neuen korrespondierenden Daten ersetzt werden?
Hallo sarkami,
meinen Code kann man nicht enfach modifizieren, damit er das macht, was Du möchtest. Das ist nämlich genau das Brimborium, von dem ich schrieb. Ich habe nur gezeigt, dass man die Werte jeweils für sich holen kann. Das hat aber mit dem Tabellenaufbau gar nix zu tun. Die Seitenbetreiber bauen die Tabelle einigermaßen kompliziert auf. Warum wissen nur sie selbst. Zum Auslesen müsste man zu jeder Zeit wissen, in welcher Zeile und Spalte man sich gerade befindet. Dabei ist zu berücksichtigen, dass es auch leere Zellen gibt. Das geht über den Aufbau der Tabelle natürlich "automatisch", wenn man seinen Code zum Auslesen entsprechend aufbaut. Das ist mir aber im Moment zu aufwändig, um es "mal eben" umzusetzen. Sprich, ich habe einfach gerade keine Zeit dafür. Zumal ich annehme, Du willst nicht nur eine Seite mit 4 Werten auslesen, sondern mehrere Links abklappern. Da müsste man erstmal noch untersuchen, ob es andere Eventualitäten gibt, die abgefangen werden müssen oder Werte, die auf andere Weise ausgelesen werden müssen. Wie gesagt, ist mir gerade zu aufwändig.
Aktualisieren würde ich die Daten gar nicht. Dazu brauchst Du nämlich einen eindeutgen Identifikator, an dem Du erkennst welcher Datensatz der Internetseite welchem in der Excel-Tabelle entspricht. Den sehe ich aber nicht. Also würde ich die Tabelle bei jedem Auslesen einfach neu durch das Makro aufbauen lassen.
Es gibt hier noch andere Leute, die sich mit dem Auslesen von Internetseiten auskennen und noch mehr, die die Logik des Tabellenaufbaus durchschauen. Ich weiß natürlich nicht welche Programmierkenntnisse Du mitbringst. Aber wenn Du Dich da reinfuchsen willst, bekommst Du das auch hin.
Viele Grüße,
Zwenn
Folgende(r) 1 Nutzer sagt Danke an Zwenn für diesen Beitrag:1 Nutzer sagt Danke an Zwenn für diesen Beitrag 28 • sarkami
Ok verstehe, schade. Ja meine Programmierkenntnisse sind leider sehr überschaubar.
Wäre dann die Änderung bei 'Beispiel ausgeben möglich, anstatt dass die Datenpaare in einer MsgBox erscheinen, die Daten einfach ins Excel Worksheet bzw die Spalten A und B kommen?
ich habe nochmal in den HTML Code geguckt und mit einem kleinen Trick ist es wahrscheinlich weniger komplex, als ich vermutet hatte. Die Seite hat allerdings ein ungültiges Sicherheitszertifikat. Auf das wird im IE nun bei jedem Aufruf hingewiesen. Man kommt also über das normale Aufrufen der URL gar nicht ohne weiteres auf die Seite.