dealfront_enrichment.py aktualisiert
This commit is contained in:
@@ -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 []
|
||||
|
||||
|
||||
Reference in New Issue
Block a user