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:
@@ -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() == "":
|
||||
|
||||
Reference in New Issue
Block a user