Hallo zusammen,
ich würde gerne "guten" Programmcode schreiben und bin mir nicht sicher, wie ich das folgende Anwendungsszenario als Python-Anfänger sinnvoll abbilden kann. "Irgendwie" wäre problemlos möglich, aber das soll nicht Sinn und Zweck der Übung sein. Hier geht es primär darum, ein grundlegendes Verständnis der Methoden und Werkzeuge zu erlangen.
Szenario: Ich möchte einen Bot schreiben, der durch meine (eigene!) Website bei bekannter Struktur kreuz und quer navigiert. Für die tatsächliche Umsetzung der "Klicks" auf der Website nutze ich Selenium (für das Szenario allerdings nicht weiter relevant).
Meine Website sieht wie folgt aus. Die Struktur ist konstant.
Home ├── About Us └── Members ├── Peter │ └── Publications ├── Paul └── Mary
Anforderung: Der Bot soll in der Lage sein, mit dem Parameter "wo_bin_ich" und "wo_soll_ich_hin" den kürzesten Weg durch den Baum zu gehen. Pro Knoten soll dann eine Funktion ausgeführt werden, die im Browser zu ebendiesem Knoten navigiert.
Beispiel: Ich möchte von Home-> Members-> Mary zu Home-> Members-> Peter → Publications wandern.
Der kürzeste Pfad wird errechnet =⇒ Mary → Members → Peter → Publications
Gehe von der Website Mary zur Website Members
Gehe von der Website Members zur Website Peter
Gehe von der Website Peter zur Website Publications
Umsetzungsidee:
Baumstruktur:
Für den Aufbau des Trees nutze ich eine Python Bibliothek wie z.B. anytree
Den Pfad von einer Node zur nächsten lasse ich mir Schritt für Schritt durch einen Walker ausgeben
"Execution" der Navigation im Webbrowser:
Für tatsächliche "execution" der Navigation schreibe ich eine Funktion, die über Selenium die "passende" Aktion auf der Website vornimmt. Hier würde ich über eine elif Abfrage erfragen, wo ich gerade bin und dann die Navigation ausführen (z.B.: if website == peter or website == paul or website == mary: \ =⇒ Selenium klickt auf den "Zürück" Hyperlink)
Es wird durch die Seitenüberschrift überprüft, ob ich tatsächlich auf der "Members" Website gelandet bin.
Wenn ja, nächster Schritt, wenn nein, starte von Home
Daher einfach die Fragen in die Runde:
Klingt das nach einer ordentlichen Struktur? Falls nein, was würdet ihr ändern?
Mit welchen Bordwerkzeugen / Libraries würdet ihr zur Umsetzung des "Walkers" arbeiten? Für mich sieht Anytree auf den ersten Blick sehr brauchbar aus. Wie seht ihr das?
Danke in jedem Fall, dass ihr bis hierhin gelesen habt 😉.
Gruß jaik