URL normalisierung
This commit is contained in:
@@ -61,14 +61,48 @@ def retry_on_failure(func):
|
|||||||
|
|
||||||
# ==================== LOGGING & HELPER FUNCTIONS ====================
|
# ==================== 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):
|
def serp_website_lookup(company_name):
|
||||||
"""
|
"""
|
||||||
Ermittelt über SERPAPI (Google-Suche) die Website zum Unternehmen.
|
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).
|
- 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:
|
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 unerwünschter Domains
|
||||||
blacklist = ["bloomberg.com", "northdata.de", "finanzen.net", "handelsblatt.com"]
|
blacklist = ["bloomberg.com", "northdata.de", "finanzen.net", "handelsblatt.com"]
|
||||||
@@ -92,10 +126,11 @@ def serp_website_lookup(company_name):
|
|||||||
if "organic_results" in data:
|
if "organic_results" in data:
|
||||||
for result in data["organic_results"]:
|
for result in data["organic_results"]:
|
||||||
url = result.get("link", "")
|
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):
|
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}")
|
normalized_url = simple_normalize_url(url)
|
||||||
return url
|
debug_print(f"SERP-Website Lookup: Gefundene Website '{normalized_url}' für {company_name}")
|
||||||
|
return normalized_url
|
||||||
return "k.A."
|
return "k.A."
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
debug_print(f"Fehler beim SERP-API Website Lookup für {company_name}: {e}")
|
debug_print(f"Fehler beim SERP-API Website Lookup für {company_name}: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user