Rechnungen automatisch von DHL Geschäftskundenportal downloaden

Du hast eine Idee für ein Projekt?
Antworten
ch049
User
Beiträge: 4
Registriert: Dienstag 24. März 2026, 09:46

Hallo Zusammen,

Ich bin neu im Forum, bin selbstständig und möchte ein paar Prozesse automatisieren.
Beispielsweise muss ich regelmäßig vom DHL Portal die aktuellen Rechnungen herunterladen.
Ich habe bereits Selenium und Phyton auf dem Laptop und mir von der KI einen Code programmieren lassen.
Es klappt fast alles, aber erkennt den Download Button nicht. Ich lade später ein paar Infos noch hoch.
Sirius3
User
Beiträge: 18384
Registriert: Sonntag 21. Oktober 2012, 17:20

Eigentlich sollte man nicht versuchen, irgendwas von einer Webseite herauszusuchen, sondern man benutzt die offizielle API: https://developer.dhl.com/
Benutzeravatar
sparrow
User
Beiträge: 4647
Registriert: Freitag 17. April 2009, 10:28

Was übrigens ganz wunderbar klappt, wenn man nicht vergisst, dass man alle 6 Monate einmal ohne API ins Portal einloggen muss.
ch049
User
Beiträge: 4
Registriert: Dienstag 24. März 2026, 09:46

ich wollt gerade den Code hochladen, ich schau mir das mal an. Danke!
ch049
User
Beiträge: 4
Registriert: Dienstag 24. März 2026, 09:46

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time

# ---------------------------------------------------
# KONFIGURATION
# ---------------------------------------------------
USERNAME = "Username"
PASSWORD = "Passwort"

DOWNLOAD_DIR = r"C:\Users\ch-ha\Documents\Belegtransfer\364307-56696\Rechnungseingang"

LOGIN_URL = " https://sso.geschaeftskunden.dhl.de/aut ... ethod=S256"
RECHNUNGEN_URL = " https://geschaeftskunden.dhl.de/billing ... e/overview"

# ---------------------------------------------------
# SELENIUM EINRICHTEN
# ---------------------------------------------------
chrome_options = Options()
chrome_options.add_experimental_option("prefs", {
"download.default_directory": DOWNLOAD_DIR,
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
})

driver = webdriver.Chrome(options=chrome_options)

# ---------------------------------------------------
# LOGIN
# ---------------------------------------------------
driver.get(LOGIN_URL)
time.sleep(3)

driver.find_element(By.ID, "username").send_keys(USERNAME)
driver.find_element(By.ID, "password").send_keys(PASSWORD)
driver.find_element(By.ID, "kc-login").click()

time.sleep(5)

# ---------------------------------------------------
# ZU DEN RECHNUNGEN NAVIGIEREN
# ---------------------------------------------------
driver.get(RECHNUNGEN_URL)
time.sleep(5)

# ---------------------------------------------------
# FALLS DIE RECHNUNGEN IN EINEM IFRAME SIND → WECHSELN
# ---------------------------------------------------
iframes = driver.find_elements(By.TAG_NAME, "iframe")
if len(iframes) > 0:
driver.switch_to.frame(iframes[0])
time.sleep(2)

# ---------------------------------------------------
# ALLE BUTTONS "Rechnung herunterladen" FINDEN
# ---------------------------------------------------
download_buttons = driver.find_elements(By.XPATH,
"//*[contains(text(), 'Rechnung herunterladen')]"
)

print(f"Gefundene Rechnungen: {len(download_buttons)}")

# ---------------------------------------------------
# ALLE BUTTONS ANKLICKEN
# ---------------------------------------------------
for btn in download_buttons:
try:
btn.click()
print("Download gestartet...")
time.sleep(2)
except Exception as e:
print("Fehler beim Download:", e)

print("Alle sichtbaren Rechnungen wurden heruntergeladen.")

driver.quit()
ch049
User
Beiträge: 4
Registriert: Dienstag 24. März 2026, 09:46

https://i.ibb.co/gbXVqZtM/Screenshot-20 ... 230013.jpg

API für Rechnungsdownload gibt es nicht. Es ist ein Button, wenn ich den anklicke, downloaded er die Rechnung
in meinen Download Ordner.

Wenn es einfacheres gibt als Python, bin ich offen. Die Rechnungen müssten dann ja automatisch auch verschoben werden
in meinen Rechnungseingangordner, oder idealerweise automatisch per Mail verschickt werden an Datev.

Es gibt Drittanbieterlösungen für zweistellige monatliche Beiträge, aber ich glaube daran, das man das auch selber hinbekommt.
Benutzeravatar
sparrow
User
Beiträge: 4647
Registriert: Freitag 17. April 2009, 10:28

@ch049: Hast du eigentlich eine Ahnung, was genau Selenium macht und was dieses "find_elemets" exakt tut? Oder hast du jetzt gehofft, dass die KI dir das Verständnis abnimmt? Ich frage das deshalb, weil ich ehrlich gesgt nicht weiß, wie ein Screenshot bei der Hilfestellung helfen soll. Und da du das denkst, muss ich davon ausgehen, dass du nicht weißt, was du tust.

Um Python zu lernen bietet sich das offzielle Python Tutorial in der Dokumentation an. Das richtet sich allerdings explizit an Menschen, die bereits Programmieren könen und neu in Python sind.
Für deine Aufgabe brauchst du auch das Verständnis, was HTML ist und wie es funktioniert.

Meine Motivation Menschen zu helfen, die sich von LLMs irgendwas basteln lassen, dann an ihre Grenzen stoßen und hoffen, dass der Rest von Menschen kostenlos beigetragen wird, ist quasi nicht vorhanden.

Ansonsten empfehle ich bei DHL einfach e-Billing zu machen und die Rechnungen per Mail senden zu lassen.
Antworten