Spaces:
Sleeping
Sleeping
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.") | |