Selenium mit Python: Tabellenwerte einer Webseite in ein Array auslesen und abspeichern als Datei

Django, Flask, Bottle, WSGI, CGI…
Antworten
isevs
User
Beiträge: 2
Registriert: Mittwoch 9. März 2022, 11:10

HAllo,

habe folgendes Problem und nirgends bis dato dazu gefunden:
1. Vorhanden ist eine Tabelle mit bis zu 200 Zeilen und ca. 30 Spalten
2. die Zelleninhalte würde ich gern in ein Array lesen
3. danach würde ich gerne die Werte in eine Datei (csv?) schreiben um sie jederzeit wieder auslesen zu können.
4. NAch einem Sort-Vorgang auf Buttonklick möchte ich die Werte der Tabelle erneut in ein Array auslesen und in eine andrer Datei speichern.
5. Danach möchte ich die Werte wieder in 2 Arrays aus den Dateien auslesen und die Arrays miteinander vergleichen.

Bemerkung:
ich kann auf einzelne Zellen mittels der xpath-Variable zugreifen und sie in eine Variable meiner Definition zuweisen und sie wird auch mittels Logging-Befehl korrekt gesendet. NAchdem ich aber den Sortierungs-Button angeklickt habe, werden die Variablen, denen ich davor etwas zugewiesen habe nicht mehr 'erkannt' (not state).

Wäre schön, wenn sich jemand dazu äußer würde.

VG
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

Du hast fünf Punkte beschrieben, aber mir ist nicht klar, was davon jetzt nicht funktioniert, welchen Code Du benutzt und um was für eine Internetseite es sich überhaupt handelt.

Deiner Bemerkung nach suchst Du irgendwelche DOM-Knoten, durch das Drücken des Sorterungsbuttons wird das DOM aber neu aufgebaut, was natürlich dazu führt, dass die vorher gesuchten Knoten nicht mehr existieren. Such doch die Knoten einfach nach dem Sortieren erneut.
isevs
User
Beiträge: 2
Registriert: Mittwoch 9. März 2022, 11:10

Hallo,
danke für die Antwort.
Ich bin ziemlich neu im Bereich Selenium / Python.

Mein Problem ist:
NAch Sort-Button: find_element_by_path(...) -> Meldung is unknown.
Wenn ich mit dem Browser drauf geehe zeigt er mir aber für jede Zelle denselben NAmen an wie vorher, nur mit einem anderen Wert.
Klar wenn ich die Seite neu lade, dann 2 Mal auf den Sort-Button klicke, kann ich einzelne Werte bestimmt rauslesen.
Aber ich dachte ich könnte mind. eine ganze Spalte direkt in ein Liste lesen. ID wäre in <th..> vorhanden.
Aber damit bekomme ich doch max. den ersten Eintrag.
Evtl. muß ich mit for-Schleifen arbeiten. Fände ich aber sehr umständlich und dachte es gibt einen 'Befehl' der das automatisch erledigt, ähnlich wie bei split()!?

VG
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

Wir kennen hier die Web-Seite nicht, wir wissen nicht wirklich, was Du für Daten hast.

Wenn Du eine Tabelle lesen willst, dann brauchst Du eine for-Schleife. Einen "mach alles automatisch so wie ich will"-Befehl gibt es selten.

Eventuelle kann Pandas die Tabelle komplett lesen.
Antworten