From d3afd955ddf58fdda094a5fb47258b7e86f6f08e Mon Sep 17 00:00:00 2001 From: Floke Date: Thu, 3 Jul 2025 20:14:06 +0000 Subject: [PATCH] dealfront_enrichment.py aktualisiert --- dealfront_enrichment.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/dealfront_enrichment.py b/dealfront_enrichment.py index 197d379e..5821d5d8 100644 --- a/dealfront_enrichment.py +++ b/dealfront_enrichment.py @@ -152,19 +152,19 @@ class DealfrontScraper: def extract_current_page_results(self): """ Extrahiert die Firmennamen und Webseiten von der aktuellen Ergebnisseite - unter Verwendung der verifizierten HTML-Struktur. + unter Verwendung der verifizierten und präzisen CSS-Selektoren. """ try: logger.info("Extrahiere Ergebnisse von der aktuellen Seite...") results = [] # 1. Finde alle Zeilen der Tabelle. - # Jede Zeile ist ein ``-Element mit einer ID innerhalb des ``. + # Jede Zeile ist ein ``-Element mit einer einzigartigen ID. rows_selector = (By.CSS_SELECTOR, "table#t-result-table tbody > tr[id]") # Wir warten explizit, bis mindestens eine Zeile geladen ist. self.wait.until(EC.presence_of_element_located(rows_selector)) - time.sleep(2) # Kurze zusätzliche Pause, um sicherzustellen, dass JS die Tabelle vollständig rendert. + time.sleep(3) # Kurze zusätzliche Pause, um sicherzustellen, dass JS die Tabelle vollständig rendert. rows = self.driver.find_elements(*rows_selector) if not rows: @@ -179,17 +179,14 @@ class DealfrontScraper: company_name = "" website = "" try: - # Firmenname extrahieren: - # Wir suchen nach dem Link innerhalb der Zelle mit der CSS-Klasse 'sticky-after-checkbox' - company_name_selector = (By.CSS_SELECTOR, "td.sticky-after-checkbox a.t-highlight-text") + # --- KORRIGIERTER FIRMENNAMEN-SELEKTOR --- + company_name_selector = (By.CSS_SELECTOR, ".sticky-column a.t-highlight-text") company_name_element = row.find_element(*company_name_selector) - company_name = company_name_element.text.strip() + # Wir holen uns das 'title'-Attribut, da der Text abgeschnitten sein könnte. + company_name = company_name_element.get_attribute("title").strip() - # Webseite extrahieren: - # Wir suchen nach dem Link in der Zelle, die direkt auf die 'countryCode'-Zelle folgt. - # Dies ist eine Annahme basierend auf der Spaltenreihenfolge. Eine bessere Methode wäre, die Spalten dynamisch zuzuordnen. - # Fürs Erste probieren wir es mit der Spaltenposition (dritte td). - website_selector = (By.CSS_SELECTOR, "td:nth-of-type(3) a") + # --- KORRIGIERTER WEBSEITEN-SELEKTOR --- + website_selector = (By.CSS_SELECTOR, "a.text-gray-400.t-highlight-text") website_element = row.find_element(*website_selector) website = website_element.text.strip()