URL normalisierung

This commit is contained in:
2025-04-09 05:27:31 +00:00
parent 6e768a092b
commit 621cc67df7

View File

@@ -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}")