Seite 1 von 1

Livetiming auslesen

Verfasst: Sa, 01. Mai 2021 13:27
von Christof
Hallo,

hier mal etwas für die HTML-Freaks:

Ich versuche, diese Seite auszulesen, damit ich die Daten (rein privat) in einem Programm benutzen kann.
https://livetiming.azurewebsites.net/event=20?config=w5

Die Seite läuft auch nur, wenn Rennen der NLS (Nürburgring-Langstrecken-Serie) laufen. Z.B. "JETZT" (01.05.2021, 13:25 h).

Wenn ich mir den Quelltext ansehe, dann ist die Tabelle bzw. sind die Daten da gar nicht enthalten. Hat bestimmt etwas mit den Scripts zu tun, aber das kriege ich nicht hin.
Habe auch schon mal mit Selenium herumexperimentiert, aber auch da bin ich einfach noch viel zu laienhaft.

Wer hat eine Idee, eine Lösung?

Merci und Gruß
Christof

Re: Livetiming auslesen

Verfasst: Sa, 01. Mai 2021 18:03
von Marcus Herz
Ich vermute, die Daten kommen da rüber:

Code: Alles auswählen

<script src="/leaderboard.c758.bundle.js">
<script src="/vendor.6f89.bundle.js"></script>

Re: Livetiming auslesen

Verfasst: Sa, 01. Mai 2021 18:24
von georg
Hallo,


wenn es um das Auslesen von JavaScript geht, würde ich mal einen Blick auf phantomjs werfen. Das ist quasi ein Browser ohne Anzeige, mit dem man solche Seiten auslesen können sollte. (ich habe mich vor ein paar Jahren mal damit beschäftigt, aber aus Zeitgründen die Forschungen wieder eingestellt.)

Re: Livetiming auslesen

Verfasst: Sa, 01. Mai 2021 18:47
von ramses
Die Daten werden über die Scripte in kurzen Intervallen vom Server gelesen und entsprechend angepasst.

Ich habe mich auch schon mit einem solchen Fall beschäftigt und dann aufgegeben als ich bemerkt habe dass die Scripte und deren interne Variablen und Aufrufe auch immer wieder dynamisch verändert wurden und nie mit dem vorgehenden Event zusammenpassten. Es sollte damit geziehlt "Automatismus" und Nutzung verhindert werden.

Ich würde mal die Scripte (js) sichern und beim nächsten Event prüfen ob es noch die selben sind...... (MD5)

Wenn du weitemachen willst musst du in den Scripten die entsprechenden Aufrufe suchen mit denen die Daten vom Server abgerufen werden.

Re: Livetiming auslesen

Verfasst: So, 02. Mai 2021 3:21
von Lewi
Hallo,
diese Seite wird dynamisch mittels REACT und AJAX-Techniken erzeugt.

Daten aus einer Html-Tabelle zu extrahieren ist mit JS keine Raketenwissenschaft:

// Spalten auslesen
var table = document.querySelector( "table.sc-kkGfuU bnUbKEe tbody" );
var twentytwoColumn = table.querySelectorAll( "tr + tr td:nth-child(22)");

twentytwoColumn.forEach((element) => {
wert= element.style.data";
});

oder wie folgt:

// alle Table-Elemente der Seite
const allTds = document.querySelectorAll('td')

// Find das td element mit dem Text "labs"
const labsTd = Array.from(allTds).find(td => td.textContent === 'labs')

// Ermittelt den Index dieses Elements in Bezug auf seine Geschwister
const childIndex = Array.from(labsTd.parentNode.children).indexOf(labsTd)

// alle td Elemente in der Tabelle mit dem gleichen child index
const column = labsTd.closest('table').querySelectorAll(`td:nth-child(${childIndex})`

usw....

Viele Grüße,
Olaf

Re: Livetiming auslesen

Verfasst: So, 02. Mai 2021 5:48
von ramses
Hallo

Das geht aber nur wenn die Seite es zulässt dass du dein eigenes script noch einfügen kannst.
Ob dies hier geht? Falls ja hast du recht dann gehts einfach.
Bei meinem Versuch ging es nicht.

Re: Livetiming auslesen

Verfasst: So, 02. Mai 2021 17:10
von Lewi
Da die Seiteninhalte bei Aufruf der Site mit REACT dynamisch erzeugt werden, können extern auf die von React erzeugten Seiteninhalte nicht zugegrifen werden.
Ich habe es mit PHP getestet:

Code: Alles auswählen

        $quelltext_externe_seite = file_get_contents('https://livetiming.azurewebsites.net/event=20?config=w5');
Die Variable $quelltext_externe_seite enthält keine Daten sondern nur das HTML-Rahmengerüst dieser Seite. Die Tabelle wird von React bei dem Tag:

Code: Alles auswählen

<div id="root" style="display: inline-block;"></div>
eingefügt.

Bleibt nur noch die Frage, ob der Betreiber dieser Seite eine öffentlich zugängliche API zum Abruf der Daten zur verfügung stellt. Ansonsten muss die Seite manuell herunter geladen werden um auf die Inhalte zugeifen zu können.

Viele Grüße
Olaf

Re: Livetiming auslesen

Verfasst: Do, 06. Mai 2021 19:00
von Christof
Erstmal DANKE an alle, die sich damit beschäftigt haben.

Scheint also leider nicht einfach zu sein. Aus Sicht des Anbieters verständlich.

@Lewi: Was meinst Du mit „manuell heruntergeladen“?

Ich stecke jetzt auch nicht mehr soooo viel Arbeit rein. Dann bleibt´s eben bei der angebotenen Darstellung. Ich hätte halt gerne z.B. das jeweilige Team und evt. ein Bild vom Auto dazu getan und einige vorhandene Spalten ausgeblendet.

VG
Christof

Re: Livetiming auslesen

Verfasst: Fr, 07. Mai 2021 19:28
von ramses
Christof hat geschrieben: Do, 06. Mai 2021 19:00 Ich hätte halt gerne z.B. das jeweilige Team und evt. ein Bild vom Auto dazu getan und einige vorhandene Spalten ausgeblendet.
Hallo Christof

aus eigener Erfahrung weiss ich dass die Daten-Anbieter z.T. mit nicht unerheblichem Aufwand versuchen genau solche "Nutzung" Ihrer (kostenlos) Daten zu verhindern. Weil meist wollen die (Anbieter) ja Ihre kostenpflichtige API vermarkten ...... Was ja auch verständlich ist .......