diff --git a/brancheneinstufung.py b/brancheneinstufung.py index d6d6d2f4..1033601d 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -12,7 +12,7 @@ import csv # ==================== KONFIGURATION ==================== class Config: - VERSION = "1.1.9" # Neue Version mit Re-Evaluierungsmodus, Umsatz- und Mitarbeiteroptimierung + VERSION = "1.1.10" # Neue Version mit verbesserter Umsatz- und Mitarbeiterextraktion LANG = "de" CREDENTIALS_FILE = "service_account.json" SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo" @@ -199,16 +199,20 @@ class WikipediaScraper: return raw_value.strip() if target == 'mitarbeiter': raw = raw_value.lower() - # Spezifische Suche: Wenn "mitarbeiterzahl" vorkommt, direkt danach extrahieren. - if "mitarbeiterzahl" in raw: - match = re.search(r'mitarbeiterzahl\D*(\d+)', raw) - if match: - debug_print(f"Mitarbeiterzahl gefunden: {match.group(1)} in Text: {raw_value}") - return match.group(1) - # Fallback: Erste gefundene Zahl + # Suche nach "mitarbeiterzahl" oder "mitarbeiter" gefolgt von Zahlen (inkl. Tausendertrennzeichen) + match = re.search(r'(?:mitarbeiterzahl|mitarbeiter)[^\d]*([\d.,\s]+)', raw) + if match: + num_str = match.group(1) + num_str = num_str.replace(" ", "") + # Entferne alle Zeichen, die keine Ziffern sind + num_str = re.sub(r'[^\d]', '', num_str) + if num_str: + debug_print(f"Mitarbeiterzahl gefunden: {num_str} in Text: {raw_value}") + return num_str + # Fallback: Kombiniere alle gefundenen Zahlen numbers = re.findall(r'\d+', raw) if numbers: - return numbers[0] + return "".join(numbers) return raw_value.strip() return "k.A." def extract_full_infobox(self, soup): @@ -307,7 +311,6 @@ class DataProcessor: company_data = self.wiki_scraper.extract_company_data(article.url) else: company_data = {'url': 'k.A.', 'first_paragraph': 'k.A.', 'branche': 'k.A.', 'umsatz': 'k.A.', 'mitarbeiter': 'k.A.', 'full_infobox': 'k.A.'} - # Update der Spalten self.sheet_handler.sheet.update(values=[[ company_data.get('url', 'k.A.'), company_data.get('first_paragraph', 'k.A.'), @@ -319,7 +322,6 @@ class DataProcessor: self.sheet_handler.sheet.update(values=[[current_dt]], range_name=dt_range) self.sheet_handler.sheet.update(values=[[Config.VERSION]], range_name=ver_range) print(f"✅ Aktualisiert: URL: {company_data.get('url', 'k.A.')}, Erster Absatz: {company_data.get('first_paragraph', 'k.A.')[:30]}..., Branche: {company_data.get('branche', 'k.A.')}, Umsatz: {company_data.get('umsatz', 'k.A.')}, Mitarbeiter: {company_data.get('mitarbeiter', 'k.A.')}") - # Im Re-Evaluierungsmodus: Ausgabe des kompletten Infobox-Inhalts in der Konsole if MODE == "2": print("----- Vollständiger Infobox-Inhalt -----") print(company_data.get("full_infobox", "k.A."))