§40 LFGB Hygienemängel-Dashboard — Flask/SQLite, 11 Bundesland-Scraper
- Python 67.4%
- HTML 32.6%
| .hermes/plans | ||
| scrapers | ||
| .gitignore | ||
| dashboard.html | ||
| database.py | ||
| README.md | ||
| scrape.py | ||
| server.py | ||
Verbraucherfenster-Server
Dashboard für Hygienemängel nach § 40 Abs. 1a LFGB — aggregiert Veröffentlichungen aus 11 Bundesländern in einer einheitlichen Oberfläche.
Live: https://four.rkenow.de
Features
- Automatisches Scraping aller verfügbaren Bundesland-Portale
- Filterung nach Bundesland, Behörde, Ort, Betrieb
- Schädlingsbefall-Filter (Mäuse, Ratten, Kakerlaken u.a.)
- Sortierung und Volltextsuche
- Statistik-Dashboard mit Top-Orten und Behörden
- REST-API unter
/api/
Bundesländer
| Kürzel | Bundesland | Quelle |
|---|---|---|
| HE | Hessen | verbraucherfenster.de |
| NW | Nordrhein-Westfalen | lebensmitteltransparenz.nrw.de |
| BW | Baden-Württemberg | lebensmittelkontrolle-bw.de |
| NI | Niedersachsen | niedersachsen.de |
| BY | Bayern | lgl.bayern.de |
| SH | Schleswig-Holstein | transparenz.schleswig-holstein.de |
| HB | Bremen | transparenz.bremen.de |
| HH | Hamburg | transparenz.hamburg.de |
| MV | Mecklenburg-Vorpommern | service.mvnet.de |
| BB | Brandenburg | lavg.brandenburg.de (PDF) |
| SN | Sachsen | lfgb.sachsen.de (JSON-API) |
Stack
- Backend: Python 3, Flask, SQLite (WAL-Modus)
- Frontend: Vanilla JS, kein Framework
- Scraper:
scrapers/— je ein Modul pro Bundesland - Deployment: systemd auf CT 107 (LXC, Proxmox)
Schnellstart
python3 -m venv venv && source venv/bin/activate
pip install flask requests beautifulsoup4 lxml
python3 database.py # Schema anlegen
python3 scrape.py --all # Einmalig alle Bundesländer scrapen
python3 server.py # Server starten → http://localhost:8080
Struktur
verbraucherfenster-server/
├── server.py # Flask-App + REST-API
├── scrape.py # Scraper-Runner (CLI)
├── database.py # SQLite-Layer
├── dashboard.html # Single-Page-Frontend
└── scrapers/
├── __init__.py # AbstractScraper + Registry
├── hessen.py
├── nrw.py
└── ... # je ein Scraper pro Bundesland