import streamlit as st import requests from bs4 import BeautifulSoup import openai import csv import os def add_to_csv(var1, var2, var3, var4, var5, var6, var7, filename): # Öffnen der CSV-Datei im Anhängemodus with open(filename, 'a', newline='', encoding = "utf-8") as file: writer = csv.writer(file) # Hinzufügen der Variablen als neue Zeile in die CSV-Datei writer.writerow([var1, var2, var3, var4, var5, var6, var7]) # Definiert die Funktion zum Scrapen der Webseite def scrape_website(url): try: response = requests.get(url) response.raise_for_status() soup = BeautifulSoup(response.text, 'html.parser') content = { 'scraped_html': ' '.join(str(p) for p in soup.find_all('p', class_="sc-beqWaB jOAegM")), 'heute_überschrift': ' '.join(str(p) for p in soup.find_all('h1', class_="sc-beqWaB iTcspr")), 'heute_zsm': ' '.join(str(p) for p in soup.find_all('p', class_="sc-beqWaB iOdRIJ")) } return content except Exception as e: return str(e) def send_to_chatgpt(api_key, prompt_file, transcript): try: openai.api_key = api_key response = openai.ChatCompletion.create( model="gpt-4-1106-preview", messages=[ {"role": "system", "content": prompt_file}, {"role": "system", "content": transcript} ], ) return response.choices[0].message["content"] except Exception as e: return str(e) st.title("Webseiten-Scraper") # Beispiel für die Verwendung der Funktion api_key = os.getenv("api_key") # Setzen Sie hier Ihren OpenAI-API-Schlüssel ein base_prompt = os.getenv("prompt") csv_name = "results.csv" # Eingabefelder für URL und p_class url = st.text_input("URL eingeben", "https://www.beispielwebsite.com") if st.button("Scrape"): if url: scraped_html = scrape_website(url) response = send_to_chatgpt(api_key, base_prompt, scraped_html['scraped_html']) st.code(response) teile = response.split("Kernaussagen:") ueberschriften_teil, kernaussagen_teil = teile[0], teile[1] ueberschriften = ueberschriften_teil.split("\n")[1:] # Erste Zeile überspringen ueberschrift_1 = ueberschriften[0].split(" ", 1)[1] # "1." entfernen ueberschrift_2 = ueberschriften[1].split(" ", 1)[1] # "2." entfernen kernaussagen = kernaussagen_teil.split("\n")[1:] # Erste Zeile überspringen kernaussage_1 = kernaussagen[0].split(" ", 1)[1] # "1." entfernen kernaussage_2 = kernaussagen[1].split(" ", 1)[1] # "2." entfernen add_to_csv( url, scraped_html['heute_überschrift'], ueberschrift_1, ueberschrift_2, scraped_html['heute_zsm'], kernaussage_1, kernaussage_2, csv_name ) else: st.error("Bitte geben Sie eine gültige URL ein.")