Files
HGWSpeiseplanScraper/speiseplan.py
2022-02-21 14:39:00 +01:00

101 lines
3.8 KiB
Python
Executable File

#!/usr/bin/python
import urllib.request
from bs4 import BeautifulSoup
import datetime
days = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"]
def suppe(url):
page = urllib.request.urlopen(url).read()
return BeautifulSoup(page, "html.parser")
# bistros
def sbar():
return str(suppe("https://sbar-greifswald.de").find('table'))
def grangusto():
return f'<img width=100% src={suppe("https://gran-gusto.de/wochenmenue-kiga/").find("img", class_="img-with-animation")["src"]}>'
def sternwarte():
fullsupp = suppe("https://www.pommerscher-diakonieverein.de/produkte-dienstleistungen/gastronomie-hotellerie/bio-bistro-alte-sternwarte/")
menu = fullsupp.find("div", class_="ce-week-menu")
menu.ul.clear()
for n, d in enumerate(menu.find_all("div", class_='tab-pane')):
d.div.div.div.replace_with(fullsupp.new_tag("h3"))
d.div.div.h3.string = days[n]
for i in menu.find_all("img"):
i['src'] = ""
i['height'] = 0
i['width'] = 0
for b in menu.find_all("br"):
b.name = ""
return str(menu)
def lichtblick():
fullsupp = suppe("https://www.pommerscher-diakonieverein.de/produkte-dienstleistungen/gastronomie-hotellerie/lichtblick-cafe-und-restaurant")
menu = fullsupp.find("div", class_="ce-week-menu")
menu.ul.clear()
for n, d in enumerate(menu.find_all("div", class_='tab-pane')):
d.div.div.div.replace_with(fullsupp.new_tag("h3"))
d.div.div.h3.string = days[n]
for i in menu.find_all("img"):
i['src'] = ""
i['height'] = 0
i['width'] = 0
for b in menu.find_all("br"):
b.name = ""
return str(menu)
def cafekarsten():
menu = suppe("https://cafekarsten.de/").find("div", class_="lg:grid-cols-2")
menu.find("img")['src'] = ""
return str(menu)
def tierpark():
seite = suppe("https://www.tierpark-greifswald.de/tierpark-cafe.html").find("div", id="tierpark-cafe")
return str(list(seite.children)[9])
def ipp():
return str(suppe("https://www.ipp-kantine.de/").find("div", class_="row"))
def malanders():
return str(suppe("https://mal-anders-greifswald.dipago.de/").find("div", id="dP_sidebar-area"))
bistros = {
"S-Sbar": {"f": sbar, "url": "https://sbar-greifswald.de"},
"Gran Gusto": {"f": grangusto, "url": "https://gran-gusto.de/wochenmenue-kiga"},
"Bio-Bistro Alte Sternwarte": {"f": sternwarte, "url": "https://www.pommerscher-diakonieverein.de/produkte-dienstleistungen/gastronomie-hotellerie/bio-bistro-alte-sternwarte/"},
"Bistro Lichtblick": {"f": lichtblick, "url": "https://www.pommerscher-diakonieverein.de/produkte-dienstleistungen/gastronomie-hotellerie/lichtblick-cafe-und-restaurant"},
"Cafe Karsten": {"f": cafekarsten, "url": "https://cafekarsten.de/"},
"Tierparkcafe": {"f": tierpark, "url": "https://www.tierpark-greifswald.de/tierpark-cafe.html"},
"IPP-Kantine": {"f": ipp, "url": "https://ipp-kantine.de"},
"Mal Anders": {"f": malanders, "url": "https://mal-anders-greifswald.dipago.de"},
}
with open("index.html", "w") as f:
f.write("""<html>
<head>
</head>
<body>
""")
f.write(f"zuletzt aktualisiert: {datetime.datetime.now().strftime('%d.%m.%Y %H:%M')}<br>")
f.write("<list>")
for b in bistros:
f.write(f"<ul><a href='#{b}'>{b}</a>: <a href='{bistros[b]['url']}'>Webseite</a></ul>")
f.write("\n")
f.write("</list>\n<br><br>\n")
for b in bistros:
f.write(f"<h1><a name='#{b}'></a>{b}</h1>\n")
try:
f.write(bistros[b]['f']())
f.write("\n")
except Exception as e:
print(f"Speiseplan: Aktualisierung von {b} fehlgeschlagen mit {e}")
f.write("fehlgeschlagen<br>\n")
f.write("<br><br>\n")
f.write("""</body></html>\n""")