Extraktion von Umsatz und Mitarbeiterzahl optimiert – Umsatz in Mio € und Mitarbeiterzahl als ganze
Umsatz-Extraktion: Die Regex erfasst nun den Zahlenstring (z. B. „10,0“) und entfernt Tausendertrennzeichen (Punkte, Leerzeichen). Wird im Text "mrd" gefunden, wird der Wert mit 1000 multipliziert, ansonsten bleibt er (bei "mio") unverändert. Fehlt eine Einheit, wird der Wert als in Euro angegeben angenommen und durch 1.000.000 geteilt, sodass der Umsatz in Mio € resultiert. Mitarbeiter-Extraktion: Spezifische Suche mittels Regex nach dem Schlüsselwort "mitarbeiterzahl" (oder "mitarbeiter") gefolgt von einem Zahlenformat (z. B. "4.175"). Falls der gefundene Zahlenstring einen Punkt als Tausendertrennzeichen enthält (und kein Komma), wird dieser entfernt, sodass "4.175" zu "4175" wird. Re-Evaluierungsmodus: Alle Zeilen mit einem "x" in Spalte A werden verarbeitet, und der komplette Infobox-Inhalt wird in der Konsole ausgegeben. Spaltenanpassungen: Normalmodus: Firmenname in Spalte A, Website in Spalte B; Ausgabe in G:K, Datum in N, Version in Q. 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:
@@ -12,7 +12,7 @@ import csv
|
||||
|
||||
# ==================== KONFIGURATION ====================
|
||||
class Config:
|
||||
VERSION = "1.1.10" # Neue Version mit verbesserter Umsatz- und Mitarbeiterextraktion
|
||||
VERSION = "1.1.11" # 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"
|
||||
@@ -180,6 +180,7 @@ class WikipediaScraper:
|
||||
match = re.search(r'([\d.,]+)', raw)
|
||||
if match:
|
||||
num_str = match.group(1)
|
||||
# Falls Komma vorhanden: Punkte als Tausendertrennzeichen entfernen, Komma als Dezimaltrenner ersetzen
|
||||
if ',' in num_str:
|
||||
num_str = num_str.replace('.', '').replace(',', '.')
|
||||
else:
|
||||
@@ -199,20 +200,27 @@ class WikipediaScraper:
|
||||
return raw_value.strip()
|
||||
if target == 'mitarbeiter':
|
||||
raw = raw_value.lower()
|
||||
# Suche nach "mitarbeiterzahl" oder "mitarbeiter" gefolgt von Zahlen (inkl. Tausendertrennzeichen)
|
||||
# Spezifisch nach "mitarbeiterzahl" suchen, um den direkt folgenden Zahlenwert zu extrahieren.
|
||||
match = re.search(r'(?:mitarbeiterzahl|mitarbeiter)[^\d]*([\d.,\s]+)', raw)
|
||||
if match:
|
||||
num_str = match.group(1)
|
||||
# Entferne Tausendertrennzeichen (Punkte oder Leerzeichen)
|
||||
num_str = num_str.replace(" ", "")
|
||||
# Entferne alle Zeichen, die keine Ziffern sind
|
||||
# Falls es nur Punkte und keine Kommas gibt, behandeln wir diese als Tausendertrennzeichen.
|
||||
if '.' in num_str and ',' not in num_str:
|
||||
num_str = num_str.replace('.', '')
|
||||
# Entferne eventuell verbleibende nicht-numerische Zeichen.
|
||||
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 "".join(numbers)
|
||||
# Fallback: Falls keine spezifische Suche funktioniert, versuche die erste Zahl zu extrahieren.
|
||||
match = re.search(r'(\d{1,3}(?:\.\d{3})+|\d+)', raw)
|
||||
if match:
|
||||
num_str = match.group(1)
|
||||
if '.' in num_str and ',' not in num_str:
|
||||
num_str = num_str.replace('.', '')
|
||||
return num_str
|
||||
return raw_value.strip()
|
||||
return "k.A."
|
||||
def extract_full_infobox(self, soup):
|
||||
|
||||
Reference in New Issue
Block a user