diff --git a/brancheneinstufung.py b/brancheneinstufung.py index 53d0c738..34d08e5c 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -61,14 +61,48 @@ def retry_on_failure(func): # ==================== LOGGING & HELPER FUNCTIONS ==================== +def simple_normalize_url(url): + """ + Normalisiert einen URL-String und gibt nur 'www.domain.tld' zurück. + - Entfernt das Schema (http://, https://) + - Schneidet den Pfad und eventuelle Portinformationen ab + - Fügt 'www.' hinzu, falls es fehlt. + + Args: + url (str): Der Original-URL-String. + + Returns: + str: Normalisierte URL im Format 'www.domain.tld' oder "k.A.", falls etwas fehlschlägt. + """ + if not url: + return "k.A." + # Falls kein Schema vorhanden ist, hinzufügen + if not url.lower().startswith("http"): + url = "https://" + url + try: + # Entferne das Schema + parts = url.split("://", 1) + domain_part = parts[1] if len(parts) > 1 else parts[0] + # Entferne den Pfad (alles ab dem ersten "/") + domain_part = domain_part.split("/", 1)[0] + # Entferne einen eventuellen Port (z.B. ":8080") + domain_part = domain_part.split(":", 1)[0] + # Wenn die Domain nicht mit "www." beginnt, hinzufügen + if not domain_part.lower().startswith("www."): + domain_part = "www." + domain_part + return domain_part + except Exception as e: + return "k.A." + def serp_website_lookup(company_name): """ Ermittelt über SERPAPI (Google-Suche) die Website zum Unternehmen. - - Verwendet als Query den Firmennamen. + - Verwendet als Query den Firmennamen mit dem Zusatz "Website". - Filtert Ergebnisse anhand einer Blacklist (z.B. bloomberg.com, northdata.de, finanzen.net, handelsblatt.com). - + - Gibt die normalisierte Website-URL (im Format "www.domain.tld") zurück. + Returns: - Die gefundene Website-URL oder "k.A.", falls kein passendes Ergebnis gefunden wurde. + str: Normalisierte Website-URL oder "k.A.", falls kein passendes Ergebnis gefunden wurde. """ # Blacklist unerwünschter Domains blacklist = ["bloomberg.com", "northdata.de", "finanzen.net", "handelsblatt.com"] @@ -92,10 +126,11 @@ def serp_website_lookup(company_name): if "organic_results" in data: for result in data["organic_results"]: url = result.get("link", "") - # Filtere Ergebnisse, die in der Blacklist stehen + # Überprüfen, ob die URL nicht in der Blacklist enthalten ist if url and not any(bad in url for bad in blacklist): - debug_print(f"SERP-Website Lookup: Gefundene Website '{url}' für {company_name}") - return url + normalized_url = simple_normalize_url(url) + debug_print(f"SERP-Website Lookup: Gefundene Website '{normalized_url}' für {company_name}") + return normalized_url return "k.A." except Exception as e: debug_print(f"Fehler beim SERP-API Website Lookup für {company_name}: {e}")