Radio-Playlist scrapen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
rookie_alex
User
Beiträge: 8
Registriert: Dienstag 2. Januar 2018, 14:55

Liebe Community-Experten,

ich komme mit einem Programmierproblem einfach nicht weiter, ich habe schon unzählige Stunden mit Recherchieren und Probieren verbracht, bitte gebt mir einen Tip:

Ich möchte den gerade gespielten Song einer Radiostation auslesen, die gewünschte Information kann ich im Inspektor von Firefox auch sehen, ich bekomme sie aber einfach nicht ausgelesen. Offensichtlich verhält sich der Browser anders als der Parser. Ich kann auch nicht erkennen, wo die Information herkommt und ob man sie vielleicht per json abholen kann.

Hier ist mein kurzer Code, der bei ähnlichen Sachen auch gut funktioniert

Code: Alles auswählen

from bs4 import BeautifulSoup
import urllib
import html5lib
r = urllib.request.urlopen('https://www.kissfm.de/programm/trackfinder/')
soup = BeautifulSoup(r, "html5lib")
print (soup.prettify()[0:32000])
resultlist = soup.find_all("div", {'class': 'info'})
print(len(resultlist))
ergebnis = 0
i = 0
while i < len(resultlist):
    print(resultlist[i])
    i = i + 1
Bin für jeden Hinweis dankbar, herzlichen Dank im Voraus - Alex
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Habe ich dir doch schon im letzten Postingserklärt. Du musst den Network Tab deines Browser Debuggers bemühen, und dort nach dem Netzwerkverkehr schauen. Da findet sich dann auch der Aufruf zur Aktualisierung der Playlist.
rookie_alex
User
Beiträge: 8
Registriert: Dienstag 2. Januar 2018, 14:55

@__deets___ ja, Dankeschön, ist sicher der richtige Ansatz, ich verstehe den Mechanismus aber beim besten Willen nicht, finde keinen entsprechenden Link........
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst mit Rechtsklick auf inspect element oder sowas ähnliches gehen, und dann in dem sich öffnenden die Debugger-Fenster nach einem Tab gucken welches Network oder so heißt. Und dazu kann man sich auch Hilfe zurecht googeln denke ich mal.
rookie_alex
User
Beiträge: 8
Registriert: Dienstag 2. Januar 2018, 14:55

Ja, Dankeschön, ich werd mich erst mal mit meinem Browser befassen.....
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Am Thema bin ich auch interessiert! Die Website, die du parsen willst, besteht (fast) nur aus JS. Das, was du im Browser siehst, ist das, was der Browser aus den JS-Sachen macht, so weit ich das verstanden habe. Eigentlich hätte ich zu selenium geraten, was ich hier normalerweise genutzt hätte.

Zu der Sache, die __deets__ gemeint hat, habe ich folgendes gefunden, das ich mir auch aktuell ansehe:

https://egghead.io/lessons/tools-analyz ... e-devtools

Ist nützlich. Ich konnte damit gerade bei einer Seite feststellen, wie die Daten geladen werden. Danke vielmals!!!
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Ich habe es bei einer Seite, mit der ich häufiger zu tun hatte, mal getestet und ich kann mit den Sachen, die ich so finde, keine funktionierende Anfrage schicken. Ich kann mir vorstellen, dass ich noch ein Cookie mitschicken muss, jedenfalls ist bei Webseiten in der freien Wildbahn - meine Meinung - auch mit der Konsole eine analoge saubere Anfrage nicht so einfach möglich.

@ThreadStarter: Schau dir auch mal Selenium an, falls du nicht weiterkommst. Das ist nicht unkompliziert, kann aber ganz brauchbare Lösungen liefern. Ich habe dazu mal einen Kurzvortrag o. ä. gesehen.
Antworten