From 5b497b946d31504c3dd7969e69e0f5aab2ced80f Mon Sep 17 00:00:00 2001 From: Floke Date: Sun, 13 Jul 2025 16:37:43 +0000 Subject: [PATCH] =?UTF-8?q?langsames=20scrollen=20hinzugef=C3=BCgt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dealfront_enrichment.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/dealfront_enrichment.py b/dealfront_enrichment.py index 47479524..2f03af74 100644 --- a/dealfront_enrichment.py +++ b/dealfront_enrichment.py @@ -92,18 +92,21 @@ class DealfrontScraper: self._save_debug_artifacts("login_exception") return False - def scroll_table_to_bottom(self): + def scroll_table_slowly(self, steps=10, pause=0.3): """ - Scrollt das Tabellen-Element und die Seite nach unten, damit alle Zeilen sichtbar und geladen sind. + Scrollt die Tabelle in mehreren Schritten langsam nach unten, + damit bei Virtualisierung/Lazy Rendering alle Zeilen geladen werden. """ try: table = self.driver.find_element(By.CSS_SELECTOR, "table#t-result-table") - self.driver.execute_script("arguments[0].scrollIntoView(false);", table) - self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") - time.sleep(1) # Kurze Pause, damit ggf. Inhalte nachgeladen werden - logger.info("Nach Seitenwechsel nach unten gescrollt.") + table_height = table.size['height'] + for i in range(steps): + y = int(table_height * (i + 1) / steps) + self.driver.execute_script("arguments[0].scrollTop = arguments[1];", table, y) + time.sleep(pause) + logger.info("Tabelle langsam nach unten gescrollt.") except Exception as e: - logger.warning(f"Fehler beim Scrollen nach unten: {e}") + logger.warning(f"Fehler beim langsamen Scrollen: {e}") def navigate_and_load_search(self, search_name): try: @@ -229,7 +232,7 @@ class DealfrontScraper: logger.info("Seitenwechsel erfolgreich verifiziert (IDs der Zeilen haben sich geƤndert).") # NEU: Nach jedem Seitenwechsel nach unten scrollen! - self.scroll_table_to_bottom() + self.scroll_table_slowly() # Logge die aktuelle aktive Seite try: