URL normalisierung
This commit is contained in:
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user