Der Anmeldebot

Diagramm Anmeldebot

Beschreibung

Meine Freundin ist Medizinstudentin und steht vor ihrem PJ. Die Praktikumsplätze in Gießen sind jedoch rar. Also habe ich eine Anwendung geschrieben, die sich auf der Website für PJ-Praktika einloggt und den Praktikumsplatz sichert. Ich habe mir dafür den ChromeDriver (Version 133) heruntergeladen und Selenium als Abhängigkeit über pip installiert. Dadurch kann ich in meinem Pythonskript den ChromeDriver aufrufen, der über eine Chrome-Instanz zur Website navigiert. Über CSS-Selektoren aus dem Seleniumpaket kann der Bot die Website untersuchen und wichtige Felder wie „Username“, „Password“ und „Submit“ identifizieren und nutzen. Anschließend navigiert er zum richtigen Reiter und muss dann nur noch die Seite refreshen, bis das gewünschte Praktikum frei wird. Die Website ist so designt, dass kontinuierliches Refreshen ausreicht, um den Platz zu bekommen, wenn er frei wird. Der Bot endet, wenn der Platz erhalten wurde. Um Updates zu erhalten, habe ich mir ein Telegram-API-Token erstellt. Damit kann der Bot Telegramnachrichten direkt an mein Handy senden. Damit das Ganze nicht mehr lokal über meinen Computer laufen muss, habe ich den Bot mit pyInstaller zu einer .exe gebaut und eine EC2-Instanz erstellt. Dafür reicht meiner Meinung nach eine kostenlose t3.micro-Instanz. Ich habe nur noch die Anmeldebot.exe mit allen benötigten Verzeichnissen auf die EC2-Instanz geschoben und von da aus gestartet. Fertig!

Hindernisse

- Die Seite wird manchmal nicht schnell genug geladen, deshalb greift der CSS Selektor ins Leere.

-> Lösung: Längerer Thread.sleep, oder überprüfen, ob die Seite richtig geladen wurde.

Learnings

- Wie mache ich mein Pythonskript standalone.

- Wie nutze ich Selenium, um einen Bot zu schreiben, der X macht.

- Wie nutze ich die Telegram API.

- Wie erstelle ich eine EC2 Instanz in der AWS Console und deploye darauf mein Skript.

Erweiterungen

Der Bot bzw. die EC2-Instanz schaltet sich von 01:00 bis 06:00 Uhr morgens ab. Ein Platz wird nur frei, wenn ihn ein anderer Student frei gibt. Die Wahrscheinlichkeit, dass ein Platz in dieser Zeit frei wird, ist sehr gering. So lassen sich potentielle Kosten einsparen. Über das Programm Crontab könnte die EC2-Instanz den Bot dann automatisiert ausführen, ohne dass mein Eingreifen erforderlich ist.