dealfront_enrichment.py aktualisiert

This commit is contained in:
2025-07-08 18:23:39 +00:00
parent 5f11c23673
commit 3a9cf44a3e

View File

@@ -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)