From 4255ee875d2f03287ffb28929bf1769c648ae53a Mon Sep 17 00:00:00 2001 From: Floke Date: Thu, 17 Jul 2025 10:31:40 +0000 Subject: [PATCH] =?UTF-8?q?Erg=C3=A4nzung=20um=20hat=20gekauft?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Erweiterung, dass Käufer ausgeschlossen werden. --- scrape_fotograf.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/scrape_fotograf.py b/scrape_fotograf.py index d8358d89..9e60a0ad 100644 --- a/scrape_fotograf.py +++ b/scrape_fotograf.py @@ -18,7 +18,7 @@ OUTPUT_DIR = 'output' OUTPUT_FILE = os.path.join(OUTPUT_DIR, 'supermailer_fertige_liste.csv') LOGIN_URL = 'https://app.fotograf.de/login/login' -# --- Selektoren --- +# --- Selektoren (FINALE, VOLLSTÄNDIGE VERSION) --- SELECTORS = { "cookie_accept_button": "#CybotCookiebotDialogBodyLevelButtonLevelOptinAllowAll", "login_user": "#login-email", @@ -32,6 +32,8 @@ SELECTORS = { "person_vorname": ".//span[text()='Vorname']/following-sibling::strong", "person_logins": ".//span[text()='Logins']/following-sibling::strong", "person_access_code_link": ".//a[contains(@data-qa-id, 'guest-access-banner-access-code')]", + # NEU: Selector zur Überprüfung, ob ein Kauf getätigt wurde + "purchase_icon": ".//img[@alt='Bestellungen mit diesem Foto']", "potential_buyer_link": "//a[contains(@href, '/config_customers/view_customer')]", "quick_login_url": "//a[@id='quick-login-url']", "buyer_email": "//span[contains(., '@')]" @@ -167,7 +169,22 @@ def process_full_job(driver, job_url): if int(login_count_text) <= 1: vorname = person_row.find_element(By.XPATH, SELECTORS["person_vorname"]).text - print(f" --> ERFOLG: '{vorname}' mit {login_count_text} Login(s) gefunden!") + + # --- NEUE KAUF-PRÜFUNG --- + try: + # Finde den Foto-Container, der dem Info-Block folgt + photo_container = person_row.find_element(By.XPATH, "./following-sibling::div[1]") + # Prüfe, ob darin ein Warenkorb-Icon existiert + purchase_icons = photo_container.find_elements(By.XPATH, SELECTORS["purchase_icon"]) + if len(purchase_icons) > 0: + print(f" --> INFO: '{vorname}' hat bereits gekauft. Überspringe.") + continue # Springe zur nächsten Person + except NoSuchElementException: + # Kein Foto-Container gefunden, also auch kein Kauf + pass + # --- ENDE KAUF-PRÜFUNG --- + + print(f" --> ERFOLG: '{vorname}' mit {login_count_text} Login(s) gefunden (und kein Kauf).") access_code_page_url = person_row.find_element(By.XPATH, SELECTORS["person_access_code_link"]).get_attribute('href') driver.get(access_code_page_url)