dealfront_enrichment.py aktualisiert

This commit is contained in:
2025-07-04 05:07:07 +00:00
parent a0828c3269
commit 8d6025bcee

View File

@@ -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 []