Today-first lunch view for five Lund places (Edison, Bricks, Smaka på Kina,
Kantin, Eatery). A GitHub Action scrapes the menus on weekdays (Monday a few
times through late morning, when the new week's menu lands, plus a midday pass
Tue–Fri) and commits lt.json only when a menu actually changed; index.html
renders whichever day it is.
index.html— the page (fetcheslt.json, falls back to a baked-in snapshot)scraper.py— fetches the five sources, writeslt.jsonlt.json— current menus (regenerated by the Action).github/workflows/lunch-scrape.yml— scheduled scrape + commit-on-change
pip install requests beautifulsoup4 pdfminer.six
python scraper.py
- Settings → Actions → General → Workflow permissions → Read and write
- Settings → Pages → Deploy from branch →
main/ root - Actions tab → run Scrape lunch menus once
- Open
https://qlik-pas.github.io/lunch/
If Eatery's PDF path changes, set EATERY_PDF_URL in the workflow.
Kantin is scraped from kantinlund.se (robots-disallowed; swap to a mirror if it 403s).