dealfront_enrichment.py aktualisiert

This commit is contained in:
2025-07-04 04:00:49 +00:00
parent 1e20affda1
commit 5edd76c84e

View File

@@ -86,7 +86,8 @@ class DealfrontScraper:
def login_and_navigate_to_target(self): def login_and_navigate_to_target(self):
""" """
Führt Login durch und navigiert direkt zur Target-URL. Führt den Login durch und navigiert zur Target-Seite via Klick auf den "Quick Link".
Dieser Ansatz ist maximal robust.
""" """
if not self.driver: return False if not self.driver: return False
username, password = self._load_credentials() username, password = self._load_credentials()
@@ -102,17 +103,22 @@ class DealfrontScraper:
self.driver.find_element(By.XPATH, "//button[normalize-space()='Log in']").click() self.driver.find_element(By.XPATH, "//button[normalize-space()='Log in']").click()
logger.info("Login-Befehl gesendet.") logger.info("Login-Befehl gesendet.")
# SCHRITT 2: DIREKTE NAVIGATION (robuster als auf Dashboard zu warten) # SCHRITT 2: NAVIGATION VIA QUICK-LINK-KACHEL
# Eine kurze, feste Pause nach dem Klick, bevor wir die URL wechseln. logger.info("Warte auf Dashboard und 'Prospects finden'-Link in den Quick Links.")
time.sleep(3)
logger.info(f"Navigiere direkt zur Target-URL: {Config.DEALFRONT_TARGET_URL}") # Dieser XPath zielt auf den Link in der "Quick links"-Kachel
self.driver.get(Config.DEALFRONT_TARGET_URL) prospects_link_selector = (By.XPATH, "//a[contains(@href, '/t/prospector/companies')]")
prospects_link = self.wait.until(EC.element_to_be_clickable(prospects_link_selector))
logger.info("'Prospects finden'-Link gefunden. Klicke darauf...")
prospects_link.click()
# SCHRITT 3: NAVIGATION VERIFIZIEREN # SCHRITT 3: NAVIGATION VERIFIZIEREN
verification_selector = (By.XPATH, "//button[normalize-space()='+ Neue Suche']") verification_target_selector = (By.XPATH, "//button[normalize-space()='+ Neue Suche']")
self.wait.until(EC.visibility_of_element_located(verification_selector)) self.wait.until(EC.visibility_of_element_located(verification_target_selector))
logger.info("'Target'-Seite erfolgreich geladen.")
logger.info("'Target'-Seite erfolgreich und vollständig geladen.")
return True return True
except Exception as e: except Exception as e:
logger.critical(f"Login- oder Navigationsprozess fehlgeschlagen: {type(e).__name__}", exc_info=True) logger.critical(f"Login- oder Navigationsprozess fehlgeschlagen: {type(e).__name__}", exc_info=True)
self._save_debug_artifacts() self._save_debug_artifacts()