Optimierung der Umsatz- und Mitarbeiterextraktion; Re‑Evaluierungsmodus ohne Zeileneingabe (v1.1.8)

Umsatz-Extraktion:

Erweiterte Regex, um Zahlenstrings robust zu normalisieren:

Entfernt Tausendertrennzeichen (Punkte und Leerzeichen).

Verwendet Komma als Dezimaltrenner, falls vorhanden.

Wenn keine Einheit (Mio, Mrd) vorhanden ist, wird der Wert als Euro angenommen und durch 1.000.000 geteilt.

Mitarbeiter-Extraktion:

Erweiterung der Schlüsselwortliste (z. B. "mitarbeiterzahl", "angestellte", "belegschaft", "personalstärke").

Falls "mitarbeiterzahl" explizit vorkommt, wird direkt der Zahlenwert danach extrahiert.

Re‑Evaluierungsmodus:

Im Modus "2" werden alle Zeilen verarbeitet, bei denen in Spalte A ein "x" steht, ohne dass nach der Anzahl der zu überprüfenden Zeilen gefragt wird.

Übersprungene Zeilen werden nicht geloggt.

Spaltenanpassungen:

Im normalen Modus: Firmenname in Spalte A, Website in Spalte B; Ausgabe in G:K, Datum in N, Version in Q.

Im Re‑Evaluierungsmodus: Firmenname in Spalte B, Website in Spalte C; Ausgabe in H:L, Datum in O, Version in R.
This commit is contained in:
2025-04-01 03:30:45 +00:00
parent ef93384053
commit 917b2acebe

View File

@@ -12,7 +12,7 @@ import csv
# ==================== KONFIGURATION ====================
class Config:
VERSION = "1.1.7" # Neue Version
VERSION = "1.1.8" # Neue Version
LANG = "de"
CREDENTIALS_FILE = "service_account.json"
SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo"
@@ -199,9 +199,12 @@ class WikipediaScraper:
return raw_value.strip()
if target == 'mitarbeiter':
raw = raw_value.lower()
# Falls "mitarbeiterzahl" explizit vorkommt, entferne diesen Teil
# Spezifisch nach "mitarbeiterzahl" suchen und den direkt folgenden Zahlenwert extrahieren
if "mitarbeiterzahl" in raw:
raw = raw.split("mitarbeiterzahl")[-1]
match = re.search(r'mitarbeiterzahl\D*(\d+)', raw)
if match:
return match.group(1)
# Alternativ: Finde die erste Zahl
numbers = re.findall(r'\d+', raw)
if numbers:
return numbers[0]
@@ -271,7 +274,6 @@ class DataProcessor:
self.sheet_handler = GoogleSheetHandler()
self.wiki_scraper = WikipediaScraper()
def process_rows(self, num_rows=None):
# Im Re-Evaluierungsmodus wird num_rows ignoriert.
if MODE == "2":
print("Re-Evaluierungsmodus: Verarbeitung aller Zeilen mit 'x' in Spalte A.")
else:
@@ -279,17 +281,12 @@ class DataProcessor:
print(f"Starte bei Zeile {start_index+1}")
for i, row in enumerate(self.sheet_handler.sheet_values[1:], start=2):
if MODE == "2":
# Nur Zeilen mit "x" in Spalte A verarbeiten
if row[0].strip().lower() == "x":
self._process_single_row(i, row)
else:
# Normalmodus: Alle Zeilen ab Startindex verarbeiten
if i >= self.sheet_handler.get_start_index():
self._process_single_row(i, row)
def _process_single_row(self, row_num, row_data):
# Modusabhängige Verarbeitung:
# Normalmodus (Modus "1"): Firmenname in Spalte A, Website in Spalte B; Ausgabe in G:K, Datum in N, Version in Q.
# Re-Evaluierungsmodus (Modus "2"): Nur Zeilen mit "x" in Spalte A; Firmenname in Spalte B, Website in Spalte C; Ausgabe in H:L, Datum in O, Version in R.
if MODE == "2":
company_name = row_data[1] if len(row_data) > 1 else ""
website = row_data[2] if len(row_data) > 2 else ""