v1.4.7.1 Verbesserter Website-Scraper: User-Agent gesetzt und SSL-Verifikation optional

- In get_website_raw() wurde ein User-Agent-Header hinzugefügt, um Blockaden zu vermeiden.
- SSL-Zertifikatüberprüfung kann jetzt optional durch den Parameter verify_cert deaktiviert werden (Standard: False).
- Zusätzliche Debug-Ausgaben protokollieren den Statuscode und erste 100 Zeichen des extrahierten Textes.
- Damit wird sichergestellt, dass beim Fehlen eines Wikipedia-Eintrags der Website-Fallback besser analysiert werden kann.
This commit is contained in:
2025-04-09 07:46:03 +00:00
parent 7c059884f1
commit cce3e93ccb

View File

@@ -1,15 +1,17 @@
#!/usr/bin/env python3
"""
Version: v1.4.7
Version: v1.4.8
Datum: {aktuelles Datum}
Git-Überschrift (max. 100 Zeichen):
v1.4.7 Fallback Website-Details: Mehr Logging & Fallback in Branchenbewertung
v1.4.8 Verbesserter Website-Scraper: User-Agent gesetzt und SSL-Verifikation optional
Git-Änderungsbeschreibung:
- In evaluate_branche_chatgpt() wird geprüft, ob sowohl Wiki- als auch externe Beschreibung 'k.A.' sind.
- Falls ja, wird der Website-Zusammenfassungstext als Fallback zur Branchenbewertung genutzt.
- Zusätzliche debug_print()-Ausgaben wurden eingefügt, um anzuzeigen, welche Informationen für die Entscheidungsfindung herangezogen wurden.
- Nach der ChatGPT-Antwort wird das Endergebnis ebenfalls geloggt.
- In get_website_raw() wurde ein User-Agent-Header hinzugefügt, um Blockaden zu vermeiden.
- SSL-Zertifikatüberprüfung kann jetzt optional durch den Parameter verify_cert deaktiviert werden (Standard: False).
- Zusätzliche Debug-Ausgaben protokollieren den Statuscode und erste 100 Zeichen des extrahierten Textes.
- Damit wird sichergestellt, dass beim Fehlen eines Wikipedia-Eintrags der Website-Fallback besser analysiert werden kann.
"""
@@ -35,7 +37,7 @@ except ImportError:
# ==================== KONFIGURATION ====================
class Config:
VERSION = "v1.4.5"
VERSION = "v1.4.8"
LANG = "de"
CREDENTIALS_FILE = "service_account.json"
SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo"
@@ -273,23 +275,48 @@ def mark_processed(field):
processed_timestamps[field] = datetime.now().isoformat()
# ==================== NEUE FUNKTION: Website-Rohtext extrahieren ====================
def get_website_raw(url, max_length=1000):
# Falls URL kein Schema besitzt, ergänze "https://"
def get_website_raw(url, max_length=1000, verify_cert=False):
"""
Ruft die Website ab und gibt den bereinigten Text des <body>-Inhalts zurück (maximal max_length Zeichen).
Zusätzliche Verbesserungen:
- Falls kein Schema vorhanden ist, wird "https://" ergänzt.
- Es werden zusätzliche Header (insbesondere ein User-Agent) mitgeschickt.
- Optional wird die Zertifikatüberprüfung deaktiviert (verify_cert=False).
Args:
url (str): Die URL der Website.
max_length (int): Maximale Länge des zurückgegebenen Texts.
verify_cert (bool): Gibt an, ob SSL-Zertifikate verifiziert werden sollen.
Returns:
str: Extrahierter Text oder "k.A.", wenn Fehler auftreten.
"""
if not url.lower().startswith("http"):
url = "https://" + url
headers = {
"User-Agent": "Mozilla/5.0 (compatible; AcmeInc/1.0; +http://example.com/bot)"
}
try:
response = requests.get(url, timeout=10)
response = requests.get(url, timeout=10, headers=headers, verify=verify_cert)
if response.status_code != 200:
debug_print(f"Fehler: Website {url} lieferte Statuscode {response.status_code}")
return "k.A."
soup = BeautifulSoup(response.text, Config.HTML_PARSER)
body = soup.find('body')
if body:
text = body.get_text(separator=' ', strip=True)
text = re.sub(r'\s+', ' ', text)
return text[:max_length]
return "k.A."
result = text[:max_length]
debug_print(f"Website {url} erfolgreich gescrapt. Extrahierter Text (Länge {len(result)}): {result[:100]}...")
return result
else:
debug_print(f"Kein <body>-Tag gefunden in {url}")
return "k.A."
except Exception as e:
debug_print(f"Fehler beim Abrufen der Website {url}: {e}")
return "k.A."
# ==================== NEUE FUNKTION: Website-Zusammenfassung erstellen ====================
def summarize_website_content(raw_text):
if raw_text == "k.A." or raw_text.strip() == "":