From 3a9cf44a3e2cc44bf66a63c173e4590ca8a3abc0 Mon Sep 17 00:00:00 2001 From: Floke Date: Tue, 8 Jul 2025 18:23:39 +0000 Subject: [PATCH] dealfront_enrichment.py aktualisiert --- dealfront_enrichment.py | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/dealfront_enrichment.py b/dealfront_enrichment.py index 77c5b172..a051fe44 100644 --- a/dealfront_enrichment.py +++ b/dealfront_enrichment.py @@ -113,10 +113,10 @@ class DealfrontScraper: return False def extract_current_page_results(self): - # 1) Kurz Implicit-Wait absenken, um nicht an Default-Timeouts zu hängen + # 1) Kurz Implicit-Wait absenken self.driver.implicitly_wait(1) - # 2) Auf das erste Laden der Daten warten (erstes Firmen-Element) + # 2) Auf das erste Daten-Element warten first_row_locator = (By.CSS_SELECTOR, ".sticky-column a.t-highlight-text") self.wait.until(EC.visibility_of_element_located(first_row_locator)) time.sleep(1) @@ -125,16 +125,14 @@ class DealfrontScraper: logger.info("Extrahiere Ergebnisse von der aktuellen Seite...") results = [] - # 3) Auf mindestens eine Tabellenzeile warten + # 3) Warten auf mindestens eine Tabellen-Zeile rows_selector = (By.CSS_SELECTOR, "table#t-result-table tbody tr[id]") self.wait.until(EC.presence_of_all_elements_located(rows_selector)) - rows = self.driver.find_elements(*rows_selector) logger.info(f"{len(rows)} Firmen-Zeilen gefunden.") - # 4) Schleife ohne weitere Warte-Blocks for i, row in enumerate(rows, 1): - # Name: bewährter Selector + # Name-Extraktion (bewährter Selector) name_elems = row.find_elements(By.CSS_SELECTOR, ".sticky-column a.t-highlight-text") if not name_elems: logger.warning(f"Zeile {i}: Kein Name-Element gefunden. Überspringe.") @@ -142,22 +140,23 @@ class DealfrontScraper: name_elem = name_elems[0] company_name = (name_elem.get_attribute("title") or name_elem.text).strip() - # Website: bewährter Selector - web_elems = row.find_elements(By.CSS_SELECTOR, "a.text-gray-400.t-highlight-text") - website = web_elems[0].text.strip() if web_elems else "" + # Website-Extraktion aus 3. Spalte + web_elems = row.find_elements(By.CSS_SELECTOR, "td:nth-of-type(3) a") + if web_elems: + # Link-Text ist der Domain-Name + website = web_elems[0].text.strip() + else: + # Fallback: reiner Zellen-Text + cell = row.find_elements(By.CSS_SELECTOR, "td:nth-of-type(3)") + website = cell[0].text.strip() if cell else "" results.append({'name': company_name, 'website': website}) logger.info(f"Extraktion abgeschlossen: {len(results)} Firmen.") return results - except Exception as e: - logger.error(f"Schwerwiegender Fehler bei der Extraktion: {type(e).__name__}", exc_info=True) - self._save_debug_artifacts() - return [] - finally: - # 5) Implicit-Wait wieder auf Standard setzen (z.B. 10 s) + # 4) Implicit-Wait auf Standard zurücksetzen self.driver.implicitly_wait(10)