diff --git a/dealfront_enrichment.py b/dealfront_enrichment.py index d1dea62f..34668ad2 100644 --- a/dealfront_enrichment.py +++ b/dealfront_enrichment.py @@ -200,50 +200,29 @@ class DealfrontScraper: # Warte auf neue Seite: Änderung der ID ODER Änderung des Texts der ersten Zeile def page_changed(driver): try: - row = driver.find_element(By.CSS_SELECTOR, "table#t-result-table tbody tr[id]") - row_id = row.get_attribute("id") - row_text = row.text.strip() - logger.debug(f"Nach Pagination: Erste Zeilen-ID: {row_id}, Text: '{row_text}'") - if first_row_id and row_id != first_row_id: - return True - if first_row_text and row_text != first_row_text: - return True - return False - except Exception as e: - logger.warning(f"Fehler beim Vergleichen der ersten Zeile nach Pagination: {e}") - return False - - self.wait.until(page_changed) - logger.info("Seitenwechsel erfolgreich verifiziert (erste Zeile hat neue ID oder neuen Text).") - - # NEU: Logge die aktuelle aktive Seite - try: - active_page = self.driver.find_element(By.CSS_SELECTOR, "a.eb-pagination-button.active").text.strip() - logger.info(f"Aktive Seite nach Pagination: {active_page}") except Exception as e: - logger.warning(f"Konnte aktive Seite nach Pagination nicht ermitteln: {e}") + logger.error(f"Fehler beim Klicken auf den Weiter-Button oder beim Warten auf neue Seite: {e}") + # Screenshot und HTML speichern + try: + timestamp = time.strftime("%Y%m%d-%H%M%S") + self.driver.save_screenshot(f"/app/output/pagination_error_{timestamp}.png") + with open(f"/app/output/pagination_error_{timestamp}.html", "w", encoding="utf-8") as f: + f.write(self.driver.page_source) + logger.info(f"Screenshot und HTML der Seite nach Pagination-Fehler gespeichert.") + except Exception as ee: + logger.error(f"Fehler beim Speichern von Screenshot/HTML: {ee}") + # Zusätzlich: Logge alle Zeilen nach dem Fehler (nur Text und HTML-Start) + try: + all_rows = self.driver.find_elements(By.CSS_SELECTOR, "table#t-result-table tbody tr") + except Exception as eee: + logger.error(f"Fehler beim Finden der Tabellenzeilen nach Fehler: {eee}") + all_rows = [] - except Exception as e: - logger.error(f"Fehler beim Klicken auf den Weiter-Button oder beim Warten auf neue Seite: {e}") - # Screenshot und HTML speichern - try: - timestamp = time.strftime("%Y%m%d-%H%M%S") - self.driver.save_screenshot(f"/app/output/pagination_error_{timestamp}.png") - with open(f"/app/output/pagination_error_{timestamp}.html", "w", encoding="utf-8") as f: - f.write(self.driver.page_source) - logger.info(f"Screenshot und HTML der Seite nach Pagination-Fehler gespeichert.") - except Exception as ee: - logger.error(f"Fehler beim Speichern von Screenshot/HTML: {ee}") - # Zusätzlich: Logge alle Zeilen nach dem Fehler (nur Text und HTML-Start) - try: - all_rows = self.driver.find_elements(By.CSS_SELECTOR, "table#t-result-table tbody tr") logger.info(f"Nach Pagination-Fehler: Es sind {len(all_rows)} Zeilen im DOM.") for i, r in enumerate(all_rows): html_snippet = r.get_attribute('outerHTML')[:120].replace('\n', ' ') logger.info(f"Zeile {i}: Text='{r.text.strip()}', HTML-Start={html_snippet}...") - except Exception as eee: - logger.error(f"Fehler beim Loggen der Zeilen nach Fehler: {eee}") - break + break return all_companies