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

TradeRepublicCrawler

Module Contents

class read_transactions.webcrawler.trade_republic.TradeRepublicCrawler(*args, **kwargs)

Bases: read_transactions.webcrawler.WebCrawler

TradeRepublicCrawler

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:
  1. Login mit Telefonnummer und PIN.

  2. Zwei-Faktor-Authentifizierung (SMS- oder App-Code).

  3. Scrollen und Laden aller Transaktionen.

  4. Extraktion und Verarbeitung der Transaktionsdaten.

  5. Optionale Speicherung der Daten im Ausgabeverzeichnis.

Voraussetzung:

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.

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'