This commit is contained in:
2025-05-29 18:04:10 +00:00
parent e82da740a0
commit 10eaecfaf0

View File

@@ -2433,8 +2433,7 @@ def scrape_website_details(url):
logger.warning(f"Ausführe 'scrape_website_details' fuer URL {url[:100]}...") # Logge den Start auf Warning logger.warning(f"Ausführe 'scrape_website_details' fuer URL {url[:100]}...") # Logge den Start auf Warning
try: # <<< KORREKTE EINRÜCKUNG (auf gleicher Ebene wie logger.warning darüber)
try:
# Hilfsfunktion zum Abrufen des Soup-Objekts mit Retry. # Hilfsfunktion zum Abrufen des Soup-Objekts mit Retry.
# Nutzt retry_on_failure, requests, BeautifulSoup, Config. # Nutzt retry_on_failure, requests, BeautifulSoup, Config.
@retry_on_failure @retry_on_failure
@@ -2442,23 +2441,27 @@ def scrape_website_details(url):
# --- START DES NEUEN/ERSETZTEN BLOCKS --- # --- START DES NEUEN/ERSETZTEN BLOCKS ---
if not target_url or not isinstance(target_url, str): # Zusätzliche Prüfung if not target_url or not isinstance(target_url, str): # Zusätzliche Prüfung
logger.error(f"get_soup_for_details: Ungültige URL '{target_url}' erhalten.") logger.error(f"get_soup_for_details: Ungültige URL '{target_url}' erhalten.")
raise ValueError("Ungültige URL für get_soup_for_details") # Damit retry greift oder als Fehler propagiert wird # Wirf direkt einen Fehler, der vom @retry_on_failure gefangen wird, falls es eine wiederholbare Ursache haben könnte,
# oder einen spezifischen ValueError, falls es ein permanentes Problem ist.
# Für eine ungültige URL-Struktur ist ValueError oft passender.
raise ValueError(f"Ungültige URL für get_soup_for_details: {target_url}")
if not target_url.lower().startswith(("http://", "https://")): if not target_url.lower().startswith(("http://", "https://")):
logger.debug(f"get_soup_for_details: Füge 'https://' zu URL '{target_url}' hinzu.") logger.debug(f"get_soup_for_details: Füge 'https://' zu URL '{target_url}' hinzu.")
target_url = "https://" + target_url target_url = "https://" + target_url
# Der requests.get Call ist jetzt hier
response = requests.get(target_url, timeout=getattr(Config, 'REQUEST_TIMEOUT', 15), verify=True) response = requests.get(target_url, timeout=getattr(Config, 'REQUEST_TIMEOUT', 15), verify=True)
response.raise_for_status() response.raise_for_status() # Wirft HTTPError für 4xx/5xx Antworten
response.encoding = response.apparent_encoding response.encoding = response.apparent_encoding # Encoding erraten
return BeautifulSoup(response.text, getattr(Config, 'HTML_PARSER', 'html.parser')) return BeautifulSoup(response.text, getattr(Config, 'HTML_PARSER', 'html.parser')) # Parsen
# --- ENDE DES NEUEN/ERSETZTEN BLOCKS --- # --- ENDE DES NEUEN/ERSETZTEN BLOCKS ---
# Rufen Sie die Hilfsfunktion auf, um das Soup-Objekt zu erhalten # Rufen Sie die Hilfsfunktion auf, um das Soup-Objekt zu erhalten
soup = get_soup_for_details(url) soup = get_soup_for_details(url) # Der Aufruf von get_soup_for_details
# Wenn das Soup-Objekt erfolgreich erhalten wurde
if soup: if soup:
# --- Extrahiere spezifische Details --- # --- Extrahiere spezifische Details ---
# Versuchen Sie, wichtige Meta-Informationen zu extrahieren. # Versuchen Sie, wichtige Meta-Informationen zu extrahieren.
title = soup.find('title') # Titel-Tag title = soup.find('title') # Titel-Tag