🧠 Refactoring: Einführung einer globalen VERSION-Konstante (1.0.0-wiki-only)
📅 Feature: Zeitstempel und Version werden nun zusätzlich in Google Sheet eingetragen
🛠️ Fix: sheet.update() erweitert, um die neue Spalte Q (Version) zu berücksichtigen
✨ Struktur: Code durchgängig vereinheitlicht und robuster gegen Fehler gemacht
- Titelprüfung ergänzt: Namensfragmente müssen im Seitentitel vorkommen
- Validierungsmethode erweitert: Kombiniert Titel- und Inhaltsprüfung
- Präzisere Ergebnis-Auswahl durch Matching-Score
- Blacklist bewusst NICHT verwendet
- Leere oder fehlerhafte Wikipedia-Ergebnisse werden sicher erkannt und mit "k.A." ausgegeben
Wikipedia-Validierung über validate_wikipedia_page ergänzt (stellt sicher, dass Seiteninhalt oder Domain zum Firmennamen passen).
Fallback-Parsing parse_infobox_with_fallback() eingebaut für robustere Extraktion von Branche/Umsatz.
Branchenbegriff-Erkennung verbessert (Synonyme wie „Tätigkeitsfeld“, „Industriezweig“ etc.).
Bedingte Auswertung verbessert: Wenn kein Wikipedia-Link → "k.A." für Branche/Umsatz.
Selektor-basierte Extraktion entfernt, da sie fehleranfällig war → durch flexible Infobox-Logik ersetzt.
Selektor-basierte Extraktion für Branche und Umsatz ergänzt (parse_infobox_with_selector).
Fallback auf k.A. wenn Selektor nicht vorhanden ist.
get_wikipedia_data nutzt nun ausschließlich parse_infobox_with_selector für konsistente Ergebnisse.
Ausgabe an Google Sheet unverändert.
GPT-Teil wurde temporär entfernt, wie besprochen.
Aufteilung des Codes in zwei unabhängige Verarbeitungsschritte.
Wikipedia-Branche und Umsatz werden nur geschrieben, wenn Wikipedia-URL vorhanden ist.
GPT-Aufruf überarbeitet (inkl. Timeout und Retry-Logik).
gpt_antworten_log.csv wird mit Zeitstempel aktualisiert.
✅ Fehlerbehandlung mit try/except in classify_company ergänzt (OpenAIError wird behandelt)
✅ Retry-Mechanismus für GPT-Calls eingeführt (max. 3 Versuche mit 10 Sekunden Pause)
✅ Logfile gpt_antworten_log.csv speichert jetzt zusätzlich einen Zeitstempel (erste Spalte jeder Zeile)
✅ Fehlerhafte Import-Anweisung (from openai.error) durch funktionierende ersetzt
✅ Prompt an GPT um Hinweis ergänzt: Wenn kein Wikipedia-Link vorhanden ist, sind Wikipedia-Branche und Umsatz (Mio €) als k.A. auszugeben
✅ Wikipedia-Branche & Umsatz werden nur gesetzt, wenn auch ein Wikipedia-Link gefunden wurde
✅ Ausgabe von Wikipedia-Ergebnissen jetzt zuverlässiger (bessere Strukturprüfung)
✅ Canvas vollständig synchronisiert
- Wikipedia-Branche und Umsatz werden jetzt nur gesetzt, wenn Wikipedia-Link vorhanden ist.
- GPT-Prompt erweitert, um Wikipedia-Werte bei vorhandenem Link als verbindlich zu behandeln.
- CSV-Logfile (`gpt_antworten_log.csv`) ergänzt um Zeitstempel als erste Spalte.
- Prompt-Ausgabe vollständig überarbeitet für Robustheit und Nachvollziehbarkeit.
wiki_final nutzt jetzt bevorzugt die ausgelesene Wikipedia-Branche.
umsatz_final verwendet, wenn möglich, den Wert aus der Infobox (statt GPT).
Wikipedia-URL wird garantiert in Spalte M geschrieben.
get_wikipedia_data() übergibt wieder wiki_branche, umsatz, url korrekt.
GPT-Prompt weiterhin mit Wikipedia-Link übergeben, aber nicht zur Extraktion verwendet.
- Nur noch Wikipedia-URL lokal ermittelt
- URL wird an GPT im Prompt übergeben (Zeile: "Wikipedia-Link: …")
- GPT soll Umsatz + Branche eigenständig aus Artikel extrahieren
- HTML-Parsing und lokale Extraktion entfallen vollständig
- Reihenfolge im Wikipedia-Parsing korrigiert: URL vor HTML-Abruf
- Wikipedia-Branche wird nur dann befüllt, wenn aus Wikipedia extrahiert (kein Fallback auf GPT)
- Verschiebe html = requests.get(url).text an den Anfang der Validierungsschleife
- Domainprüfung erfolgt nun korrekt im HTML-Kontext
- Wikipedia-URL wird jetzt wieder korrekt ausgegeben
- Neue Konstante WHITELIST_KATEGORIEN definiert (z. B. „Unternehmen“, „Produktion“, „Maschinenbau“)
- Wenn keine Branche aus Infobox extrahiert wird, wird geprüft, ob eine der Wikipedia-Kategorien zur Whitelist passt
- Andernfalls wird der Artikel verworfen (→ Rückgabe „k.A.“)
- Anpassung der `range_name` von `G{i+2}:P{i+2}` auf `G{i+1}:P{i+1}` zur korrekten Zeilenadressierung
- Fallback-Logik für Wikipedia-Infobox hinzugefügt:
- Wenn `.infobox` nicht gefunden wird, werden alle Tabellen geprüft
- erste Tabelle mit einer `th`-Zelle, die „Branche“ enthält, wird als Infobox verwendet
Wikipedia-Suche ist vollständig implementiert:
Suchbegriffe: vollständiger Firmenname, erste zwei Wörter, Domainname
wikipedia.search() liefert bis zu 3 Treffer
Titelvergleich verhindert falsche Zuordnung
HTML der Seite wird geladen
Infobox mit infobox oder infobox vcard wird geprüft
Branche wird aus <th>Branche</th> extrahiert
Umsatz wird aus „Umsatz“ extrahiert, falls „Mio“ enthalten, auf Zahl bereinigt (z. B. „159 Mio. €“ → 159)
✅ Wikipedia-Branche und Umsatz werden korrekt in wiki_branche bzw. umsatz gespeichert.
✅ Diese Werte werden beim Schreiben bevorzugt:
python
Copy
Edit
wiki_final = wiki_branche if wiki_branche != "k.A." else wiki
umsatz_final = umsatz if umsatz != "k.A." else umsatz_chat
✅ Es werden alle Spalten korrekt im Sheet geschrieben (G bis P).
✅ Einrückungen wurden korrigiert – wiki_final und umsatz_final liegen jetzt sauber innerhalb der Schleife und werden korrekt pro Zeile berechnet.
Die Verarbeitung sollte jetzt fehlerfrei durchlaufen. Sag Bescheid, wenn du Logging, Validierung oder Debug-Ausgabe pro Zeile brauchst.
✅ Die Wikipedia-Daten (Branche und Umsatz) werden jetzt bevorzugt verwendet, wenn sie verfügbar sind. GPT-Schätzungen kommen nur zum Einsatz, wenn Wikipedia keine Daten liefert.
Bereit für den nächsten Testlauf! Sag Bescheid, wenn du noch einen manuellen Override oder eine Prüfregel zur Validierung einbauen möchtest.
Statt nur wikipedia.page() wird jetzt wikipedia.search() verwendet.
Es werden die besten 3 Treffer geprüft.
Nur Artikel, deren Titel den Unternehmensnamen enthalten, werden akzeptiert.
Dadurch wird z. B. „Heimbach-Gruppe“ korrekt erkannt, auch wenn „Heimbach GmbH“ gesucht wurde.
Das komplette Ziel-Branchenschema ist jetzt wieder korrekt im Code enthalten und wird im System-Prompt an GPT übergeben. Damit ist sichergestellt, dass GPT die richtige Referenzbasis für die Einstufung hat. Bereit für den nächsten Lauf!
✅ Änderungen sind eingebaut:
Wikipedia-Suche prüft jetzt Firmenname, erste zwei Worte und Domainname.
Es wird nur ein Artikel akzeptiert, wenn er den Firmennamen eindeutig enthält.
Wenn kein Wikipedia-Link gefunden wird, wird "k.A." für Branche und Umsatz gesetzt.
GPT-Antwort wird in der Datei gpt_antworten_log.csv lokal gespeichert (mit kompletter Antworttext).
Prompt enthält nun klar: „Bitte verwende nur das konkret genannte Unternehmen“.
Bereit für den nächsten Lauf. Sag Bescheid, wenn du Logging-Ausgaben auswerten oder Grenzfälle testen möchtest.