diff --git a/dealfront_enrichment.py b/dealfront_enrichment.py index ef59b02b..f7d54677 100644 --- a/dealfront_enrichment.py +++ b/dealfront_enrichment.py @@ -224,24 +224,24 @@ class DealfrontScraper: def extract_current_page_results(self): """ Extrahiert die Firmennamen und Webseiten von der aktuellen Ergebnisseite - mit einem finalen, robusten XPath-Selektor. + mit einem finalen, robusten XPath-Selektor für die Datenzeilen. """ try: logger.info("Extrahiere Ergebnisse von der aktuellen Seite...") results = [] # Warten, bis die Tabelle (bzw. ihr Body) da ist - self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "table#t-result-table tbody"))) - time.sleep(3) # Letzte Pause, um das Rendern abzuwarten + table_body_selector = (By.CSS_SELECTOR, "table#t-result-table tbody") + self.wait.until(EC.presence_of_element_located(table_body_selector)) + time.sleep(3) # Letzte Pause, um das JS-Rendering abzuwarten - # Dieser XPath sucht nach allen `tr`-Elementen, die eine Zelle (td) enthalten, - # welche wiederum ein Element mit einem 'data-userpilot-id' Attribut hat, das mit 'company-name-cell' beginnt. - # Das ist ein sehr starkes Merkmal für eine Datenzeile. - rows_selector = (By.XPATH, "//table[@id='t-result-table']/tbody/tr[.//div[@data-userpilot-id and starts-with(@data-userpilot-id, 'company-name-cell')]]") + # Finaler, robuster Selektor für die Datenzeilen: + # Wir suchen alle `tr`-Elemente innerhalb des `tbody`, die eine `id` haben. + rows_selector = (By.CSS_SELECTOR, "table#t-result-table tbody tr[id]") rows = self.driver.find_elements(*rows_selector) if not rows: - logger.warning("Keine Ergebniszeilen gefunden. HTML-Struktur hat sich möglicherweise geändert.") + logger.warning("Keine Ergebniszeilen (tr[id]) auf der Seite gefunden. HTML-Struktur hat sich möglicherweise geändert.") self._save_debug_artifacts() return []