read_transactions.webcrawler.trade_republic¶
- author:
Tim Häberlein
- version:
2.0
- date:
25.10.2025
- organisation:
TU Dresden, FZM
TradeRepublicCrawler¶
Crawler für TradeRepublic – lädt Transaktionen im gewählten Zeitraum herunter und führt sie in ein einheitliches Format über.
Der Crawler orientiert sich an der Architektur der ArivaCrawler- und AmazonVisaCrawler-Klassen. Er nutzt Selenium zur Browsersteuerung, greift auf Anmeldedaten aus der zentralen config.yaml zu und setzt auf die generische Basisklasse WebCrawler, die Standardfunktionen wie Logging, Fehlerbehandlung, Warte- und Retry-Mechanismen, Datendownload und Dateiverarbeitung bereitstellt.
Attributes¶
Classes¶
TradeRepublicCrawler |
Module Contents¶
- class read_transactions.webcrawler.trade_republic.TradeRepublicCrawler(*args, **kwargs)¶
Bases:
read_transactions.webcrawler.WebCrawlerTradeRepublicCrawler¶
Crawler für Transaktionsdaten von Trade Republic.
Der Crawler automatisiert den Login im Webinterface von [https://app.traderepublic.com](https://app.traderepublic.com), lädt alle Transaktionen im gewählten Zeitraum, verarbeitet die Daten zu einem strukturierten pandas-DataFrame und speichert sie optional als CSV.
- Ablauf:
Login mit Telefonnummer und PIN.
Zwei-Faktor-Authentifizierung (SMS- oder App-Code).
Scrollen und Laden aller Transaktionen.
Extraktion und Verarbeitung der Transaktionsdaten.
Optionale Speicherung der Daten im Ausgabeverzeichnis.
- Voraussetzung:
- Gültige Zugangsdaten in config.yaml unter:
-
- trade_republic:
# ohne +49 Ländervorwahl user: 1701234567 password: 1234
- urls:
- traderepublic:
login: https://app.traderepublic.com/login transactions: https://app.traderepublic.com/profile/transactions
Installierter Selenium-WebDriver (Edge, Chrome oder Firefox)
Python ≥ 3.10
Parameter¶
- detailsbool, optional
Falls True, werden bei Kauf-/Verkaufsorders zusätzliche Details (Stückzahl, Stückpreis, Gebühren, etc.) extrahiert. Standard: True.
- output_pathstr, optional
Zielverzeichnis, in dem heruntergeladene oder verarbeitete Dateien gespeichert werden. Standard:
out.- start_datestr | pandas.Timestamp | datetime.date, optional
Startdatum für den Transaktionsabruf. Format:
"dd.mm.yyyy". Standard: heutiges Datum.- end_datestr | pandas.Timestamp | datetime.date, optional
Enddatum für den Transaktionsabruf. Format:
"dd.mm.yyyy". Standard: sechs Monate vor start_date.- logging_levelstr, optional
Log-Level der Crawler-Instanz (z. B.
"DEBUG","INFO"). Standard:"INFO".- global_log_levelstr, optional
Globales Log-Level für das gesamte Paket. Standard:
"INFO".- logfilestr, optional
Pfad zu einer Logdatei. Wenn None, wird nur in die Konsole geloggt.
- browserstr, optional
Zu verwendender WebDriver (
"edge","chrome"oder"firefox"). Standard:"edge".- headlessbool, optional
Falls True, wird der Browser im Hintergrundmodus gestartet. Standard:
False.- user_agentstr, optional
Optionaler benutzerdefinierter User-Agent für den WebDriver.
Attribute¶
- datapandas.DataFrame
Enthält die verarbeiteten Transaktionsdaten nach process_data().
- _credentialsdict
Zugriff auf die aus der Konfiguration geladenen Zugangsdaten.
- _urlsdict
Zugriff auf die aus der Konfiguration geladenen URLs.
- _loggerlogging.Logger
Instanzspezifischer Logger mit konsistenter Formatierung.
Beispiel¶
```python from read_transactions.webcrawler import TradeRepublicCrawler
- with TradeRepublicCrawler(logging_level=“DEBUG“) as crawler:
crawler.login() crawler.download_data() crawler.process_data() crawler.save_data()
- __portfolio_balance = 0.0¶
- _raw_data = []¶
- property portfolio_balance: str¶
Gibt den aktuellen Portfolio-Gesamtwert als formatierten String zurück.
- login() None¶
Führt Login bei Trade Republic aus (User, PIN, 2FA).
- download_data() None¶
Lädt Transaktionsdaten von Trade Republic.
- process_data(*args, **kwargs) None¶
Führt die Rohdaten in ein bereinigtes DataFrame-Format über.
- preprocess_data(key: str, df: pandas.DataFrame) pandas.DataFrame¶
Überschreibt die Basisklassen-Methode, da keine zusätzliche Vorverarbeitung notwendig ist.
- _handle_cookie_banner() None¶
Schließt ggf. das Cookie-Banner über bekannte Buttons.
- _enter_phone() None¶
Gibt die Telefonnummer im Login-Formular ein.
- _enter_pin() None¶
Gibt die PIN im Login-Formular ein.
- _wait_for_login_completed() None¶
Wartet, bis der Login-Prozess abgeschlossen ist.
- _wait_for_account_balance() None¶
Wartet, bis das Konto-Dashboard mit dem Kontostand geladen ist.
- _verify_identity() None¶
Führt Zwei-Faktor-Authentifizierung (SMS oder App) aus.
- _scroll_to_bottom(pause: float = 0.0, stable_rounds: int = 5) None¶
Scrollt die Seite vollständig, bis keine neuen Einträge mehr erscheinen.
- _get_raw_entries() list[dict]¶
Liest Timeline-Elemente direkt per JavaScript aus.
- _process_raw_entries(raw_entries)¶
Verarbeitet die JavaScript-Rohdaten in DataFrame-kompatible Form.
- _get_order_details_from_entry(index: int) dict¶
Klickt auf einen timeline__entry, öffnet die Detailansicht, liest Label–Wert-Paare (Transaktion, Summe, Gebühr, …) aus und schließt das Overlay zuverlässig wieder. Gibt ein Dictionary der gefundenen Details zurück.
- read_transactions.webcrawler.trade_republic.output_path = '../../../out'¶