read_transactions.webcrawler.paypal

author:

Tim Häberlein

version:

1.0

date:

03.11.2025

organisation:

TU Dresden, FZM

Paypal Crawler

Crawler für Paypal.com – lädt Transaktionen im csv Format herunter.

Verwendung:

from read_transactions.webcrawler.paypal import PaypalCrawler

with PaypalCrawler(logging_level=“DEBUG“) as crawler:

crawler.login() crawler.download_data() crawler.process_data() crawler.save_data()

Attributes

Classes

Report

Repräsentiert einen Berichtseintrag auf der Archiv Seite von Paypal.

PaypalCrawler

Crawler für Paypal.

Module Contents

class read_transactions.webcrawler.paypal.Report

Repräsentiert einen Berichtseintrag auf der Archiv Seite von Paypal.

row

Die Tabellenzeile des Berichts.

Type:

WebElement

download_btn

Der Download-Button für den Bericht.

Type:

WebElement

start_date

Startdatum des Berichts.

Type:

Optional[pd.Timestamp]

end_date

Enddatum des Berichts.

Type:

Optional[pd.Timestamp]

gen_date

Erstellungsdatum des Berichts.

Type:

Optional[pd.Timestamp]

raw_date

Rohtext des Datumsbereichs.

Type:

str

raw_gen_date

Rohtext des Erstellungsdatums.

Type:

str

row: selenium.webdriver.remote.webelement.WebElement
download_btn: selenium.webdriver.remote.webelement.WebElement
start_date: pandas.Timestamp | None
end_date: pandas.Timestamp | None
gen_date: pandas.Timestamp | None
raw_date: str
raw_gen_date: str
class read_transactions.webcrawler.paypal.PaypalCrawler(*args, **kwargs)

Bases: read_transactions.webcrawler.WebCrawler

Crawler für Paypal.

Der Crawler automatisiert den Login auf paypal.com, lädt alle Transaktionen im gewählten Datumsbereich herunter und konvertiert sie in ein einheitliches CSV-Format.

Ablauf:
  1. Login mit Benutzername + 4-stelliger PIN

  2. Öffnen der Transaktionsseite

Erfordert:
  • gültige Zugangsdaten in config.yaml

  • hinterlegte URLs für login und transactions

  • funktionierenden Selenium-WebDriver (Edge / Chrome / Firefox)

Beispiel:

`bash readtx run paypal --start 01.01.2024 --end 31.03.2024 --log_level DEBUG `

Parameter

logfilestr, optional

Pfad zu einer Logdatei. Wenn None, wird nur in die Konsole geloggt.

output_pathstr, optional

Verzeichnis, in dem die verarbeiteten Daten gespeichert werden. Standard: out.

start_datestr | pandas.Timestamp | datetime.date, optional

Startdatum für den Download (Format: dd.mm.yyyy). Standard: heutiges Datum.

end_datestr | pandas.Timestamp | datetime.date, optional

Enddatum für den Download (Format: dd.mm.yyyy). Standard: sechs Monate vor start_date.

logging_levelstr, optional

Log-Level der Crawler-Instanz (z. B. „DEBUG“, „INFO“, „WARNING“). Standard: INFO.

global_log_levelstr, optional

Globales Log-Level für das gesamte Paket (Standard: INFO).

browserstr, optional

Zu verwendender Browser-Treiber (edge, chrome oder firefox). Standard: edge.

headlessbool, optional

Falls True, wird der Browser im Hintergrundmodus gestartet. Standard: False.

user_agentstr, optional

Optionaler User-Agent-String für den Browser.

Attribute:

account_balance (str): Aktueller Kontostand nach erfolgreichem Login. data (pd.DataFrame): Aufbereitete Transaktionsdaten.

_verified = False
login()

Führt den Login auf Paypal durch.

download_data()

Lädt die Transaktionsdaten im CSV-Format herunter.

process_data(*args, **kwargs)

Verarbeitet die heruntergeladenen CSV-Dateien und konsolidiert sie in ein DataFrame.

preprocess_data(key: str, df: pandas.DataFrame) pandas.DataFrame

Überschreibt die preprocess_data Methode der Basis-Klasse für Paypal-spezifische Anpassungen. - Filtert und benennt Spalten um - Bereinigt bestimmte Transaktionstypen - Integriert Hinweise in den Verwendungszweck

_login_enter_username(timeout: int = 180) bool

Gibt den Benutzernamen auf der Login-Seite ein und drückt „Weiter“.

_login_enter_password()

Gibt das Passwort auf der Login-Seite ein und drückt „Anmelden“.

_verify_identity(timeout: int = 180) bool

Führt die 2-Faktor-Authentifizierung durch (z. B. PIN-Eingabe).

_check_available_reports() list[Report]

prüft verfügbare Berichte auf der Transaktionsseite

Rückgabe:

Liste der verfügbaren Berichte mit Metadaten.

Rückgabetyp:

list[Report]

_generate_new_report(start_date: pandas.Timestamp | None = None, end_date: pandas.Timestamp | None = None, timeout: int = 180) bool

Erstellt einen neuen Bericht für den gewünschten datumsbereich

Parameter:
  • start_date (pd.Timestamp | None) – Startdatum (inklusive). Wenn None, wird der Standardwert verwendet.

  • end_date (pd.Timestamp | None) – Enddatum (inklusive). Wenn None, wird der Standardwert verwendet.

  • timeout (int) – Maximale Wartezeit in Sekunden für den Berichtserstellungsprozess.

split_dates() list[tuple[pandas.Timestamp, pandas.Timestamp]]

Zerlegt den aktuellen Datumsbereich des Crawlers in Jahressegmente. Sofern der Bereich über mehrere Jahre geht, werden die vollen Jahre als eigene Segmente zurückgegeben. Teiljahre am Anfang und Ende werden ebenfalls berücksichtigt. Sollte das erste Jahr das aktuelle Jahr sein, wird das Enddatum auf das heutige Datum begrenzt.

Rückgabe:

Liste von Tupeln mit (start_date, end_date) für jedes Segment.

Rückgabetyp:

list[tuple[pd.Timestamp, pd.Timestamp]]

read_transactions.webcrawler.paypal.config = None