This commit is contained in:
2025-04-22 06:17:23 +00:00
parent c8cc8cc435
commit 5ddd8ee065

View File

@@ -321,6 +321,11 @@ def process_find_wiki_with_serp(sheet_handler, row_limit=None, min_employees=500
über SerpAPI und trägt gefundene URLs in Spalte M ein. Setzt ReEval-Flag (A)
und löscht Timestamps (AN, AO) für gefundene Einträge.
Merkt sich in Spalte AY, wann die Suche durchgeführt wurde.
Args:
sheet_handler (GoogleSheetHandler): Initialisierte Instanz.
row_limit (int, optional): Maximale Anzahl zu prüfender Zeilen. Defaults to None.
min_employees (int, optional): Mindestanzahl Mitarbeiter (Spalte K) als Filter. Defaults to 500.
"""
logging.info(f"Starte Modus 'find_wiki_serp': Suche fehlende Wiki-URLs für Firmen > {min_employees} MA...")
@@ -351,6 +356,7 @@ def process_find_wiki_with_serp(sheet_handler, row_limit=None, min_employees=500
logging.critical(f"FEHLER beim Holen der Spaltenbuchstaben: {e}")
return
# --- HIER WIRD all_sheet_updates definiert ---
all_sheet_updates = []
processed_rows = 0 # Zählt Zeilen, für die eine Suche durchgeführt wurde
found_urls = 0 # Zählt Zeilen, wo eine URL gefunden wurde
@@ -375,6 +381,7 @@ def process_find_wiki_with_serp(sheet_handler, row_limit=None, min_employees=500
continue # Nächste Zeile, diese wurde schon geprüft
# --- ENDE NEUE PRÜFUNG ---
# Prüfe, ob Zeile überhaupt verarbeitet werden soll
try:
# 1. Mitarbeiterzahl prüfen
ma_val_str = row[col_indices["K"]] if len(row) > col_indices["K"] else "0"
@@ -389,6 +396,7 @@ def process_find_wiki_with_serp(sheet_handler, row_limit=None, min_employees=500
# 2. Prüfen, ob Wiki URL (M) leer oder "k.A." ist
m_value = row[col_indices["M"]] if len(row) > col_indices["M"] else ""
# Prüfe auf leer UND 'k.a.' (case-insensitive)
if m_value and m_value.strip().lower() != "k.a.":
skipped_m_filled_count += 1
continue
@@ -401,9 +409,9 @@ def process_find_wiki_with_serp(sheet_handler, row_limit=None, min_employees=500
# --- SerpAPI Suche durchführen ---
logging.info(f"Zeile {row_num_in_sheet}: Suche Wiki-URL für '{company_name}' (MA: {ma_val})...")
wiki_url_found = serp_wikipedia_lookup(company_name)
wiki_url_found = serp_wikipedia_lookup(company_name) # Annahme: nutzt logging
processed_rows += 1 # Zähle die durchgeführte Suche
time.sleep(1.5) # Pause
time.sleep(1.5) # Pause zwischen SerpAPI-Aufrufen
# --- Updates vorbereiten ---
# Timestamp AY IMMER setzen, um die Suche zu markieren
@@ -424,27 +432,31 @@ def process_find_wiki_with_serp(sheet_handler, row_limit=None, min_employees=500
# Optional: Marker in M schreiben? Vorerst nicht, AY reicht.
# row_updates.append({'range': f'{col_letters["M"]}{row_num_in_sheet}', 'values': [['k.A. (SerpAPI Searched)']]})
# Füge die Updates für diese Zeile zur Gesamtliste hinzu
all_sheet_updates.extend(row_updates)
except Exception as e:
# Logge Fehler und fahre mit der nächsten Zeile fort
logging.exception(f"Unerwarteter Fehler bei Verarbeitung von Zeile {row_num_in_sheet}: {e}")
continue # Gehe zur nächsten Zeile
# --- Batch Update am Ende ---
if all_sheet_updates:
logging.info(f"Sende Batch-Update für {processed_rows} geprüfte Zeilen ({found_urls} URLs gefunden, {len(all_sheet_updates)} Zellen)...")
success = sheet_handler.batch_update_cells(all_sheet_updates)
if success:
logging.info(f"Sheet-Update für 'find_wiki_serp' erfolgreich.")
# Fehler wird von batch_update_cells geloggt
else:
logging.info("Keine Zeilen gefunden, für die eine SerpAPI Wiki-Suche durchgeführt werden musste/konnte.")
# --- Batch Update am Ende ---
# Dieser Block muss auf derselben Einrückungsebene wie die for-Schleife sein!
if all_sheet_updates:
logging.info(f"Sende Batch-Update für {processed_rows} geprüfte Zeilen ({found_urls} URLs gefunden, {len(all_sheet_updates)} Zellen)...")
success = sheet_handler.batch_update_cells(all_sheet_updates)
if success:
logging.info(f"Sheet-Update für 'find_wiki_serp' erfolgreich.")
# Fehler wird von batch_update_cells geloggt
else:
logging.info("Keine Zeilen gefunden, für die eine SerpAPI Wiki-Suche durchgeführt werden musste/konnte.")
logging.info(f"Modus 'find_wiki_serp' abgeschlossen.")
logging.info(f" Durchgeführte Suchen in diesem Lauf: {processed_rows}")
logging.info(f" Gefundene & eingetragene URLs: {found_urls}")
logging.info(f" Übersprungen (AY bereits gesetzt): {skipped_timestamp_ay}")
logging.info(f" Übersprungen (MA <= {min_employees}): {skipped_employee_count}")
logging.info(f" Übersprungen (M bereits gefüllt): {skipped_m_filled_count}")
logging.info(f"Modus 'find_wiki_serp' abgeschlossen.")
logging.info(f" Durchgeführte Suchen in diesem Lauf: {processed_rows}")
logging.info(f" Gefundene & eingetragene URLs: {found_urls}")
logging.info(f" Übersprungen (AY bereits gesetzt): {skipped_timestamp_ay}")
logging.info(f" Übersprungen (MA <= {min_employees}): {skipped_employee_count}")
logging.info(f" Übersprungen (M bereits gefüllt): {skipped_m_filled_count}")
def prepare_data_for_modeling(sheet_handler):
"""