Web-Scraping einer URL, die einen eventstream liefert

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
Benutzeravatar
pixewakb
User
Beiträge: 1413
Registriert: Sonntag 24. April 2011, 19:43

Ich sehe mit momentan die API einer Website mit der Entwicklerkonsole im Browser an und ich habe eine URL gefunden, die kein Response-Objekt, sondern einen event-Stream als Ergebnis liefert, im Browser kann ich die URL aufrufen und sehe dann JSON-Objekte, wobei alle paar Sekunden nach einer Leerzeile ein neues JSON-Objekt mit neuen, aktualisierten Daten angezeigt wird.

Mit requests habe ich mit einem Work-Around (while-Schleife) geschafft, an die Daten zu kommen, allerdings ist es sehr instabil und es kann auch sein, dass der Abruf scheitert. (Im produktiven Einsatz wäre das eher unschön.)

Kann mir jemand grob erklären, was ein event-Stream ist und wie er funktioniert (ich komme noch aus der php-Zeit, wo der Client eine URL anfordert und der Server eine HTML-Seite zurückliefert - ein event stream muss anders realisiert sein).

Welche Bibliothek würdet ihr einsetzen? Bei requests finde ich kaum Beispiele zum stream-Feature und die gängigen Beispiele funktionieren auch, nur nicht unbedingt mit meiner Seite. (Die Seite bzw. die konkrete URL benötige ich nicht unbedingt zum glücklich sein, es ist das erste Mal, dass ich vor so einer URL stehe und würde gern verstehen, was mir da Daten liefern möchte und wie ich die entgegennehmen sollte.)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ohne die zu kennen kann ich nur spekulieren - ich denke mal es ist ein Websocket. Dafür gibt’s einiges in Python.
Benutzeravatar
pixewakb
User
Beiträge: 1413
Registriert: Sonntag 24. April 2011, 19:43

@__deets__, danke! Ich habe jetzt diese Bibliothek gefunden und konnte es damit zum Laufen bringen, es läuft, ist anders, als ich es gewohnt bin, aber es läuft: https://pypi.org/project/sseclient/

Falls jemand dazu noch Ideen hat, z. B. bessere Bibliotheken, wäre ich für Hinweise dankbar.
Antworten