Python + beautifulsoup4 - Daten von dynamischer Karte in CSV-Excel-File exportieren / dumpen

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
betagurke
User
Beiträge: 7
Registriert: Donnerstag 30. April 2020, 00:13

Hallo Community,

ich habe folgende Seite vorliegen:

Ich möchte gerne alle Adressen, Telefonnummern und Firmennamen in eine Excel-Datei dumpen.

Ich hatte mir gedacht, das via beautifulsoup4 zu realisieren.

Alle "Shops" werden jeweils unter der div-Class "storefinder__list-item" gelistet, dort finden sich Unterklassen mit der Bezeichnung "storefinder-item__x". Das X steht hierbei für die einzelnen Daten die ich brauche und gerne exportieren möchte (Adresse, Telefonnummer, Name), z.B.: "storefinder-item__title", innerhalb dieser div-Klasse liegt dann h5 mit dem jeweiligen String.

Das Problem: Die Karte ist "dynamisch", die jeweiligen Einträge werden erst dann geladen, wenn man einen Ort oder eine PLZ eingibt - dann erscheinen alle Shops in einem bestimmten Umkreis für diese PLZ.

Die Search Bar hat die div-Klasse "storefinder-search__input", diese ist standardmäßig mit der PLZ von München gefüllt. Eine Idee ist, dem Script mitzuteilen, die PLZ zu "replacen" bzw. einzutragen - auf Basis einer txt-Datei mit Postleitzahlen - der Prozess soll solange wiederholt werden, bis alle PLZs abgefragt wurden. Anschließend wird die "temporäre Liste" auf Duplikate geprüft, bereinigt und dann in die finale Excel/CSV-Datei exportiert.

Meine Frage(n):
1. Macht es insoweit überhaupt Sinn, für dieses Vorhaben bs4 zu nutzen? Ist das umsetzbar?
Falls nein: Welche Alternativen gäbe es?
Falls ja: Wie kann ich das Problem mit der "dynamischen Karte" lösen? Gibt es irgendwie einen Weg, die Eingabe der PLZ zu umgehen und direkt alle Shops deutschlandweit anzuzeigen, sodass ich diese exportieren kann?

Vielen Dank im Voraus für Eure Hilfe!

Beste Grüße,
gurke
betagurke
User
Beiträge: 7
Registriert: Donnerstag 30. April 2020, 00:13

Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

@betagurke: Ob da für requests + bs4 ausreicht, hängt von de Webseite ab. Das funktioniert nur, wenn du die Anfrage an den Server so absetzen kannst, dass du das gewünschte Ergebnis erhälst - und zwar ohne dass der Server die Informationen per JavaScript in die Webseite einbaut.
Dafür musst du mit den Entwicklerwerkzeugen deines Webbrowser herausfinden was da passiert.

Mit Selenium kann man einen Webbrowser fernsteuern.
Antworten