dealfront_enrichment.py aktualisiert
This commit is contained in:
@@ -178,18 +178,29 @@ class DealfrontScraper:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def load_search(self, search_name):
|
def load_search(self, search_name):
|
||||||
# (Diese Methode bleibt vorerst unverändert)
|
"""Lädt eine vordefinierte Suche anhand ihres Namens."""
|
||||||
try:
|
try:
|
||||||
logger.info(f"Suche und lade die vordefinierte Suche: '{search_name}'")
|
logger.info(f"Warte, bis die Liste der gespeicherten Suchen sichtbar ist...")
|
||||||
search_link_selector = (By.XPATH, f"//div[contains(@class, 'truncate') and normalize-space()='{search_name}']")
|
# Wir warten auf den Container, der alle Such-Items enthält.
|
||||||
|
# Ein guter Selektor ist das `ul`-Element mit der ID, die mit `eb-popup` beginnt.
|
||||||
|
# Oder allgemeiner: Ein Element, das den Text einer bekannten Suche enthält.
|
||||||
|
search_list_container_selector = (By.XPATH, f"//div[normalize-space()='{search_name}']")
|
||||||
|
self.wait.until(EC.visibility_of_element_located(search_list_container_selector))
|
||||||
|
logger.info(f"Liste gefunden. Klicke jetzt auf die vordefinierte Suche: '{search_name}'")
|
||||||
|
|
||||||
|
# Der XPath sucht nach einem Element (div, a, button), dessen Text exakt übereinstimmt.
|
||||||
|
search_link_selector = (By.XPATH, f"//*[normalize-space()='{search_name}']")
|
||||||
search_link = self.wait.until(EC.element_to_be_clickable(search_link_selector))
|
search_link = self.wait.until(EC.element_to_be_clickable(search_link_selector))
|
||||||
search_link.click()
|
search_link.click()
|
||||||
|
|
||||||
|
# Verifizieren, dass die Ergebnisse geladen sind, indem wir auf die Ergebnistabelle warten.
|
||||||
results_table_header_selector = (By.XPATH, "//th[normalize-space()='Firma']")
|
results_table_header_selector = (By.XPATH, "//th[normalize-space()='Firma']")
|
||||||
self.wait.until(EC.visibility_of_element_located(results_table_header_selector))
|
self.wait.until(EC.visibility_of_element_located(results_table_header_selector))
|
||||||
logger.info(f"Suche '{search_name}' erfolgreich geladen und Ergebnisse angezeigt.")
|
logger.info(f"Suche '{search_name}' erfolgreich geladen und Ergebnisse angezeigt.")
|
||||||
time.sleep(3)
|
|
||||||
|
time.sleep(3) # Feste Wartezeit, damit alle Daten nachgeladen sind.
|
||||||
return True
|
return True
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.critical(f"Laden der Suche '{search_name}' fehlgeschlagen: {type(e).__name__}", exc_info=True)
|
logger.critical(f"Laden der Suche '{search_name}' fehlgeschlagen: {type(e).__name__}", exc_info=True)
|
||||||
self._save_debug_artifacts()
|
self._save_debug_artifacts()
|
||||||
|
|||||||
Reference in New Issue
Block a user