import requests
import random
import pprint
import re
import time
from collections import defaultdict
from bs4 import BeautifulSoup
import numpy as np
import tqdm
urlpage = 'https://www.crous-strasbourg.fr/restaurant/resto-u-esplanade/'
urlpage
'https://www.crous-strasbourg.fr/restaurant/resto-u-esplanade/'
res = requests.get(urlpage, headers = user_agent)
soup = BeautifulSoup(res.text, 'html.parser')
str(soup)[:2000]
'<!DOCTYPE html>\n\n<html lang="fr-FR" prefix="og: https://ogp.me/ns#">\n<head>\n<meta charset="utf-8"/>\n<title>Resto U\' Esplanade - Crous de Strasbourg</title>\n<meta content="width=device-width, initial-scale=1.0,user-scalable=yes,minimal-ui" name="viewport"/>\n<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>\n<!-- Optimisation des moteurs de recherche par Rank Math PRO - https://rankmath.com/ -->\n<meta content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large" name="robots">\n<link href="https://www.crous-strasbourg.fr/restaurant/resto-u-esplanade-2/" rel="canonical"/>\n<meta content="fr_FR" property="og:locale">\n<meta content="article" property="og:type"/>\n<meta content="Resto U\' Esplanade - Crous de Strasbourg" property="og:title"/>\n<meta content="https://www.crous-strasbourg.fr/restaurant/resto-u-esplanade-2/" property="og:url"/>\n<meta content="Lyon" property="og:site_name"/>\n<meta content="https://www.crous-strasbourg.fr/wp-content/uploads/sites/29/2022/11/Logo.jpg" property="og:image"/>\n<meta content="https://www.crous-strasbourg.fr/wp-content/uploads/sites/29/2022/11/Logo.jpg" property="og:image:secure_url"/>\n<meta content="1200" property="og:image:width"/>\n<meta content="630" property="og:image:height"/>\n<meta content="Resto U’ Esplanade" property="og:image:alt"/>\n<meta content="image/jpeg" property="og:image:type"/>\n<meta content="summary_large_image" name="twitter:card"/>\n<meta content="Resto U\' Esplanade - Crous de Strasbourg" name="twitter:title"/>\n<meta content="https://www.crous-strasbourg.fr/wp-content/uploads/sites/29/2022/11/Logo.jpg" name="twitter:image"/>\n<!-- /Extension Rank Math WordPress SEO -->\n<link href="//cdn.jsdelivr.net" rel="dns-prefetch"/>\n<link href="//unpkg.com" rel="dns-prefetch"/>\n<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>\n<link href="https://www.crous-strasbourg.fr/wp-content/plugins/events-calendar-pro/src/resources/css/tribe-eve'
'menu' seems to be a good option to get meals in a structured way. 'menu' is the html class and 'div'is the element: <div class="menu">contents = re.findall('<div class="menu">.*?\n</div>\n</div>',str(soup), re.DOTALL)
print(contents[0])
<div class="menu"> <div class="menu_date"> <div class="prev"></div> <time class="menu_date_title">Menu du lundi 24 mars 2025</time> <div class="next"></div> </div> <div class="meal"> <div class="meal_title">Déjeuner</div> <ul class="meal_foodies"> <li>Menus étudiants 1er et 2ème étage<ul><li>2ème étage :</li><li>Cordon bleu, sauce crème</li><li>Petits pois</li><li>Frites</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li><li>1er étage :</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Torsades, sauce bolognaise maison</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li></ul></li><li>Desserts 1er et 2ème étage<ul><li>Paris-Brest</li><li>Tarte au citron</li><li>Compote de pommes aux spéculoos</li></ul></li><li>Cristal Shop (RDC) Cafétéria<ul><li>Plat à emporter en box en verre ou sur place</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li></ul></li><li>Origines de nos viandes du jour<ul><li>Volaille origine France</li></ul></li> </ul> </div> <div class="meal"> <div class="meal_title">Dîner</div> <ul class="meal_foodies"> <li>Menus étudiants 2ème étage<ul><li>Fricadelle de boeuf, sauce crème</li><li>Haricots verts</li><li>Pommes de terre rôties</li><li>-</li><li>Gratin de pâtes arrabiata</li></ul></li><li>Desserts 2ème étage<ul><li>Paris-Brest</li><li>Tarte au citron</li><li>Compote de pommes aux spéculoos</li></ul></li><li>Origines de nos viandes du jour<ul><li>menu non communiqué</li></ul></li> </ul> </div> </div>
# Return elements that matched the html class in a list
contents = soup.find_all('div' ,class_= 'menu')
contents[0]
<div class="menu"> <div class="menu_date"> <div class="prev"></div> <time class="menu_date_title">Menu du lundi 24 mars 2025</time> <div class="next"></div> </div> <div class="meal"> <div class="meal_title">Déjeuner</div> <ul class="meal_foodies"> <li>Menus étudiants 1er et 2ème étage<ul><li>2ème étage :</li><li>Cordon bleu, sauce crème</li><li>Petits pois</li><li>Frites</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li><li>1er étage :</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Torsades, sauce bolognaise maison</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li></ul></li><li>Desserts 1er et 2ème étage<ul><li>Paris-Brest</li><li>Tarte au citron</li><li>Compote de pommes aux spéculoos</li></ul></li><li>Cristal Shop (RDC) Cafétéria<ul><li>Plat à emporter en box en verre ou sur place</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li></ul></li><li>Origines de nos viandes du jour<ul><li>Volaille origine France</li></ul></li> </ul> </div> <div class="meal"> <div class="meal_title">Dîner</div> <ul class="meal_foodies"> <li>Menus étudiants 2ème étage<ul><li>Fricadelle de boeuf, sauce crème</li><li>Haricots verts</li><li>Pommes de terre rôties</li><li>-</li><li>Gratin de pâtes arrabiata</li></ul></li><li>Desserts 2ème étage<ul><li>Paris-Brest</li><li>Tarte au citron</li><li>Compote de pommes aux spéculoos</li></ul></li><li>Origines de nos viandes du jour<ul><li>menu non communiqué</li></ul></li> </ul> </div> </div>
def get_page(urlpage):
"""
From an link and a html class that you select by inspecting manually the page
Return a list with elements that matched this class
"""
# Get page in html
time.sleep(7 + random.uniform(0,8))
res = requests.get(urlpage, headers = user_agent)
soup = BeautifulSoup(res.text, 'html.parser')
return str(soup)
soup = get_page(urlpage)
# Return elements that matched the html class in a list
contents = re.findall('<div class="menu">.*?\n</div>\n</div>',str(soup), re.DOTALL)
content = contents[0]
print(content)
<div class="menu"> <div class="menu_date"> <div class="prev"></div> <time class="menu_date_title">Menu du lundi 24 mars 2025</time> <div class="next"></div> </div> <div class="meal"> <div class="meal_title">Déjeuner</div> <ul class="meal_foodies"> <li>Menus étudiants 1er et 2ème étage<ul><li>2ème étage :</li><li>Cordon bleu, sauce crème</li><li>Petits pois</li><li>Frites</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li><li>1er étage :</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Torsades, sauce bolognaise maison</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li></ul></li><li>Desserts 1er et 2ème étage<ul><li>Paris-Brest</li><li>Tarte au citron</li><li>Compote de pommes aux spéculoos</li></ul></li><li>Cristal Shop (RDC) Cafétéria<ul><li>Plat à emporter en box en verre ou sur place</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li></ul></li><li>Origines de nos viandes du jour<ul><li>Volaille origine France</li></ul></li> </ul> </div> <div class="meal"> <div class="meal_title">Dîner</div> <ul class="meal_foodies"> <li>Menus étudiants 2ème étage<ul><li>Fricadelle de boeuf, sauce crème</li><li>Haricots verts</li><li>Pommes de terre rôties</li><li>-</li><li>Gratin de pâtes arrabiata</li></ul></li><li>Desserts 2ème étage<ul><li>Paris-Brest</li><li>Tarte au citron</li><li>Compote de pommes aux spéculoos</li></ul></li><li>Origines de nos viandes du jour<ul><li>menu non communiqué</li></ul></li> </ul> </div> </div>
meals = str(content).split('<div class="meal">')
for meal in meals:
print(meal)
<div class="menu"> <div class="menu_date"> <div class="prev"></div> <time class="menu_date_title">Menu du lundi 24 mars 2025</time> <div class="next"></div> </div> <div class="meal_title">Déjeuner</div> <ul class="meal_foodies"> <li>Menus étudiants 1er et 2ème étage<ul><li>2ème étage :</li><li>Cordon bleu, sauce crème</li><li>Petits pois</li><li>Frites</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li><li>1er étage :</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Torsades, sauce bolognaise maison</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li></ul></li><li>Desserts 1er et 2ème étage<ul><li>Paris-Brest</li><li>Tarte au citron</li><li>Compote de pommes aux spéculoos</li></ul></li><li>Cristal Shop (RDC) Cafétéria<ul><li>Plat à emporter en box en verre ou sur place</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li></ul></li><li>Origines de nos viandes du jour<ul><li>Volaille origine France</li></ul></li> </ul> </div> <div class="meal_title">Dîner</div> <ul class="meal_foodies"> <li>Menus étudiants 2ème étage<ul><li>Fricadelle de boeuf, sauce crème</li><li>Haricots verts</li><li>Pommes de terre rôties</li><li>-</li><li>Gratin de pâtes arrabiata</li></ul></li><li>Desserts 2ème étage<ul><li>Paris-Brest</li><li>Tarte au citron</li><li>Compote de pommes aux spéculoos</li></ul></li><li>Origines de nos viandes du jour<ul><li>menu non communiqué</li></ul></li> </ul> </div> </div>
We want everything between <time class="menu_date_title">Menu du and the first </time> that appears, we can just catch the group of character between these two entities. Create a group with () to extract this part with re.findall :
.*after the .? will control for the repetition </time>, so when it will meet the first </time>, it will stop.You will then try to find if there is some stuff in your string that match this condition. The regex will be written '<time class="menu_date_title">Menu du (.*?)</time>'. Of course it doen't mean there are no other way of doing it or even writting it, but it works and it's pretty simple to read.
date = re.findall('<time class="menu_date_title">Menu du (.*?)</time>',str(content))
print(date)
['lundi 24 mars 2025']
meals = meals[1:]
for meal in meals:
print(meal)
<div class="meal_title">Déjeuner</div> <ul class="meal_foodies"> <li>Menus étudiants 1er et 2ème étage<ul><li>2ème étage :</li><li>Cordon bleu, sauce crème</li><li>Petits pois</li><li>Frites</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li><li>1er étage :</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Torsades, sauce bolognaise maison</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li></ul></li><li>Desserts 1er et 2ème étage<ul><li>Paris-Brest</li><li>Tarte au citron</li><li>Compote de pommes aux spéculoos</li></ul></li><li>Cristal Shop (RDC) Cafétéria<ul><li>Plat à emporter en box en verre ou sur place</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li></ul></li><li>Origines de nos viandes du jour<ul><li>Volaille origine France</li></ul></li> </ul> </div> <div class="meal_title">Dîner</div> <ul class="meal_foodies"> <li>Menus étudiants 2ème étage<ul><li>Fricadelle de boeuf, sauce crème</li><li>Haricots verts</li><li>Pommes de terre rôties</li><li>-</li><li>Gratin de pâtes arrabiata</li></ul></li><li>Desserts 2ème étage<ul><li>Paris-Brest</li><li>Tarte au citron</li><li>Compote de pommes aux spéculoos</li></ul></li><li>Origines de nos viandes du jour<ul><li>menu non communiqué</li></ul></li> </ul> </div> </div>
types = re.findall('<div class="meal_title">(.*?)</div>',str(content))
print(types)
meal_foodies = meals[0].split('</ul></li>')[:-1]
meal_foodies
['Déjeuner', 'Dîner']
['\n<div class="meal_title">Déjeuner</div>\n<ul class="meal_foodies">\n<li>Menus étudiants 1er et 2ème étage<ul><li>2ème étage :</li><li>Cordon bleu, sauce crème</li><li>Petits pois</li><li>Frites</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li><li>1er étage :</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Torsades, sauce bolognaise maison</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li>', '<li>Desserts 1er et 2ème étage<ul><li>Paris-Brest</li><li>Tarte au citron</li><li>Compote de pommes aux spéculoos</li>', '<li>Cristal Shop (RDC) Cafétéria<ul><li>Plat à emporter en box en verre ou sur place</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li>', '<li>Origines de nos viandes du jour<ul><li>Volaille origine France</li>']
It's still very dirty down there, let's clean it up!
Let's retrieve everything within <li></li>.
pole, meal = meal_foodies[0].split('<ul>')
print(meal)
<li>2ème étage :</li><li>Cordon bleu, sauce crème</li><li>Petits pois</li><li>Frites</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li><li>1er étage :</li><li>Poisson aux amandes</li><li>Petits pois</li><li>Blé safrané</li><li>-</li><li>Torsades, sauce bolognaise maison</li><li>-</li><li>Galette de quinoa provençale, sauce tomate</li><li>Petits pois</li><li>Blé safrané</li>
print(pole)
print('-----')
pole = re.search('<li>(.+)',pole).group(1)
print(pole)
<div class="meal_title">Déjeuner</div> <ul class="meal_foodies"> <li>Menus étudiants 1er et 2ème étage ----- Menus étudiants 1er et 2ème étage
details = re.findall('<li>(.*?)</li>',
meal)
details
['2ème étage :', 'Cordon bleu, sauce crème', 'Petits pois', 'Frites', '-', 'Galette de quinoa provençale, sauce tomate', 'Petits pois', 'Blé safrané', '1er étage :', 'Poisson aux amandes', 'Petits pois', 'Blé safrané', '-', 'Torsades, sauce bolognaise maison', '-', 'Galette de quinoa provençale, sauce tomate', 'Petits pois', 'Blé safrané']
pole_menu = dict()
for meal_foodie in meal_foodies:
pole, meal = meal_foodie.split('<ul>')
pole = re.search('<li>(.+)',pole).group(1)
details = re.findall('<li>(.*?)</li>',
meal)
clean_details = [detail for detail in details if detail != '-']
if 'Origine' not in pole:
pole_menu.update({pole:clean_details})
pole_menu
{'Menus étudiants 1er et 2ème étage': ['2ème étage :',
'Cordon bleu, sauce crème',
'Petits pois',
'Frites',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané',
'1er étage :',
'Poisson aux amandes',
'Petits pois',
'Blé safrané',
'Torsades, sauce bolognaise maison',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané'],
'Desserts 1er et 2ème étage': ['Paris-Brest',
'Tarte au citron',
'Compote de pommes aux spéculoos'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Poisson aux amandes',
'Petits pois',
'Blé safrané',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané']}
content = contents[0]
meals = str(content).split('<div class="meal">')
meals = meals[1:]
date = re.findall('<time class="menu_date_title">Menu du (.*?)</time>',str(content))
all_meals = dict()
for meal in meals:
pole_menu = dict()
meal_foodies = meal.split('</ul></li>')[:-1]
meal_type = re.findall('<div class="meal_title">(.*?)</div>',meal)[0]
for meal_foodie in meal_foodies:
pole, foodie = meal_foodie.split('<ul>')
pole = re.search('<li>(.+)',pole).group(1)
details = re.findall('<li>(.*?)</li>',
foodie)
clean_details = [detail for detail in details if detail != '-']
if 'Origine' not in pole:
pole_menu.update({pole:clean_details})
all_meals.update({meal_type:pole_menu})
all_meals
{'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage :',
'Cordon bleu, sauce crème',
'Petits pois',
'Frites',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané',
'1er étage :',
'Poisson aux amandes',
'Petits pois',
'Blé safrané',
'Torsades, sauce bolognaise maison',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané'],
'Desserts 1er et 2ème étage': ['Paris-Brest',
'Tarte au citron',
'Compote de pommes aux spéculoos'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Poisson aux amandes',
'Petits pois',
'Blé safrané',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané']},
'Dîner': {'Menus étudiants 2ème étage': ['Fricadelle de boeuf, sauce crème',
'Haricots verts',
'Pommes de terre rôties',
'Gratin de pâtes arrabiata'],
'Desserts 2ème étage': ['Paris-Brest',
'Tarte au citron',
'Compote de pommes aux spéculoos']}}
We know now two things :
let's create a function!
def get_details(meal_foodie):
"""
Get meal content and pole name
"""
# Separate name and food
pole, foodie = meal_foodie.split('<ul>')
# Extract meals keeping everything between <li> and </li>
details = re.findall('<li>(.*?)</li>',
foodie)
# Clean name
pole = re.search('<li>(.+)',pole).group(1)
return pole, details
def get_pole_menu(meal_foodies):
"""
Iterate over each pole and store the information about the meal
"""
pole_menu = dict()
# Iterate over each possble choice
for meal_foodie in meal_foodies:
pole, details = get_details(meal_foodie)
clean_details = [detail for detail in details if detail != '-']
# Update the dictionary
if 'Origine' not in pole:
pole_menu.update({pole:clean_details})
return pole_menu
def clean_meals(content):
"""
Separate lunch and dinner, remove first element as it does not contains information about food
"""
meals = str(content).split('<div class="meal">')
meals = meals[1:]
return meals
def get_date(content):
"""
Get date
"""
date = re.findall('<time class="menu_date_title">Menu du (.*?)</time>',str(content))[0]
return date
def get_meal_type(meal):
"""
Are you having lunch or dinner?
"""
meal_type = re.findall('<div class="meal_title">(.*?)</div>',meal)[0]
return meal_type
def get_all_meals_for_given_date(content):
"""
Put all the functions together, return date and all meal for a given restaurant at a gevien date
"""
date = get_date(content)
meals = clean_meals(content)
all_meals = dict()
# Iterate over each meal
for meal in meals:
meal_foodies = meal.split('</ul></li>')[:-1]
meal_type = get_meal_type(meal)
pole_menu = get_pole_menu(meal_foodies)
# Store the resulte
all_meals.update({meal_type:pole_menu})
return date ,all_meals
get_all_meals_for_given_date(contents[0])
('lundi 24 mars 2025',
{'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage :',
'Cordon bleu, sauce crème',
'Petits pois',
'Frites',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané',
'1er étage :',
'Poisson aux amandes',
'Petits pois',
'Blé safrané',
'Torsades, sauce bolognaise maison',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané'],
'Desserts 1er et 2ème étage': ['Paris-Brest',
'Tarte au citron',
'Compote de pommes aux spéculoos'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Poisson aux amandes',
'Petits pois',
'Blé safrané',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané']},
'Dîner': {'Menus étudiants 2ème étage': ['Fricadelle de boeuf, sauce crème',
'Haricots verts',
'Pommes de terre rôties',
'Gratin de pâtes arrabiata'],
'Desserts 2ème étage': ['Paris-Brest',
'Tarte au citron',
'Compote de pommes aux spéculoos']}})
for content in contents:
print(get_all_meals_for_given_date(content))
print('--------------------------------')
('lundi 24 mars 2025', {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage :', 'Cordon bleu, sauce crème', 'Petits pois', 'Frites', 'Galette de quinoa provençale, sauce tomate', 'Petits pois', 'Blé safrané', '1er étage :', 'Poisson aux amandes', 'Petits pois', 'Blé safrané', 'Torsades, sauce bolognaise maison', 'Galette de quinoa provençale, sauce tomate', 'Petits pois', 'Blé safrané'], 'Desserts 1er et 2ème étage': ['Paris-Brest', 'Tarte au citron', 'Compote de pommes aux spéculoos'], 'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place', 'Poisson aux amandes', 'Petits pois', 'Blé safrané', 'Galette de quinoa provençale, sauce tomate', 'Petits pois', 'Blé safrané']}, 'Dîner': {'Menus étudiants 2ème étage': ['Fricadelle de boeuf, sauce crème', 'Haricots verts', 'Pommes de terre rôties', 'Gratin de pâtes arrabiata'], 'Desserts 2ème étage': ['Paris-Brest', 'Tarte au citron', 'Compote de pommes aux spéculoos']}})
--------------------------------
('mardi 25 mars 2025', {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage :', 'Fricadelle de boeuf, sauce marchand de vin', 'Duo de carottes', 'Frites', 'Curry de pois chiches aux légumes maison', 'Riz pilaf', '1er étage :', 'Croûte de volaille aux champignons', 'Duo de carottes', 'Riz pilaf', 'Torsades, sauce carbonara maison', 'Curry de pois chiches aux légumes maison', 'Riz pilaf'], 'Desserts 1er et 2ème étage': ['Crème vanille', 'Donut', 'Eclair au chocolat'], 'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place', 'Croûte de volaille aux champignons', 'Duo de carottes', 'Riz pilaf', 'Curry de pois chiches aux légumes maison', 'Riz pilaf']}, 'Dîner': {'Menus étudiants 2ème étage': ['Palette à la diable', 'Petits pois carottes', 'Pommes de terre rôties', 'Aiguillettes de blé, sauce rémoulade', 'Petits pois carottes', 'Pommes de terre rôties'], 'Desserts 2ème étage': ['Crème vanille', 'Donut', 'Eclair au chocolat']}})
--------------------------------
('mercredi 26 mars 2025', {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['JOURNEE VERTE', '2ème étage :', 'Chili aux lentilles', 'Riz pilaf', 'Tajine aux abricots et pois chiches', 'Boulgour aux épices', '1er étage :', 'Gratin de légumes', 'Polenta', 'Tajine aux abricots et pois chiches', 'Boulgour aux épices'], 'Desserts 1er et 2ème étage': ['Gâteau quinoa pommes', 'Fondant au citron', 'Cocktail de fruits'], 'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place', 'Gratin de légumes', 'Polenta', 'Tajine aux abricots et pois chiches', 'Boulgour aux épices']}, 'Dîner': {'Menus étudiants 2ème étage': ['Boulettes de pois chiches BIO, raïta de concombre BIO', 'Haricots verts BIO', 'Boulgour BIO', 'Torsades aux courgettes et pois BIO'], 'Desserts 2ème étage': ['Tarte aux pommes BIO', 'Flan au caramel BIO']}})
--------------------------------
('jeudi 27 mars 2025', {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage:', 'Poutine', 'Frites', 'Samoussa aux légumes, sauce au miel', 'Nouilles chinoises', 'Wok de légumes', '1er étage :', 'Pilons de poulet à la citronnelle', 'Nouilles chinoises', 'Wok de légumes', 'Torsades, sauce aux 3 fromages maison', 'Samoussa aux légumes, sauce au miel', 'Nouilles chinoises', 'Wok de légumes'], 'Desserts 1er et 2ème étage': ['Millefeuille vanille', 'Tarte aux pommes', 'Fromage blanc aux griottes'], 'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place', 'Pilons de poulet à la citronnelle', 'Nouilles chinoises', 'Wok de légumes', 'Samoussa aux légumes, sauce au miel', 'Nouilles chinoises', 'Wok de légumes']}, 'Dîner': {'Menus étudiants 2ème étage': ['Chili con carné maison', 'Fajitas de haricots rouges tex mex maison', 'Poêlée mexicaine'], 'Desserts 2ème étage': ['Millefeuille vanille', 'Tarte aux pommes', 'Fromage blanc aux griottes']}})
--------------------------------
('vendredi 28 mars 2025', {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage :', 'Merguez, sauce tomate', 'Zaalouk de chou-fleur', 'Frites', 'Quiche aux pommes de terre et épinards', 'Haricots verts', 'Torsades', '1er étage :', 'Echine de porc, sauce à la bière', 'Haricots verts', 'Purée de pommes de terre', 'Torsades, sauce aux 2 saumon maison', 'Quiche aux pommes de terre et épinards', 'Haricots verts', 'Torsades'], 'Desserts 1er et 2ème étage': ['Beignet aux framboises', 'Eclair au café', 'Tiramisu'], 'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place', 'Echine de porc, sauce à la bière', 'Haricots verts', 'Purée de pommes de terre', 'Quiche aux pommes de terre et épinards', 'Haricots verts', 'Torsades']}, 'Dîner': {'Menus étudiants 2ème étage': ['Cordon bleu, sauce tomate', 'Carottes au céleri branche', 'Gratin dauphinois'], 'Desserts 2ème étage': ['Beignet aux framboises', 'Eclair au café', 'Tiramisu']}})
--------------------------------
Now we need to get all restaurants urls, we will them here : https://www.crous-strasbourg.fr/se-restaurer/ou-manger/
Use the get_page function, specify 'article' and '' because we want to catch up <article>.
time.sleep(7 + random.uniform(0,8))
urlpage = 'https://www.crous-strasbourg.fr/se-restaurer/ou-manger/'
res = requests.get(urlpage, headers = user_agent)
soup = BeautifulSoup(res.text, 'html.parser')
links = re.findall('href="(.*?)">',str(soup))
links[75:95]
['https://www.crous-strasbourg.fr/restaurant/le-32-2/', 'https://www.crous-strasbourg.fr/restaurant/le-cristal-shop-ru-esplanade-2/', 'https://www.crous-strasbourg.fr/restaurant/le-stift/', 'https://www.crous-strasbourg.fr/restaurant/learning-center-2/', 'https://www.crous-strasbourg.fr/restaurant/ort-laure-weil/', 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-centre-hospitalier-derstein/', 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-centre-hospitalier-sainte-catherine/', 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-blaise-pascal/', 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-dr-eugene-koeberle/', 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-jean-mermoz/', 'https://www.crous-strasbourg.fr/restaurant/resto-u-cronenbourg-2/', 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-colmar-2/', 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-lillberg-2/', 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-liut-mulhouse-2/', 'https://www.crous-strasbourg.fr/restaurant/resto-u-esplanade-2/', 'https://www.crous-strasbourg.fr/restaurant/resto-u-gallia-2/', 'https://www.crous-strasbourg.fr/restaurant/resto-u-illkirch-2/', 'https://www.crous-strasbourg.fr/restaurant/resto-u-paul-appell/', 'https://www.calameo.com/crous-strasbourg/read/006703930bee6a9405174" rel="noopener" target="_blank', 'https://strasbourg.crousandgo.fr/" rel="noopener" target="_blank']
We can see that relevant links contains 'restaurant'.
Iterate over the list of links, check if restaurant can be matched in the url.
cleaned_links = {}
for link in links:
if '/restaurant/' in link:
link = str(link)
name = re.findall('restaurant/(.*)/',link)[0]
name = re.sub('-',' ',name)
name = re.sub(' 2','',name)
name = name.title()
cleaned_links.update({name:link})
cleaned_links
{'Cafeteria De La Fac De Droit': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-de-la-fac-de-droit-2/',
'Cafeteria De La Fonderie': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-de-la-fonderie-2/',
'Cafeteria Illkirch': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-illkirch-2/',
'Cafeteria La Misha': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-la-misha-2/',
'Cafeteria Le Cardo': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-le-cardo-2/',
'Cafeteria Le Patio': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-le-patio-2/',
'Cafeteria Le Pege': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-le-pege-2/',
'Cafeteria Mini R': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-mini-r-2/',
'Cybercafe Ru Illberg': 'https://www.crous-strasbourg.fr/restaurant/cybercafe-ru-illberg-2/',
'Fec': 'https://www.crous-strasbourg.fr/restaurant/fec/',
'Kiosque Ru Esplanade': 'https://www.crous-strasbourg.fr/restaurant/kiosque-ru-esplanade/',
'Lannexe': 'https://www.crous-strasbourg.fr/restaurant/lannexe-2/',
'Le 32': 'https://www.crous-strasbourg.fr/restaurant/le-32-2/',
'Le Cristal Shop Ru Esplanade': 'https://www.crous-strasbourg.fr/restaurant/le-cristal-shop-ru-esplanade-2/',
'Le Stift': 'https://www.crous-strasbourg.fr/restaurant/le-stift/',
'Learning Center': 'https://www.crous-strasbourg.fr/restaurant/learning-center-2/',
'Ort Laure Weil': 'https://www.crous-strasbourg.fr/restaurant/ort-laure-weil/',
'Restaurant Du Centre Hospitalier Derstein': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-centre-hospitalier-derstein/',
'Restaurant Du Centre Hospitalier Sainte Catherine': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-centre-hospitalier-sainte-catherine/',
'Restaurant Du Lycee Blaise Pascal': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-blaise-pascal/',
'Restaurant Du Lycee Dr Eugene Koeberle': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-dr-eugene-koeberle/',
'Restaurant Du Lycee Jean Mermoz': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-jean-mermoz/',
'Resto U Cronenbourg': 'https://www.crous-strasbourg.fr/restaurant/resto-u-cronenbourg-2/',
'Resto U De Colmar': 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-colmar-2/',
'Resto U De Lillberg': 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-lillberg-2/',
'Resto U De Liut Mulhouse': 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-liut-mulhouse-2/',
'Resto U Esplanade': 'https://www.crous-strasbourg.fr/restaurant/resto-u-esplanade-2/',
'Resto U Gallia': 'https://www.crous-strasbourg.fr/restaurant/resto-u-gallia-2/',
'Resto U Illkirch': 'https://www.crous-strasbourg.fr/restaurant/resto-u-illkirch-2/',
'Resto U Paul Appell': 'https://www.crous-strasbourg.fr/restaurant/resto-u-paul-appell/'}
def get_all_links():
"""
Get all restaurants links and create a dict of link with ru_names as keys
"""
# Webpage from which we extract all links
urlpage = 'https://www.crous-strasbourg.fr/se-restaurer/ou-manger/'
# Use our get_page function to extract a list with all link
time.sleep(7 + random.uniform(0,8))
res = requests.get(urlpage, headers = user_agent)
soup = BeautifulSoup(res.text, 'html.parser')
links = re.findall('href="(.*?)">',str(soup))
# Create an empty dict
names_links = {}
# Iterate over each link
for link in links:
if '/restaurant/' in link:
link = str(link)
name = re.findall('restaurant/(.*)/',link)[0]
name = re.sub('-',' ',name)
name = re.sub(' 2','',name)
name = name.title()
names_links.update({name:link})
print(names_links)
return names_links
It seems that everything works fine, let's put all together!
The basis of our final step will be as follow:
links = get_all_links()
links
{'Cafeteria De La Fac De Droit': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-de-la-fac-de-droit-2/', 'Cafeteria De La Fonderie': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-de-la-fonderie-2/', 'Cafeteria Illkirch': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-illkirch-2/', 'Cafeteria La Misha': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-la-misha-2/', 'Cafeteria Le Cardo': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-le-cardo-2/', 'Cafeteria Le Patio': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-le-patio-2/', 'Cafeteria Le Pege': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-le-pege-2/', 'Cafeteria Mini R': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-mini-r-2/', 'Cybercafe Ru Illberg': 'https://www.crous-strasbourg.fr/restaurant/cybercafe-ru-illberg-2/', 'Fec': 'https://www.crous-strasbourg.fr/restaurant/fec/', 'Kiosque Ru Esplanade': 'https://www.crous-strasbourg.fr/restaurant/kiosque-ru-esplanade/', 'Lannexe': 'https://www.crous-strasbourg.fr/restaurant/lannexe-2/', 'Le 32': 'https://www.crous-strasbourg.fr/restaurant/le-32-2/', 'Le Cristal Shop Ru Esplanade': 'https://www.crous-strasbourg.fr/restaurant/le-cristal-shop-ru-esplanade-2/', 'Le Stift': 'https://www.crous-strasbourg.fr/restaurant/le-stift/', 'Learning Center': 'https://www.crous-strasbourg.fr/restaurant/learning-center-2/', 'Ort Laure Weil': 'https://www.crous-strasbourg.fr/restaurant/ort-laure-weil/', 'Restaurant Du Centre Hospitalier Derstein': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-centre-hospitalier-derstein/', 'Restaurant Du Centre Hospitalier Sainte Catherine': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-centre-hospitalier-sainte-catherine/', 'Restaurant Du Lycee Blaise Pascal': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-blaise-pascal/', 'Restaurant Du Lycee Dr Eugene Koeberle': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-dr-eugene-koeberle/', 'Restaurant Du Lycee Jean Mermoz': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-jean-mermoz/', 'Resto U Cronenbourg': 'https://www.crous-strasbourg.fr/restaurant/resto-u-cronenbourg-2/', 'Resto U De Colmar': 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-colmar-2/', 'Resto U De Lillberg': 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-lillberg-2/', 'Resto U De Liut Mulhouse': 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-liut-mulhouse-2/', 'Resto U Esplanade': 'https://www.crous-strasbourg.fr/restaurant/resto-u-esplanade-2/', 'Resto U Gallia': 'https://www.crous-strasbourg.fr/restaurant/resto-u-gallia-2/', 'Resto U Illkirch': 'https://www.crous-strasbourg.fr/restaurant/resto-u-illkirch-2/', 'Resto U Paul Appell': 'https://www.crous-strasbourg.fr/restaurant/resto-u-paul-appell/'}
{'Cafeteria De La Fac De Droit': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-de-la-fac-de-droit-2/',
'Cafeteria De La Fonderie': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-de-la-fonderie-2/',
'Cafeteria Illkirch': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-illkirch-2/',
'Cafeteria La Misha': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-la-misha-2/',
'Cafeteria Le Cardo': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-le-cardo-2/',
'Cafeteria Le Patio': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-le-patio-2/',
'Cafeteria Le Pege': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-le-pege-2/',
'Cafeteria Mini R': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-mini-r-2/',
'Cybercafe Ru Illberg': 'https://www.crous-strasbourg.fr/restaurant/cybercafe-ru-illberg-2/',
'Fec': 'https://www.crous-strasbourg.fr/restaurant/fec/',
'Kiosque Ru Esplanade': 'https://www.crous-strasbourg.fr/restaurant/kiosque-ru-esplanade/',
'Lannexe': 'https://www.crous-strasbourg.fr/restaurant/lannexe-2/',
'Le 32': 'https://www.crous-strasbourg.fr/restaurant/le-32-2/',
'Le Cristal Shop Ru Esplanade': 'https://www.crous-strasbourg.fr/restaurant/le-cristal-shop-ru-esplanade-2/',
'Le Stift': 'https://www.crous-strasbourg.fr/restaurant/le-stift/',
'Learning Center': 'https://www.crous-strasbourg.fr/restaurant/learning-center-2/',
'Ort Laure Weil': 'https://www.crous-strasbourg.fr/restaurant/ort-laure-weil/',
'Restaurant Du Centre Hospitalier Derstein': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-centre-hospitalier-derstein/',
'Restaurant Du Centre Hospitalier Sainte Catherine': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-centre-hospitalier-sainte-catherine/',
'Restaurant Du Lycee Blaise Pascal': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-blaise-pascal/',
'Restaurant Du Lycee Dr Eugene Koeberle': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-dr-eugene-koeberle/',
'Restaurant Du Lycee Jean Mermoz': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-jean-mermoz/',
'Resto U Cronenbourg': 'https://www.crous-strasbourg.fr/restaurant/resto-u-cronenbourg-2/',
'Resto U De Colmar': 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-colmar-2/',
'Resto U De Lillberg': 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-lillberg-2/',
'Resto U De Liut Mulhouse': 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-liut-mulhouse-2/',
'Resto U Esplanade': 'https://www.crous-strasbourg.fr/restaurant/resto-u-esplanade-2/',
'Resto U Gallia': 'https://www.crous-strasbourg.fr/restaurant/resto-u-gallia-2/',
'Resto U Illkirch': 'https://www.crous-strasbourg.fr/restaurant/resto-u-illkirch-2/',
'Resto U Paul Appell': 'https://www.crous-strasbourg.fr/restaurant/resto-u-paul-appell/'}
all_dates_all_menus = defaultdict(dict)
for name in tqdm.tqdm(links):
soup_ = get_page(links[name])
contents = re.findall('<div class="menu">.*?\n</div>\n</div>',soup_, re.DOTALL)
for content in contents:
date ,all_meals = get_all_meals_for_given_date(content)
all_dates_all_menus[date].update({name:all_meals})
all_dates_all_menus
100%|██████████| 30/30 [10:30<00:00, 21.01s/it]
defaultdict(dict,
{'lundi 24 mars 2025': {'Cafeteria De La Fonderie': {'Déjeuner': {'menu étudiant tarif social': ['Chili con carne/riz pilaf',
'(Haché origine ou provenance France)',
'OU',
'Cari de carottes lentilles et quinoa'],
'Sandwich': ['Le Maraicher',
'Le Parisien',
'Le Berger',
'Bagnat Manon',
'Chaud: Bruschettas margarita'],
'Box de pâtes': ['Pasta au saumon'],
'Salade': ['Végé bowl']}},
'Cafeteria Le Pege': {'Déjeuner': {'Petit-déjeuner': ['Café & Viennoiseries',
'7h30 -10h30'],
'Plat du jour': ['Émincé de dinde à l’Indienne ',
'Brunoise de légumes',
'Quinoa de Plobsheim ou frites'],
'Végétarien': ['Biryani & bouchées végétales',
'Brunoise de légumes',
'Quinoa de Plobsheim ou frites']}},
'Cafeteria Mini R': {'Déjeuner': {'Fermeture': ['Structure fermée du Lundi 24 Mars 2025 au Vendredi 28 Mars 2025']}},
'Cybercafe Ru Illberg': {'Déjeuner': {'Sandwichs': ['Le Végéta',
'Le Parisien',
"L'Indien",
'Le Netfish',
'Chaud: Baguettine flambée'],
'Pasta Box': ['Sauce thon tomate'],
'Salade': ['La Louisiana']}},
'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Lannexe': {'Déjeuner': {"L'Annexe": ['PASTA PARTY',
'Poivrons & tomates',
'OU',
'Thon']}},
'Le 32': {'Déjeuner': {'Carte du jour au 32 - Plats': ['Filet de poulet, sauce crème',
'Fondue de poireaux',
'Garnitures',
'Galette de sarrasin et lentilles',
'Riz pilaf'],
'Entrées': ['Toast au chèvre chaud', 'Soupe de légumes'],
'Desserts': ['Entremet coco ananas',
'Salade de fruits frais']}},
'Le Cristal Shop Ru Esplanade': {'Déjeuner': {'Plat à emporter Box en verre réutilisable': ['Poisson aux amandes',
'Petits pois',
'Blé safrané',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané',
'4,50 € HT/4,95 € TTC',
'+ prix de la Box 5,70 € TTC'],
'Burger maison au choix': ['Formule avec frites',
'Burger de boeuf BIO',
'Chicken burger',
'Végé burger'],
'Pizza maison au choix': ['Grecque', 'Tartiflette'],
'Formule étudiante à 1€ tarif boursier / non boursier 3,30 €': ['Formule Be Fit',
'Sandwich, eau plate ou gazeuse, fruit ou yaourt']}},
'Learning Center': {'Déjeuner': {'Plat du jour': ['Bruschettas marguarita'],
'Sandwichs': ['Le Maraicher',
'Le Parisien',
'Le Berger',
'Bagnat Manon',
'Le Taj Mahal'],
'Pasta box': ['Pasta au saumon'],
'Plat du soir commande Crous&Go': ['Chili con carne/riz pilaf',
'(Haché origine ou provenance France)',
'OU',
'Cari de carottes lentilles et quinoa'],
'Salade': ['La Végé bowl']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Filet de colin pané, sauce béarnaise, carottes bâtonnets, frites incurvées'],
'Plat du jour': ['chaîne perso: Chou farci, jus corsé, blé',
'chaîne étudiants: Steak haché, sauce béarnaise, carottes bâtonnets, frites incurvées'],
'Végétarien': ["Galette de lentille corail à l'indienne, sauce crème champignons, pilaf de quinoa"],
'Extension': ['FERMÉ']}},
'Resto U De Colmar': {'Déjeuner': {'Menu du jour 3.30€ ou 1€': ['Chili Con Carne/Viande Hachée(Boeuf)',
'(Hachée Origine ou Provenance France)',
'Riz Pilaf',
'OU',
'Cari de Carottes Lentilles et Quinoa'],
'Viennoiseries HT': ['En Vente à partir de 8h30 :',
'Croissant Nature à 1,10 euros',
'Pain au Chocolat à 1,20 euros',
'Autre Viennoiserie de 1,10 à 1,40 euros'],
'Les grillades à la carte HT': ["Steak/frites ou légumes à 3,60 euros (l'assiette)",
'(Origine France)',
"Légumes/Féculents à 2,50 euros (l'assiette)",
'Frites à 2,50 euros (le cornet)',
"L'américain à 4,00 euros (le Sandwich)",
'(Origine France)'],
'La Pasta box HT': ['Sauce Saumon à 3,60 euros'],
'Les sandwichs HT': ['Le Parisien',
'Le Maraîcher',
'Le Berger',
'Le Bagnat : Le Manon']}},
'Resto U De Lillberg': {'Déjeuner': {'Menu étudiant - Tarif social': ['Chili con carne/riz pilaf',
'(Haché origine ou provenance France)',
'OU',
'Cari de carottes lentilles et quinoa'],
'Brasseur 4,70HT / 5.17TTC euros': ['Jambon grill',
'(Origine ou provenance France)',
'Sauce Marchand de Vin',
'Frites',
'Légumes du jour']}},
'Resto U De Liut Mulhouse': {'Déjeuner': {'Menu étudiant 3.30€ ou 1€': ['Chili con carne/riz pilaf',
'(Haché origine ou provenance France)',
'OU',
'Cari de carottes lentilles et quinoa'],
'Sandwichs': ['Le Maraicher',
'Le Parisien',
'Le Berger',
'Bagnat Manon',
'Chaud: Bruschettas margarita'],
'Pasta Box': ['Pasta au saumon'],
'Salades': ['La Végé bowl']}},
'Resto U Esplanade': {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage :',
'Cordon bleu, sauce crème',
'Petits pois',
'Frites',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané',
'1er étage :',
'Poisson aux amandes',
'Petits pois',
'Blé safrané',
'Torsades, sauce bolognaise maison',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané'],
'Desserts 1er et 2ème étage': ['Paris-Brest',
'Tarte au citron',
'Compote de pommes aux spéculoos'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Poisson aux amandes',
'Petits pois',
'Blé safrané',
'Galette de quinoa provençale, sauce tomate',
'Petits pois',
'Blé safrané']},
'Dîner': {'Menus étudiants 2ème étage': ['Fricadelle de boeuf, sauce crème',
'Haricots verts',
'Pommes de terre rôties',
'Gratin de pâtes arrabiata'],
'Desserts 2ème étage': ['Paris-Brest',
'Tarte au citron',
'Compote de pommes aux spéculoos']}},
'Resto U Gallia': {'Déjeuner': {'MENU ETUDIANT': ['Chipolatas grillées',
'Frites',
'Bâtonnières de légumes'],
'BRASSERIE': ['Filet mignon de porc ',
'Sauce au Munster',
'Frites',
'Bâtonnières de légumes ',
'Pizza Reine',
'Tarte flambée gratinée'],
'VENTE A EMPORTER': ['Formule étudiante ',
'Parisien, eau, fruit',
'Game of cheese',
'Italien',
'Maidele ',
'Panini le Napoli',
'Pizza Reine',
'Tarte flambée gratinée'],
'MENU VEGETARIEN': ['Boulettes de blé Thaï',
'Frites',
'Bâtonnières de légumes']},
'Dîner': {'MENU ETUDIANT': ['Cordon bleu de dinde',
'Pommes de terre fondantes',
'Légumes'],
'MENU VEGETARIEN': ['Galette végétarienne',
'Pommes de terre fondantes',
'Légumes'],
'ORIGINE ET PROVENANCE DE NOS VIANDES': ["Voir les affiches dans l'entrée"]}},
'Resto U Illkirch': {'Déjeuner': {'CAFETERIA': ['Petits déjeuners à partir de 7h45',
'Viennoiseries',
'Sandwichs',
'Snacking chaud',
'Desserts maison, pâtisseries américaines',
'Boissons chaudes et froides'],
'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées'],
'SALLE DES ETUDIANTS - PLAT VEGETARIEN': ['Aiguillettes de blé au fromage',
'Sauce Libanaise',
'Poêlée rustique'],
'SALLE DES ETUDIANTS - MENU DU JOUR': ['Émincé de dinde guanajuato',
'Cari de haricots verts',
'Riz'],
'SALLE DES ETUDIANTS - PATES': ['Tortis à la paysanne'],
'SALLE DES ETUDIANTS - BARBECUE': ['Longe de porc fumée',
'ou',
'Merguez',
'Frites'],
'SALLE DES ETUDIANTS - DESSERTS': ['Paris-Brest',
'ou',
'Crème dessert praliné'],
'SALLE DES PERSONNELS - ENTREES': ['Salade césar',
'ou',
'Assiette montagnarde'],
'SALLE DES PERSONNELS - SUGGESTION DU JOUR': ['Steak haché de boeuf',
'Petits pois',
'Frites'],
'SALLE DES PERSONNELS - MENU DU JOUR': ['Émincé de dinde guanajuato',
'Cari de haricots verts',
'Riz'],
'SALLE DES PERSONNELS - PLAT VEGETARIEN': ['Aiguillettes de blé au fromage',
'Sauce Libanaise',
'Poêlée rustique'],
'SALLE DES PERSONNELS - DESSERTS': ['Tarte aux abricots',
'ou',
'Fromage blanc à la myrtille']}},
'Resto U Paul Appell': {'Déjeuner': {'Pôle végétal': ['Boulettes de blé',
'Salade Thaï'],
'Flam and Co': ['Poutine ', 'Bœuf & cheddar'],
'Plat du jour': ['Beignets de poisson',
'Sauce tartare',
'Petits pois',
'Pommes persillées'],
'Annexe': ['PASTA PARTY',
'Poivrons & tomates',
'OU',
'Thon']}}},
'mardi 25 mars 2025': {'Cafeteria De La Fonderie': {'Déjeuner': {'menu étudiant tarif social': ['Cuisse de poulet grillée ',
'(origine ou provenance France)',
'Pennes',
'Petits pois',
'OU',
'Bouchée edamame',
'Sauce Napolitaine',
'Pennes'],
'Sandwich': ['Le Végéta',
'Le Campagnard',
"L'Indien",
'Le Netfish'],
'Box de pâtes': ['Pasta au saumon'],
'Salade': ["L'Alsacienne"]}},
'Cafeteria Le Pege': {'Déjeuner': {'Petit-déjeuner': ['Café & Viennoiseries',
'7h30 -10h30'],
'Plat du jour': ['Penne sauce carbonara ',
'Roquette & parmesan'],
'Végétarien': ['Penne sauce aux champignons',
'Roquette & parmesan']}},
'Cafeteria Mini R': {'Déjeuner': {'Fermeture': ['Structure fermée du Lundi 24 Mars 2025 au Vendredi 28 Mars 2025']}},
'Cybercafe Ru Illberg': {'Déjeuner': {'Sandwichs': ['Le Végéta',
'Le Campagnard',
"L'Indien",
'Le Netfish',
'Chaud: Panini Bolognaise'],
'Pasta Box': ['Pasta au saumon'],
'Salade': ["L'Alsacienne"]}},
'Le 32': {'Déjeuner': {'Carte du jour au 32 - Plats': ['Magret, sauce au miel et sésame',
'Brick au chèvre, miel et romarin',
'Garnitures',
'Ecrasé de pommes de terre',
'Romanesco'],
'Entrées': ['Salade césar revisitée', 'Soupe de légumes'],
'Desserts': ['Demi cadre framboises',
'Salade de fruits frais']}},
'Le Cristal Shop Ru Esplanade': {'Déjeuner': {'Plat à emporter Box en verre réutilisable': ['Croûte de volaille aux champignons',
'Duo de carottes',
'Riz pilaf',
'Curry de pois chiches aux légumes maison',
'Riz pilaf',
'4,50 € HT/4,95 € TTC',
'+ prix de la Box 5,70 € TTC'],
'Burger maison au choix': ['Formule avec frites',
'Burger de boeuf BIO',
'Chicken burger',
'Végé burger'],
'Pizza maison au choix': ['Reine', '4 saisons'],
'Formule étudiante à 1€ tarif boursier / non boursier 3,30 €': ['Formule Be Fit',
'Sandwich, eau plate ou gazeuse, fruit ou yaourt']}},
'Learning Center': {'Déjeuner': {'Plat du jour': ['Burger / Burger végé'],
'Sandwichs': ['le Végéta',
'Le Campagnard',
"L'Indien",
'Le Netfish',
'Le poulet curry'],
'Pasta box': ['Pasta au saumon'],
'Plat du soir commande Crous&Go': ['Cuisse de poulet grillée ',
'(origine ou provenance France)',
'Pennes',
'Petits pois',
'OU',
'Bouchée edamame',
'Sauce Napolitaine',
'Pennes'],
'Salade': ["L'Alsacienne"]}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Cervelas orloff, poireaux à la crème, pommes de terre sautées'],
'Plat du jour': ['Bouchée à la reine, riz pilaf'],
'Végétarien': ['Cari réunionnais'],
'Extension': ['FERMÉ']}},
'Resto U De Colmar': {'Déjeuner': {'Menu du jour 3.30€ ou 1€': ['Cuisse de Poulet BBC',
'(Origine ou Provenance France)',
'Pennes',
'Petits Pois',
'OU',
'Bouchée Edamame/Carottes',
'Sauce Napolitaine',
'Pennes'],
'Viennoiseries HT': ['En Vente à partir de 8h30 :',
'Croissant Nature à 1,10 euros',
'Pain au Chocolat à 1,20 euros',
'Autre Viennoiserie de 1,10 à 1,40 euros'],
'Les grillades à la carte HT': ["Steak/frites ou légumes à 3,60 euros (l'assiette)",
'(Origine France)',
"Légumes/Féculents à 2,50 euros (l'assiette)",
'Frites à 2,50 euros (le cornet)',
"L'américain à 4,00 euros (le Sandwich)",
'(Origine France)'],
'La Pasta box HT': ['Sauce Bolognaise à 3,60 euros'],
'Les sandwichs HT': ['Le Campagnard',
'Le Végéta',
"L'Indien",
"L'Alsacienne"]}},
'Resto U De Lillberg': {'Déjeuner': {'Menu étudiant - Tarif social': ['Cuisse de poulet grillée ',
'(origine ou provenance France)',
'Pennes',
'Petits pois',
'OU',
'Pennes sauce crème jambon champignon',
'Emmental râpé',
'OU',
'Bouchée edamame',
'Sauce Napolitaine',
'Pennes'],
'Brasseur 4,70HT / 5.17TTC euros': ['Fricassée de porc au munster ',
'(origine ou provenance France)',
'Spaetzles',
'Carottes rondelles']}},
'Resto U De Liut Mulhouse': {'Déjeuner': {'Menu étudiant 3.30€ ou 1€': ['Cuisse de poulet grillée ',
'(origine ou provenance France)',
'Pennes',
'Petits pois',
'OU',
'Pennes sauce crème jambon champignon',
'Emmental râpé',
'OU',
'Bouchée edamame',
'Sauce Napolitaine',
'Pennes'],
'Sandwichs': ['Le Végéta',
'Le Campagnard',
"L'Indien",
'Le Netfish',
'Chaud: Burger / Burger végé'],
'Pasta Box': ['Pasta au saumon'],
'Salades': ["L'Alsacienne"]}},
'Resto U Esplanade': {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage :',
'Fricadelle de boeuf, sauce marchand de vin',
'Duo de carottes',
'Frites',
'Curry de pois chiches aux légumes maison',
'Riz pilaf',
'1er étage :',
'Croûte de volaille aux champignons',
'Duo de carottes',
'Riz pilaf',
'Torsades, sauce carbonara maison',
'Curry de pois chiches aux légumes maison',
'Riz pilaf'],
'Desserts 1er et 2ème étage': ['Crème vanille',
'Donut',
'Eclair au chocolat'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Croûte de volaille aux champignons',
'Duo de carottes',
'Riz pilaf',
'Curry de pois chiches aux légumes maison',
'Riz pilaf']},
'Dîner': {'Menus étudiants 2ème étage': ['Palette à la diable',
'Petits pois carottes',
'Pommes de terre rôties',
'Aiguillettes de blé, sauce rémoulade',
'Petits pois carottes',
'Pommes de terre rôties'],
'Desserts 2ème étage': ['Crème vanille',
'Donut',
'Eclair au chocolat']}},
'Resto U Gallia': {'Déjeuner': {'MENU ETUDIANT': ["Boulettes d'agneau à la printanière",
"Purée de pommes de terre à l'ancienne",
'Brocolis'],
'BRASSERIE': ['Couscous Royal',
'Pizza Parma',
'Tarte flambée'],
'VENTE A EMPORTER': ['Formule étudiante ',
'Parisien, eau, fruit',
'Game of cheese',
'Italien',
'Maidele',
'Pizza Parma',
'Tarte flambée',
'Américain Merguez'],
'MENU VEGETARIEN': ['Friand au fromage',
"Purée de pommes de terre à l'ancienne",
'Brocolis']},
'Dîner': {'MENU ETUDIANT': ["Tarte à l'oignons et au jambon ",
'Salade verte',
'Pommes rissolées'],
'MENU VEGETARIEN': ['Koshari'],
'ORIGINE ET PROVENANCE DE NOS VIANDES': ["Voir les affiches dans l'entrée"]}},
'Resto U Illkirch': {'Déjeuner': {'CAFETERIA': ['Petits déjeuners à partir de 7h45',
'Viennoiseries',
'Sandwichs',
'Snacking chaud',
'Desserts maison, pâtisseries américaines',
'Boissons chaudes et froides'],
'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées'],
'SALLE DES ETUDIANTS - PLAT VEGETARIEN': ['Tajine de pois chiches,abricots et amandes',
'Boulgour'],
'SALLE DES ETUDIANTS - MENU DU JOUR': ['Chili con carne',
'Riz'],
'SALLE DES ETUDIANTS - PATES': ['Spaghettis bolognaise'],
'SALLE DES ETUDIANTS - BARBECUE': ["Cuisse de canette à l'orange"],
'SALLE DES ETUDIANTS - DESSERTS': ['Fondant au chocolat',
'ou',
'Compote de pommes'],
'SALLE DES PERSONNELS - ENTREES': ['Salade à la mimolette',
'Ou',
'Salade italienne'],
'SALLE DES PERSONNELS - SUGGESTION DU JOUR': ['Cuisse de poulet à la tournaisienne',
'Choux de Bruxelles',
'Frites'],
'SALLE DES PERSONNELS - MENU DU JOUR': ['Chili con carne',
'Riz'],
'SALLE DES PERSONNELS - PLAT VEGETARIEN': ['Tajine de pois chiches,abricots et amandes',
'Boulgour'],
'SALLE DES PERSONNELS - DESSERTS': ['Tarte aux pommes,cannelle',
'ou',
'Fromage blanc à la rhubarbe']}}},
'mercredi 26 mars 2025': {'Cafeteria De La Fonderie': {'Déjeuner': {'menu étudiant tarif social': ['Émincé végétal à la Chinoise',
'Riz cantonais',
'OU',
'Samoussas aux légumes',
'Sauce aigre douce au curry ',
'Riz cantonais'],
'Sandwich': ['Le Maraicher',
'Le Parisien',
'Thon mayo',
"Le mystère de l'ouest"],
'Box de pâtes': ['Pasta champignons'],
'Salade': ['La Vérone']}},
'Cafeteria Le Pege': {'Déjeuner': {'Petit-déjeuner': ['Café & Viennoiseries',
'7h30 -10h30'],
'Plat du jour': ['Curry de pois chiches Bio & lentilles corail de Plobsheim aux petits légumes',
'Patate douce rôtie',
'Fallafels de Légumineuses'],
'Végétarien': ['Assiette Libanaise, Houmous, Fallafel, Bouchée végétale, quinoa épicée et crudités']}},
'Cafeteria Mini R': {'Déjeuner': {'Fermeture': ['Structure fermée du Lundi 24 Mars 2025 au Vendredi 28 Mars 2025']}},
'Cybercafe Ru Illberg': {'Déjeuner': {'Sandwichs': ['Le Maraicher',
'Le Parisien',
'Thon mayo',
"Le mystère de l'ouest",
'Chaud:Panini Bolognaise'],
'Pasta Box': ['Pasta champignons'],
'Salade': ['La Vérone']}},
'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Le 32': {'Déjeuner': {'Carte du jour au 32 - Plats': ['Moussaka végétarienne',
'Salade verte',
'Wok de légumes'],
'Entrées': ['Muffin féta et olives', 'Soupe de légumes'],
'Desserts': ['Tiramisu', 'Salade de fruits frais']}},
'Le Cristal Shop Ru Esplanade': {'Déjeuner': {'Plat à emporter Box en verre réutilisable': ['JOURNEE VERTE',
'Gratin de légumes',
'Polenta',
'Tajine aux abricots et pois chiches',
'Boulgour aux épices',
'4,50 € HT/4,95 € TTC',
'+ prix de la Box 5,70 € TTC'],
'Burger maison au choix': ['Formule avec frites',
'Le Bretzel burger',
'Végé burger'],
'Pizza maison au choix': ['4 fromages', 'Légumes du soleil'],
'Formule étudiante à 1€ tarif boursier / non boursier 3,30 €': ['Formule Be Fit',
'Sandwich, eau plate ou gazeuse, fruit ou yaourt']}},
'Learning Center': {'Déjeuner': {'Plat du jour': ['Tarte Irlandaise'],
'Sandwichs': ['Le Maraicher',
'Le Parisien',
'Thon mayo',
"Le Mystère de l'ouest",
'Le Dragon ball'],
'Pasta box': ['Pasta champignons'],
'Plat du soir commande Crous&Go': ['Émincé végétal à la Chinoise',
'Riz cantonais',
'OU',
'Samoussas aux légumes',
'Sauce aigre douce au curry ',
'Riz cantonais'],
'Salade': ['La Vérone']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Dahl crémeux de pois cassés'],
'Plat du jour': ['Chili sin carne, riz'],
'Végétarien': ['Fajitas de haricots rouges tex mex, salade verte'],
'Extension': ['FERMÉ']}},
'Resto U De Colmar': {'Déjeuner': {'Menu du jour 3.30€ ou 1€': ['Emincé Végétal à la Chinoise',
'Riz Cantonnais',
'OU',
'Samoussas Aux Légumes',
'Riz Cantonnais'],
'Viennoiseries HT': ['En Vente à partir de 8h30 :',
'Croissant Nature à 1,10 euros',
'Pain au Chocolat à 1,20 euros',
'Autre Viennoiserie de 1,10 à 1,40 euros'],
'Les grillades à la carte HT': ["Steak/frites ou légumes à 3,60 euros (l'assiette)",
'(Origine France)',
"Légumes/Féculents à 2,50 euros (l'assiette)",
'Frites à 2,50 euros (le cornet)',
"L'américain à 4,00 euros (le Sandwich)",
'(Origine France)'],
'La Pasta box HT': ['Sauce Champignons à 3,20 euros'],
'Les sandwichs HT': ['Le Parisien',
'Le Maraîcher',
'Le Thon Mayo',
"le Mystère de l'Ouest"]}},
'Resto U De Lillberg': {'Déjeuner': {'Menu étudiant - Tarif social': ['Émincé végétal à la Chinoise',
'Riz cantonais',
'OU',
'Samoussas aux légumes',
'Sauce aigre douce au curry ',
'Riz cantonais'],
'Brasseur 4,70HT / 5.17TTC euros': ['Burger au quinoa à la Provençale',
'Salade verte',
'Potatoes']}},
'Resto U De Liut Mulhouse': {'Déjeuner': {'Menu étudiant 3.30€ ou 1€': ['Émincé végétal à la Chinoise',
'Riz cantonais',
'OU',
'Samoussas aux légumes',
'Sauce aigre douce au curry ',
'Riz cantonais'],
'Sandwichs': ['Le Maraicher',
'Le Parisien',
'Thon mayo',
"Le mystère de l'ouest",
'Chaud:Panini Bolognaise'],
'Pasta Box': ['Pasta champignons'],
'Salades': ['La Vérone']}},
'Resto U Esplanade': {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['JOURNEE VERTE',
'2ème étage :',
'Chili aux lentilles',
'Riz pilaf',
'Tajine aux abricots et pois chiches',
'Boulgour aux épices',
'1er étage :',
'Gratin de légumes',
'Polenta',
'Tajine aux abricots et pois chiches',
'Boulgour aux épices'],
'Desserts 1er et 2ème étage': ['Gâteau quinoa pommes',
'Fondant au citron',
'Cocktail de fruits'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Gratin de légumes',
'Polenta',
'Tajine aux abricots et pois chiches',
'Boulgour aux épices']},
'Dîner': {'Menus étudiants 2ème étage': ['Boulettes de pois chiches BIO, raïta de concombre BIO',
'Haricots verts BIO',
'Boulgour BIO',
'Torsades aux courgettes et pois BIO'],
'Desserts 2ème étage': ['Tarte aux pommes BIO',
'Flan au caramel BIO']}},
'Resto U Gallia': {'Déjeuner': {'MENU ETUDIANT': ['100% BIO',
'œufs brouillés à la Portugaise',
'Blé',
'Carottes'],
'BRASSERIE': ['Risotto de Petit Épeautre au butternut ',
'Pizza forestière',
'Tarte flambée ail et ciboulette'],
'VENTE A EMPORTER': ['Formule étudiante ',
'Parisien, eau, fruit',
'Game of cheese',
'Italien',
'Maidele',
'Pizza forestière',
'Tarte flambée ail et ciboulette',
'Box de pâtes'],
'MENU VEGETARIEN': ['Emincé végétal à la Chinoise']},
'Dîner': {'MENU ETUDIANT': ['Tomates farcies',
'Semoule',
'Petits pois'],
'MENU VEGETARIEN': ['Couscous végétarien aux fallafels'],
'ORIGINE ET PROVENANCE DE NOS VIANDES': ["Voir les affiches dans l'entrée"]}},
'Resto U Illkirch': {'Déjeuner': {'CAFETERIA': ['Petits déjeuners à partir de 7h45',
'Viennoiseries',
'Sandwichs',
'Snacking chaud',
'Desserts maison, pâtisseries américaines',
'Boissons chaudes et froides'],
'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées'],
'SALLE DES ETUDIANTS - PLAT VEGETARIEN': ['Dhal crémeux de pois cassés',
'Pâtes cœur de blé'],
'SALLE DES ETUDIANTS - MENU DU JOUR': ['Chili aux lentilles et haricots rouges',
'Céréales gourmandes'],
'SALLE DES ETUDIANTS - PATES': ['Lasagnes à la provençale'],
'SALLE DES ETUDIANTS - BARBECUE': ['Galette de quinoa à la provençale',
'Sauce au miel'],
'SALLE DES ETUDIANTS - DESSERTS': ['Gâteau de quinoa aux pommes',
'Ou',
'Fromage blanc aux myrtilles'],
'SALLE DES PERSONNELS - ENTREES': ['Salade grecque',
'ou',
'Champignons à la grecque'],
'SALLE DES PERSONNELS - SUGGESTION DU JOUR': ['Mafé épicé à la sauce cacahuètes',
'Semoule'],
'SALLE DES PERSONNELS - MENU DU JOUR': ['Lasagnes à la provençale'],
'SALLE DES PERSONNELS - PLAT VEGETARIEN': ['Chili aux lentilles et haricots rouges',
'Céréales gourmandes'],
'SALLE DES PERSONNELS - DESSERTS': ['Tarte aux fruits de bois',
'ou',
'Mousse au citron']}}},
'jeudi 27 mars 2025': {'Cafeteria De La Fonderie': {'Déjeuner': {'menu étudiant tarif social': ['Chausson à la Bolognaise',
'Frites',
'Haricots verts',
'OU',
'Msir wot',
'Frites'],
'Sandwich': ['Le Végéta',
'Le Campagnard',
'Le Game of cheese',
'Wrap chicken roll'],
'Box de pâtes': ['Pasta champignons'],
'Salade': ['La New César']}},
'Cafeteria Le Pege': {'Déjeuner': {'Petit-déjeuner': ['Café & Viennoiseries',
'7h30 -10h30'],
'Plat du jour': ['Sauté de porc à l’aigre douce ',
'Légumes à l’asiatique',
'Riz cantonais'],
'Végétarien': ['Samossas de légumes',
'Légumes à l’asiatique',
'Riz cantonais']}},
'Cafeteria Mini R': {'Déjeuner': {'Fermeture': ['Structure fermée du Lundi 24 Mars 2025 au Vendredi 28 Mars 2025']}},
'Cybercafe Ru Illberg': {'Déjeuner': {'Sandwichs': ['Le Végéta',
'Le Campagnard',
'Le Game of cheese',
'Wrap chicken roll',
'Chaud: Burger / Burger végé'],
'Pasta Box': ['Pasta champignons'],
'Salade': ['La New César']}},
'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Le 32': {'Déjeuner': {'Carte du jour au 32 - Plats': ['Paleron de boeuf',
'Risotto vert',
'Garnitures',
'Pommes de terre charlottes au four',
'Poêlée de carottes et céleri'],
'Entrées': ['Wrap végétal', 'Soupe de légumes'],
'Desserts': ['Dôme crème brûlée', 'Salade de fruits frais']}},
'Le Cristal Shop Ru Esplanade': {'Déjeuner': {'Plat à emporter Box en verre réutilisable': ['Pilons de poulet à la citronnelle',
'Nouilles chinoises',
'Wok de légumes',
'Samoussa aux légumes, sauce au miel',
'Nouilles chinoises',
'Wok de légumes',
'4,50 € HT/4,95 € TTC',
'+ prix de la Box 5,70 € TTC'],
'Burger maison au choix': ['Formule avec frites',
'Burger de boeuf BIO',
'Chicken burger',
'Végé burger'],
'Pizza maison au choix': ['Poulet', 'Mozzarella'],
'Formule étudiante à 1€ tarif boursier / non boursier 3,30 €': ['Formule Be Fit',
'Sandwich, eau plate ou gazeuse, fruit ou yaourt']}},
'Learning Center': {'Déjeuner': {'Plat du jour': ['Burger / Burger végé'],
'Sandwichs': ['Le Végéta',
'Le Campagnard',
'Le Game of cheese',
'Wrap chicken roll',
"L'Auvergnat"],
'Pasta box': ['Pasta champignons'],
'Plat du soir commande Crous&Go': ['Chausson à la Bolognaise',
'Frites',
'Haricots verts',
'OU',
'Msir wot',
'Frites'],
'Salade': ['La New César']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['chaîne perso: Gombo traditionnel louisianais et son riz au raisin',
'chaîne étudiants: Rougail saucisse et riz'],
'Plat du jour': ['Poisson à la bordelaise et légumes vapeur'],
'Végétarien': ['Curry de patates douces'],
'Extension': ['Tacos au poulet']}},
'Resto U De Colmar': {'Déjeuner': {'Menu du jour 3.30€ ou 1€': ['Chausson à la Bolognaise de Dinde',
'Frites',
'Haricots Verts',
'OU',
'Misir Wot(Mijoté Ethiopien)',
'Frites'],
'Viennoiseries HT': ['En Vente à partir de 8h30 :',
'Croissant Nature à 1,10 euros',
'Pain au Chocolat à 1,20 euros',
'Autre Viennoiserie de 1,10 à 1,40 euros'],
'Les grillades à la carte HT': ["Steak/frites ou légumes à 3,60 euros (l'assiette)",
'(Origine France)',
"Légumes/Féculents à 2,50 euros (l'assiette)",
'Frites à 2,50 euros (le cornet)',
"L'américain à 4,00 euros (le Sandwich)",
'(Origine France)'],
'La Pasta box HT': ['Sauce Thon à la Tomate à 3,20 euros'],
'Les sandwichs HT': ['Le Campagnard',
'Le Végéta',
'Le Game Of Cheese',
'Le Wrap : Le Chicke N Roll']}},
'Resto U De Lillberg': {'Déjeuner': {'Menu étudiant - Tarif social': ['Chausson à la Bolognaise',
'Frites',
'Haricots verts',
'OU',
'Msir wot',
'Frites'],
'Brasseur 4,70HT / 5.17TTC euros': ['Couscous ',
'(Boulettes, merguez, pilon de poulet)']}},
'Resto U De Liut Mulhouse': {'Déjeuner': {'Menu étudiant 3.30€ ou 1€': ['Chausson à la Bolognaise',
'Frites',
'Haricots verts',
'OU',
'Msir wot',
'Frites'],
'Sandwichs': ['Le Végéta',
'Le Campagnard',
'Le Game of cheese',
'Wrap chicken roll',
'Chaud: Burger / Burger végé'],
'Pasta Box': ['Pasta champignons'],
'Salades': ['La New César']}},
'Resto U Esplanade': {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage:',
'Poutine',
'Frites',
'Samoussa aux légumes, sauce au miel',
'Nouilles chinoises',
'Wok de légumes',
'1er étage :',
'Pilons de poulet à la citronnelle',
'Nouilles chinoises',
'Wok de légumes',
'Torsades, sauce aux 3 fromages maison',
'Samoussa aux légumes, sauce au miel',
'Nouilles chinoises',
'Wok de légumes'],
'Desserts 1er et 2ème étage': ['Millefeuille vanille',
'Tarte aux pommes',
'Fromage blanc aux griottes'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Pilons de poulet à la citronnelle',
'Nouilles chinoises',
'Wok de légumes',
'Samoussa aux légumes, sauce au miel',
'Nouilles chinoises',
'Wok de légumes']},
'Dîner': {'Menus étudiants 2ème étage': ['Chili con carné maison',
'Fajitas de haricots rouges tex mex maison',
'Poêlée mexicaine'],
'Desserts 2ème étage': ['Millefeuille vanille',
'Tarte aux pommes',
'Fromage blanc aux griottes']}},
'Resto U Gallia': {'Déjeuner': {'MENU ETUDIANT': ['Émince de porc au Pistou'],
'BRASSERIE': ["Pizza Napolitaine 'MAISON'",
'Margarita ou Mortazza'],
'VENTE A EMPORTER': ['Formule étudiante ',
'Parisien, eau, fruit',
'Game of cheese',
'Italien',
'Maidele',
'Pizza Margarita',
'Tarte flambée',
'Hamburger / frites'],
'MENU VEGETARIEN': ["Menu 100% local 'Gaines d'Alsace'",
'Chili de lentilles ',
'Pilaf de quinoa']},
'Dîner': {'MENU ETUDIANT': ['Escalope Viennoise',
'Sauce tomate basilic',
'Julienne de légumes',
'Pâtes torsade'],
'MENU VEGETARIEN': ['Pâtes torsade', 'Sauce aux 3 fromages'],
'ORIGINE ET PROVENANCE DE NOS VIANDES': ["Voir affiche dans l'entrée"]}},
'Resto U Illkirch': {'Déjeuner': {'CAFETERIA': ['Petits déjeuners à partir de 7h45',
'Viennoiseries',
'Sandwichs',
'Snacking chaud',
'Desserts maison, pâtisseries américaines',
'Boissons chaudes et froides'],
'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées'],
'SALLE DES ETUDIANTS - PLAT VEGETARIEN': ['Cari de carottes aux deux lentilles',
'Quinoa'],
'SALLE DES ETUDIANTS - MENU DU JOUR': ['Cordon bleu/viennoise',
'Duo de haricots',
'Purée'],
'SALLE DES ETUDIANTS - PATES': ['Gratin de coudes à la savoyarde'],
'SALLE DES ETUDIANTS - BARBECUE': ['Chipolatas',
'ou',
'Fricadelles sauce bordelaise'],
'SALLE DES ETUDIANTS - DESSERTS': ['Crème dessert vanille',
'ou',
'Fondant citron et pois chiches'],
'SALLE DES PERSONNELS - ENTREES': ["Salade d'avocat au thon",
'ou',
'Salade de cervelas-gruyère'],
'SALLE DES PERSONNELS - SUGGESTION DU JOUR': ['Sauté de poulet à la crème de tomates confites',
'Courgettes poêlées',
'Röstis'],
'SALLE DES PERSONNELS - MENU DU JOUR': ['Gratin de coudes à la savoyarde'],
'SALLE DES PERSONNELS - PLAT VEGETARIEN': ['Cari de carottes aux deux lentilles',
'Quinoa'],
'SALLE DES PERSONNELS - DESSERTS': ['Tarte au citron meringuée',
'ou',
'Crêpe miel amandes']}}},
'vendredi 28 mars 2025': {'Cafeteria De La Fonderie': {'Déjeuner': {'menu étudiant tarif social': ['Filet de colin pané',
'Tagliatelles',
'Courgettes à la Provençale',
'OU',
'Dahl crémeux de lentilles blondes',
'Tagliatelles'],
'Sandwich': ['Le Maraicher',
'Le Parisien',
"L'Italien",
'Le Maidele'],
'Box de pâtes': ['Pasta pesto'],
'Salade': ['La Louisiana']}},
'Cafeteria Le Pege': {'Déjeuner': {'Petit-déjeuner': ['Café & Viennoiseries',
'7h30 -10h30'],
'Plat du jour': ['Limande meunière ',
'Duo de carottes & panais',
'Frites',
'ou',
'Petits salés aux lentilles bio de Plobsheim',
'Saucisse fumée'],
'Végétarien': ['Galette potiron boulgour',
'Duo de carottes & panais',
'Frites']}},
'Cafeteria Mini R': {'Déjeuner': {'Fermeture': ['Structure fermée du Lundi 24 Mars 2025 au Vendredi 28 Mars 2025']}},
'Cybercafe Ru Illberg': {'Déjeuner': {'Sandwichs': ['Le Maraicher',
'Le Parisien',
"L'Italien",
'Le Maidele',
'Chaud: Panini Le Vénézia'],
'Pasta Box': ['Pasta pesto'],
'Salade': ['La Louisiana']}},
'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Le 32': {'Déjeuner': {'Carte du jour au 32 - Plats': ['Filet de sandre, beurre blanc',
'Polenta au fromage et légumes',
'Garnitures',
'Pépinettes aux herbes',
'Epinards à la crème'],
'Entrées': ['Brick au chèvre, miel et romarin',
'Soupe de légumes'],
'Desserts': ['Charlottine aux fruits rouges',
'Salade de fruits frais']}},
'Le Cristal Shop Ru Esplanade': {'Déjeuner': {'Plat à emporter Box en verre réutilisable': ['Echine de porc, sauce à la bière',
'Haricots verts',
'Purée de pommes de terre',
'Quiche aux pommes de terre et épinards',
'Haricots verts',
'Torsades',
'4,50 € HT/4,95 € TTC',
'+ prix de la Box 5,70 € TTC'],
'Burger maison au choix': ['Formule avec frites',
'Burger de boeuf BIO',
'Chicken burger',
'Végé burger'],
'Pizza maison au choix': ['Thon', 'Chèvre'],
'Formule étudiante à 1€ tarif boursier / non boursier 3,30 €': ['Formule Be Fit',
'Sandwich, eau plate ou gazeuse, fruit ou yaourt']}},
'Learning Center': {'Déjeuner': {'Plat du jour': ['Panini Le Vénézia'],
'Sandwichs': ['Le Maraicher',
'Le Parisien',
"L'Italien",
'Le Maidele',
'Le dolce vita'],
'Pasta box': ['Pasta pesto'],
'Plat du soir commande Crous&Go': ['Filet de colin pané',
'Tagliatelles',
'Courgettes à la Provençale',
'OU',
'Dahl crémeux de lentilles blondes',
'Tagliatelles'],
'Salade': ['La Louisiana']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Fricadelle de bœuf, sauce marchand de vin, chou romanesco, frites'],
'Plat du jour': ['chaîne perso: Tagliatelles aux gésiers confits',
'chaîne étudiants: Menu du jour'],
'Végétarien': ['Boulettes de blé thaï, risotto aux légumes'],
'Extension': ['Lasagnes bolognaise']}},
'Resto U De Colmar': {'Déjeuner': {'Menu du jour 3.30€ ou 1€': ['Filet de Colin Pané',
'Tagliatelles',
'Courgettes à la Provençale',
'OU',
'Dahl Crémeux de Pois Cassés',
'Tagliatelles'],
'Viennoiseries HT': ['En Vente à partir de 8h30 :',
'Croissant Nature à 1,10 euros',
'Pain au Chocolat à 1,20 euros',
'Autre Viennoiserie de 1,10 à 1,40 euros'],
'Les grillades à la carte HT': ["Steak/frites ou légumes à 3,60 euros (l'assiette)",
'(Origine France)',
"Légumes/Féculents à 2,50 euros (l'assiette)",
'Frites à 2,50 euros (le cornet)',
"L'américain à 4,00 euros (le Sandwich)",
'(Origine France)'],
'La Pasta box HT': ['Sauce Pesto à 3,20 euros'],
'Les sandwichs HT': ['Le Parisien',
'Le Maraîcher',
"L'Italien",
'La Mauricette : Le Maidele',
'Le Panini : Le Venezia']}},
'Resto U De Lillberg': {'Déjeuner': {'Menu étudiant - Tarif social': ['Filet de colin pané',
'Tagliatelles',
'Courgettes à la Provençale',
'OU',
'Spaghettis à la Bolognaise ',
'(haché origine ou provenance France)',
'OU',
'Dahl crémeux de lentilles blondes',
'Tagliatelles'],
'Brasseur 4,70HT / 5.17TTC euros': ['Lasagnes à la Bolognaise ',
'(haché origine ou provenance France)',
'Salade verte']}},
'Resto U De Liut Mulhouse': {'Déjeuner': {'Menu étudiant 3.30€ ou 1€': ['Filet de colin pané',
'Tagliatelles',
'Courgettes à la Provençale',
'OU',
'Spaghettis à la Bolognaise ',
'(haché origine ou provenance France)',
'OU',
'Dahl crémeux de lentilles blondes',
'Tagliatelles'],
'Sandwichs': ['Le Maraicher',
'Le Parisien',
"L'Italien",
'Le Maidele',
'Chaud: Panini Le Vénézia'],
'Pasta Box': ['Pasta pesto'],
'Salades': ['La Louisiana']}},
'Resto U Esplanade': {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage :',
'Merguez, sauce tomate',
'Zaalouk de chou-fleur',
'Frites',
'Quiche aux pommes de terre et épinards',
'Haricots verts',
'Torsades',
'1er étage :',
'Echine de porc, sauce à la bière',
'Haricots verts',
'Purée de pommes de terre',
'Torsades, sauce aux 2 saumon maison',
'Quiche aux pommes de terre et épinards',
'Haricots verts',
'Torsades'],
'Desserts 1er et 2ème étage': ['Beignet aux framboises',
'Eclair au café',
'Tiramisu'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Echine de porc, sauce à la bière',
'Haricots verts',
'Purée de pommes de terre',
'Quiche aux pommes de terre et épinards',
'Haricots verts',
'Torsades']},
'Dîner': {'Menus étudiants 2ème étage': ['Cordon bleu, sauce tomate',
'Carottes au céleri branche',
'Gratin dauphinois'],
'Desserts 2ème étage': ['Beignet aux framboises',
'Eclair au café',
'Tiramisu']}},
'Resto U Gallia': {'Déjeuner': {'MENU ETUDIANT': ['Grignottes de poulet',
'Sauce aux herbes',
'Poêlée Printanière'],
'BRASSERIE': ["Tourte au bœuf 'MAISON' ",
'Salade Auvergnate',
'Pizza',
'Tarte flambée'],
'VENTE A EMPORTER': ['Formule étudiante ',
'Parisien, eau, fruit',
'Game of cheese',
'Italien',
'Maidele',
'Pizza',
'Tarte flambée',
'Hot-dog'],
'MENU VEGETARIEN': ['Galette au sarrasin et lentilles',
'Poêlée Printanière']},
'Dîner': {'MENU ETUDIANT': ['Palette à la diable',
'Riz pilaf',
'Légumes'],
'MENU VEGETARIEN': ['Galette végétarienne'],
'ORIGINE ET PROVENANCE DE NOS VIANDES': ["Voir affiche dans l'entrée"]}},
'Resto U Illkirch': {'Déjeuner': {'CAFETERIA': ['Petits déjeuners à partir de 7h45',
'Viennoiseries',
'Sandwichs',
'Snacking chaud',
'Desserts maison, pâtisseries américaines',
'Boissons chaudes et froides'],
'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées'],
'SALLE DES ETUDIANTS - PLAT VEGETARIEN': ['Curry de boulettes aux légumes',
'Petit épeautre'],
'SALLE DES ETUDIANTS - MENU DU JOUR': ['Émincé de porc aux cacahuètes',
'Riz cantonais'],
'SALLE DES ETUDIANTS - PATES': ['Spaetzle à la choucroute et aux lardons'],
'SALLE DES ETUDIANTS - BARBECUE': ['Galopin de veau sauce champignons'],
'SALLE DES ETUDIANTS - DESSERTS': ['Pêche sur lit de crème pâtissière'],
'SALLE DES PERSONNELS - ENTREES': ['Pâté en croute-crudités',
'ou',
'Oeuf mollet aux lardons'],
'SALLE DES PERSONNELS - SUGGESTION DU JOUR': ['Fish and chips sauce rémoulade',
"Carottes à l'oriental",
'Pommes de terre au four'],
'SALLE DES PERSONNELS - MENU DU JOUR': ['Émincé de porc aux cacahuètes',
'Riz cantonais'],
'SALLE DES PERSONNELS - PLAT VEGETARIEN': ['Curry de boulettes aux légumes',
'Petit épeautre'],
'SALLE DES PERSONNELS - DESSERTS': ["Tarte à l'ananas",
'ou',
'Mousse cappucino']}}},
'lundi 31 mars 2025': {'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Escalope viennoise, sauce tomate, choux fleurs, pommes rissolées'],
'Plat du jour': ['Crêpe au jambon et fromage, salade champêtre'],
'Végétarien': ['Pâtes aux fromages'],
'Extension': ['Pasta party']}},
'Resto U Illkirch': {'Déjeuner': {'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées']}}},
'mercredi 2 avril 2025': {'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Galette orge chèvre miel, gratin de légumes'],
'Plat du jour': ['Croissant au fromage, salade auvergnate'],
'Végétarien': ['Kefta coriandre menthe, sauce tzatziki, semoule'],
'Extension': ['FERMÉ']}},
'Resto U Illkirch': {'Déjeuner': {'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées']}}},
'jeudi 3 avril 2025': {'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Currywurst, petits pois à la française, frites'],
'Plat du jour': ['Cari de poisson au combava, riz au safran'],
'Végétarien': ['Pita à la galette de soja tomate basilic, sauce aux herbes, salade composée'],
'Extension': ['Nuggets de poulet, brocolis, gratin de pommes de terre']}},
'Resto U Illkirch': {'Déjeuner': {'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées']}}},
'vendredi 4 avril 2025': {'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['chaîne perso: Bacon burger, salade verte, potatoes',
'chaîne étudiants: Grillade du jour'],
'Plat du jour': ['Quiche lorraine, légumes'],
'Végétarien': ['Boulettes de pois chiche, sauce au fromage blanc, dahl de lentilles aux épices'],
'Extension': ['Raviolis à la sauce tomate']}},
'Resto U Illkirch': {'Déjeuner': {'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées']}}},
'mardi 1 avril 2025': {'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['chaîne perso: Filet de loup, sauce à la vanille, haricots verts, pomme duchesse',
'chaîne étudiants: Filet de colin , sauce à la vanille, haricots verts, pomme duchesse'],
'Plat du jour': ['Emincé de dinde à la crème, riz aux petits légumes'],
'Végétarien': ['Tchoutchouka aux œufs, boulgour'],
'Extension': ['Doner à garnir']}},
'Resto U Illkirch': {'Déjeuner': {'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées']}}}})
all_dates_all_menus['vendredi 28 mars 2025']['Resto U Esplanade']['Déjeuner']
{'Menus étudiants 1er et 2ème étage': ['2ème étage :',
'Merguez, sauce tomate',
'Zaalouk de chou-fleur',
'Frites',
'Quiche aux pommes de terre et épinards',
'Haricots verts',
'Torsades',
'1er étage :',
'Echine de porc, sauce à la bière',
'Haricots verts',
'Purée de pommes de terre',
'Torsades, sauce aux 2 saumon maison',
'Quiche aux pommes de terre et épinards',
'Haricots verts',
'Torsades'],
'Desserts 1er et 2ème étage': ['Beignet aux framboises',
'Eclair au café',
'Tiramisu'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Echine de porc, sauce à la bière',
'Haricots verts',
'Purée de pommes de terre',
'Quiche aux pommes de terre et épinards',
'Haricots verts',
'Torsades']}
def show_item(list_):
i = 1
for item in list_:
print('%s : %s'%(str(i),item))
i+=1
input()quit = 'N'
change_rest = 'Y'
while quit=='N':
dates = list(all_dates_all_menus.keys())
show_item(dates)
date_choosed = int(input('Select the date (type the number aside)'))
restaurants = list(all_dates_all_menus[dates[date_choosed-1]].keys())
while change_rest == 'Y':
print('---------------------------\n\n')
show_item(restaurants)
rest_choosed = int(input('Select the restaurant (type the number aside)'))
meal_keys = list(all_dates_all_menus[dates[date_choosed-1]][restaurants[rest_choosed-1]].keys())
show_item(meal_keys)
meal_choosed = int(input('Select the meal (type the number aside)'))
menu = all_dates_all_menus[dates[date_choosed-1]][restaurants[rest_choosed-1]][meal_keys[meal_choosed-1]]
for meal in menu:
print('''%s :\n\t\t%s'''%(meal,
' \n\t\t'.join(menu[meal])))
change_rest = input('Do you want to select another restaurant ? (Y/N)')
quit = input('Do you want to quit ? (Y/N)')
if quit == 'N':
change_rest = 'Y'
1 : lundi 24 mars 2025 2 : mardi 25 mars 2025 3 : mercredi 26 mars 2025 4 : jeudi 27 mars 2025 5 : vendredi 28 mars 2025 6 : lundi 31 mars 2025 7 : mercredi 2 avril 2025 8 : jeudi 3 avril 2025 9 : vendredi 4 avril 2025 10 : mardi 1 avril 2025 Select the date (type the number aside)1 --------------------------- 1 : Cafeteria De La Fonderie 2 : Cafeteria Le Pege 3 : Cafeteria Mini R 4 : Cybercafe Ru Illberg 5 : Kiosque Ru Esplanade 6 : Lannexe 7 : Le 32 8 : Le Cristal Shop Ru Esplanade 9 : Learning Center 10 : Resto U Cronenbourg 11 : Resto U De Colmar 12 : Resto U De Lillberg 13 : Resto U De Liut Mulhouse 14 : Resto U Esplanade 15 : Resto U Gallia 16 : Resto U Illkirch 17 : Resto U Paul Appell Select the restaurant (type the number aside)2 1 : Déjeuner Select the meal (type the number aside)1 Petit-déjeuner : Café & Viennoiseries 7h30 -10h30 Plat du jour : Émincé de dinde à l’Indienne Brunoise de légumes Quinoa de Plobsheim ou frites Végétarien : Biryani & bouchées végétales Brunoise de légumes Quinoa de Plobsheim ou frites Do you want to select another restaurant ? (Y/N)N Do you want to quit ? (Y/N)Y
# To scrap
from bs4 import BeautifulSoup
import urllib3
# To handle text manipulation
import re
# to handle time
import time
# to use defaultdict object
from collections import defaultdict
# To have a nice graphical bar that shows where we are in a process
import tqdm
def get_page(urlpage):
"""
Return the html of a given webpage as a string
"""
# Get page in html
time.sleep(7 + random.uniform(0,8))
res = requests.get(urlpage, headers = user_agent)
soup = BeautifulSoup(res.text, 'html.parser')
return str(soup)
def get_all_links():
"""
Get all restaurants links and create a dict of link with ru_names as keys
"""
# Webpage from which we extract all links
urlpage = 'https://www.crous-strasbourg.fr/se-restaurer/ou-manger/'
# Get html text from the page
soup_ = get_page(urlpage)
# Extract each link on the webpage
links = re.findall('href="(.*?)">',soup_)
# Create an empty dict
names_links = {}
# Iterate over each link
for link in links:
# Check if the "restaurant" is in the url
if '/restaurant/' in link:
# Extract the nauner']me of the restaurant
name = re.findall('restaurant/(.*)/',link)[0]
name = re.sub('-',' ',name)
name = re.sub(' 2','',name)
name = name.title()
# Update the dict
names_links.update({name : link})
return names_links
links = get_all_links()
links
{'Cafeteria De La Fac De Droit': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-de-la-fac-de-droit-2/',
'Cafeteria De La Fonderie': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-de-la-fonderie-2/',
'Cafeteria Illkirch': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-illkirch-2/',
'Cafeteria La Misha': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-la-misha-2/',
'Cafeteria Le Cardo': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-le-cardo-2/',
'Cafeteria Le Patio': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-le-patio-2/',
'Cafeteria Le Pege': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-le-pege-2/',
'Cafeteria Mini R': 'https://www.crous-strasbourg.fr/restaurant/cafeteria-mini-r-2/',
'Cybercafe Ru Illberg': 'https://www.crous-strasbourg.fr/restaurant/cybercafe-ru-illberg-2/',
'Fec': 'https://www.crous-strasbourg.fr/restaurant/fec/',
'Kiosque Ru Esplanade': 'https://www.crous-strasbourg.fr/restaurant/kiosque-ru-esplanade/',
'Lannexe': 'https://www.crous-strasbourg.fr/restaurant/lannexe-2/',
'Le 32': 'https://www.crous-strasbourg.fr/restaurant/le-32-2/',
'Le Cristal Shop Ru Esplanade': 'https://www.crous-strasbourg.fr/restaurant/le-cristal-shop-ru-esplanade-2/',
'Le Stift': 'https://www.crous-strasbourg.fr/restaurant/le-stift/',
'Learning Center': 'https://www.crous-strasbourg.fr/restaurant/learning-center-2/',
'Ort Laure Weil': 'https://www.crous-strasbourg.fr/restaurant/ort-laure-weil/',
'Restaurant Du Centre Hospitalier Derstein': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-centre-hospitalier-derstein/',
'Restaurant Du Centre Hospitalier Sainte Catherine': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-centre-hospitalier-sainte-catherine/',
'Restaurant Du Lycee Blaise Pascal': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-blaise-pascal/',
'Restaurant Du Lycee Dr Eugene Koeberle': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-dr-eugene-koeberle/',
'Restaurant Du Lycee Jean Mermoz': 'https://www.crous-strasbourg.fr/restaurant/restaurant-du-lycee-jean-mermoz/',
'Resto U Cronenbourg': 'https://www.crous-strasbourg.fr/restaurant/resto-u-cronenbourg-2/',
'Resto U De Colmar': 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-colmar-2/',
'Resto U De Lillberg': 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-lillberg-2/',
'Resto U De Liut Mulhouse': 'https://www.crous-strasbourg.fr/restaurant/resto-u-de-liut-mulhouse-2/',
'Resto U Esplanade': 'https://www.crous-strasbourg.fr/restaurant/resto-u-esplanade-2/',
'Resto U Gallia': 'https://www.crous-strasbourg.fr/restaurant/resto-u-gallia-2/',
'Resto U Illkirch': 'https://www.crous-strasbourg.fr/restaurant/resto-u-illkirch-2/',
'Resto U Paul Appell': 'https://www.crous-strasbourg.fr/restaurant/resto-u-paul-appell/'}
def get_details(meal_foodie):
"""
Get meal content and pole name
"""
# Separate name and food
pole, foodie = meal_foodie.split('<ul>')
# Extract meals keeping everything between <li> and </li>
details = re.findall('<li>(.*?)</li>',
foodie)
# Clean name
pole = re.search('<li>(.+)',pole).group(1)
return pole, details
def get_pole_menu(meal_foodies):
"""
Iterate over each pole and store the information about the meal
"""
pole_menu = dict()
# Iterate over each possble choice
for meal_foodie in meal_foodies:
pole, details = get_details(meal_foodie)
clean_details = [detail for detail in details if detail != '-']
# Update the dictionary
if 'Origine' not in pole:
pole_menu.update({pole:clean_details})
return pole_menu
def clean_meals(content):
"""
Separate lunch and dinner, remove first element as it does not contains information about food
"""
meals = str(content).split('<div class="meal">')
meals = meals[1:]
return meals
def get_date(content):
"""
Get date
"""
date = re.findall('<time class="menu_date_title">Menu du (.*?)</time>',str(content))[0]
return date
def get_meal_type(meal):
"""
Lunch or dinner?
"""
meal_type = re.findall('<div class="meal_title">(.*?)</div>',meal)[0]
return meal_type
def get_all_meals_for_given_date(content):
"""
Put all the functions together, return date and all meal for a given restaurant at a gevien date
"""
date = get_date(content)
meals = clean_meals(content)
all_meals = dict()
# Iterate over each meal
for meal in meals:
meal_foodies = meal.split('</ul></li>')[:-1]
meal_type = get_meal_type(meal)
pole_menu = get_pole_menu(meal_foodies)
# Store the resulte
all_meals.update({meal_type:pole_menu})
return date ,all_meals
all_dates_all_menus = defaultdict(dict)
for name in tqdm.tqdm(links):
# Get html text from the link
soup = get_page(links[name])
# Return elements that matched the html class in a list
contents = re.findall('<div class="menu">.*?\n</div>\n</div>',str(soup), re.DOTALL)
for content in contents:
date ,all_meals = get_all_meals_for_given_date(content)
all_dates_all_menus[date].update({name:all_meals})
all_dates_all_menus
100%|██████████| 30/30 [10:05<00:00, 20.17s/it]
defaultdict(dict,
{'lundi 24 mars 2025': {'Cafeteria De La Fonderie': {'Déjeuner': {'menu étudiant tarif social': ['Chili con carne/riz pilaf',
'(Haché origine ou provenance France)',
'OU',
'Cari de carottes lentilles et quinoa'],
'Sandwich': ['Le Maraicher',
'Le Parisien',
'Le Berger',
'Bagnat Manon',
'Chaud: Bruschettas margarita'],
'Box de pâtes': ['Pasta au saumon'],
'Salade': ['Végé bowl']}},
'Cafeteria Le Pege': {'Déjeuner': {'Petit-déjeuner': ['Café & Viennoiseries',
'7h30 -10h30'],
'Plat du jour': ['Émincé de dinde à l’Indienne ',
'Brunoise de légumes',
'Quinoa de Plobsheim ou frites'],
'Végétarien': ['Biryani & bouchées végétales',
'Brunoise de légumes',
'Quinoa de Plobsheim ou frites']}},
'Cafeteria Mini R': {'Déjeuner': {'Fermeture': ['Structure fermée du Lundi 24 Mars 2025 au Vendredi 28 Mars 2025']}},
'Cybercafe Ru Illberg': {'Déjeuner': {'Sandwichs': ['Le Végéta',
'Le Parisien',
"L'Indien",
'Le Netfish',
'Chaud: Baguettine flambée'],
'Pasta Box': ['Sauce thon tomate'],
'Salade': ['La Louisiana']}},
'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Lannexe': {'Déjeuner': {"L'Annexe": ['PASTA PARTY',
'Poivrons & tomates',
'OU',
'Thon']}},
'Le 32': {'Déjeuner': {'Carte du jour au 32 - Plats': ['Suprême de volaille',
'Boulgour',
'Poêlée de carottes et poireaux à la crème',
'Lasagnes végétariennes',
'Salade verte'],
'Entrées': ['Brick chèvre et miel', 'Soupe de légumes'],
'Desserts': ['Dôme chocolat et mandarine',
'Salade de fruits frais']}},
'Le Cristal Shop Ru Esplanade': {'Déjeuner': {'Plat à emporter Box en verre réutilisable': ['Poisson aux amandes, sauce tomate maison',
'Petits pois',
'Blé safrané',
'Galette de quinoa provençale, sauce tomate maison',
'Petits pois',
'Blé safrané',
'4,50 € HT/4,95 € TTC',
'+ prix de la Box 5,70 € TTC'],
'Burger maison au choix': ['Formule avec frites',
'Burger de boeuf BIO',
'Chicken burger',
'Végé burger'],
'Pizza maison au choix': ['Grecque', 'Tartiflette'],
'Formule étudiante à 1€ tarif boursier / non boursier 3,30 €': ['Formule Be Fit',
'Sandwich, eau plate ou gazeuse, fruit ou yaourt']}},
'Learning Center': {'Déjeuner': {'Plat du jour': ['Bruschettas marguarita'],
'Sandwichs': ['Le Maraicher',
'Le Parisien',
'Le Berger',
'Bagnat Manon',
'Le Taj Mahal'],
'Pasta box': ['Pasta au saumon'],
'Plat du soir commande Crous&Go': ['Chili con carne/riz pilaf',
'(Haché origine ou provenance France)',
'OU',
'Cari de carottes lentilles et quinoa'],
'Salade': ['La Végé bowl']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Filet de colin pané, sauce béarnaise, carottes bâtonnets, frites incurvées'],
'Plat du jour': ['chaîne perso: Chou farci, jus corsé, blé',
'chaîne étudiants: Steak haché, sauce béarnaise, carottes bâtonnets, frites incurvées'],
'Végétarien': ["Galette de lentille corail à l'indienne, sauce crème champignons, pilaf de quinoa"],
'Extension': ['FERMÉ']}},
'Resto U De Colmar': {'Déjeuner': {'Menu du jour 3.30€ ou 1€': ['Chili Con Carne/Viande Hachée (Bœuf)',
'(Hachée Origine ou Provenance France)',
'Riz Pilaf',
'OU',
'Cari de Carottes Lentilles et Quinoa'],
'Viennoiseries HT': ['En Vente à partir de 8h30 :',
'Croissant Nature à 1,10 euros',
'Pain au Chocolat à 1,20 euros',
'Autre Viennoiserie de 1,10 à 1,40 euros'],
'Les grillades à la carte HT': ["Steak/frites ou légumes à 3,60 euros (l'assiette)",
'(Origine France)',
"Légumes/Féculents à 2,50 euros (l'assiette)",
'Frites à 2,50 euros (le cornet)',
"L'américain à 4,00 euros (le Sandwich)",
'(Origine France)'],
'La Pasta box HT': ['Sauce Saumon à 3,60 euros'],
'Les sandwichs HT': ['Le Parisien',
'Le Maraîcher',
'Le Berger',
'Le Bagnat : Le Manon']}},
'Resto U De Lillberg': {'Déjeuner': {'Menu étudiant - Tarif social': ['Chili con carne/riz pilaf',
'(Haché origine ou provenance France)',
'OU',
'Cari de carottes lentilles et quinoa'],
'Brasseur 4,70HT / 5.17TTC euros': ['Jambon grill',
'(Origine ou provenance France)',
'Sauce Marchand de Vin',
'Frites',
'Légumes du jour']}},
'Resto U De Liut Mulhouse': {'Déjeuner': {'Menu étudiant 3.30€ ou 1€': ['Chili con carne/riz pilaf',
'(Haché origine ou provenance France)',
'OU',
'Cari de carottes lentilles et quinoa'],
'Sandwichs': ['Le Maraicher',
'Le Parisien',
'Le Berger',
'Bagnat Manon',
'Chaud: Bruschettas margarita'],
'Pasta Box': ['Pasta au saumon'],
'Salades': ['La Végé bowl']}},
'Resto U Esplanade': {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage :',
'Cordon bleu ou Poisson pané, sauce tomate maison',
'Petits pois',
'Frites',
'Boulettes végétariennes, sauce tomate maison',
'Petits pois',
'Frites',
'1er étage :',
'Poisson aux amandes, sauce tomate maison',
'Petits pois',
'Blé safrané',
'Torsades, sauce bolognaise maison',
'Galette de quinoa provençale, sauce tomate maison',
'Petits pois',
'Blé safrané',
'Soupe de légumes du jour :',
'Chou-fleur et pommes de terre'],
'Desserts 1er et 2ème étage': ['Paris-Brest',
'Tarte au citron',
'Compote de pommes aux spéculoos'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Poisson aux amandes, sauce tomate maison',
'Petits pois',
'Blé safrané',
'Galette de quinoa provençale, sauce tomate maison',
'Petits pois',
'Blé safrané']},
'Dîner': {'Menus étudiants 2ème étage': ['Fricadelle de boeuf, sauce crème maison',
'Haricots verts',
'Pommes de terre rôties',
'Gratin de pâtes arrabiata maison'],
'Desserts 2ème étage': ['Paris-Brest',
'Tarte au citron',
'Compote de pommes aux spéculoos']}},
'Resto U Gallia': {'Déjeuner': {'MENU ETUDIANT': ['Chipolatas grillées',
'Frites',
'Bâtonnières de légumes'],
'BRASSERIE': ['Filet mignon de porc ',
'Sauce au Munster',
'Frites',
'Bâtonnières de légumes ',
'Pizza Reine',
'Tarte flambée gratinée'],
'VENTE A EMPORTER': ['FORMULE ÉTUDIANTE : Parisien, eau, fruit',
'Game of cheese',
'Italien',
'Maidele ',
'Salade la Niçoise',
'Panini le Napoli',
'Pizza Reine',
'Tarte flambée gratinée'],
'MENU VEGETARIEN': ['Boulettes de blé Thaï',
'Frites',
'Bâtonnières de légumes']},
'Dîner': {'MENU ETUDIANT': ['Cordon bleu de dinde',
'Pommes de terre fondantes',
'Légumes'],
'MENU VEGETARIEN': ['Galette potiron et boulghour',
'Pommes de terre fondantes',
'Légumes'],
'ORIGINE ET PROVENANCE DE NOS VIANDES': ['.']}},
'Resto U Illkirch': {'Déjeuner': {'CAFETERIA': ['Petits déjeuners à partir de 7h45',
'Viennoiseries',
'Sandwichs',
'Snacking chaud',
'Desserts maison, pâtisseries américaines',
'Boissons chaudes et froides'],
'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées'],
'SALLE DES ETUDIANTS - PLAT VEGETARIEN': ['Aiguillettes de blé au fromage',
'Sauce Libanaise',
'Poêlée rustique'],
'SALLE DES ETUDIANTS - MENU DU JOUR': ['Émincé de dinde guanajuato',
'Cari de haricots verts',
'Riz'],
'SALLE DES ETUDIANTS - PATES': ['Tortis à la paysanne'],
'SALLE DES ETUDIANTS - BARBECUE': ['Longe de porc fumée',
'ou',
'Merguez',
'Frites'],
'SALLE DES ETUDIANTS - DESSERTS': ['Paris-Brest',
'ou',
'Crème dessert praliné'],
'SALLE DES PERSONNELS - ENTREES': ['Salade césar',
'ou',
'Assiette montagnarde'],
'SALLE DES PERSONNELS - SUGGESTION DU JOUR': ['Steak haché de boeuf',
'Petits pois',
'Frites'],
'SALLE DES PERSONNELS - MENU DU JOUR': ['Émincé de dinde guanajuato',
'Cari de haricots verts',
'Riz'],
'SALLE DES PERSONNELS - PLAT VEGETARIEN': ['Aiguillettes de blé au fromage',
'Sauce Libanaise',
'Poêlée rustique'],
'SALLE DES PERSONNELS - DESSERTS': ['Tarte aux abricots',
'ou',
'Fromage blanc à la myrtille']}},
'Resto U Paul Appell': {'Déjeuner': {'Pôle végétal': ['Boulettes de blé',
'Salade Thaï'],
'Flam and Co': ['Poutine ', 'Bœuf & cheddar'],
'Plat du jour': ['Beignets de poisson',
'Sauce tartare',
'Petits pois',
'Pommes persillées'],
'Annexe': ['PASTA PARTY',
'Poivrons & tomates',
'OU',
'Thon']}}},
'mardi 25 mars 2025': {'Cafeteria De La Fonderie': {'Déjeuner': {'menu étudiant tarif social': ['Cuisse de poulet grillée ',
'(origine ou provenance France)',
'Pennes',
'Petits pois',
'OU',
'Bouchées de blé Thaï',
'Sauce Napolitaine',
'Pennes'],
'Sandwich': ['Le Végéta',
'Le Campagnard',
"L'Indien",
'Le Bagnat Ugolin'],
'Box de pâtes': ['Pasta au saumon'],
'Salade': ["L'Alsacienne"]}},
'Cafeteria Le Pege': {'Déjeuner': {'Petit-déjeuner': ['Café & Viennoiseries',
'7h30 -10h30'],
'Plat du jour': ['Penne sauce carbonara ',
'Roquette & parmesan'],
'Végétarien': ['Penne sauce aux champignons',
'Roquette & parmesan']}},
'Cafeteria Mini R': {'Déjeuner': {'Fermeture': ['Structure fermée du Lundi 24 Mars 2025 au Vendredi 28 Mars 2025']}},
'Cybercafe Ru Illberg': {'Déjeuner': {'Sandwichs': ['Le Végéta',
'Le Campagnard',
"L'Indien",
'Le Bagnat Ugolin',
'Chaud: Panini Bolognaise'],
'Pasta Box': ['Pasta au saumon'],
'Salade': ["L'Alsacienne"]}},
'Le 32': {'Déjeuner': {'Carte du jour au 32 - Plats': ['Magret, sauce au miel et sésame',
'Brick au chèvre, miel et romarin',
'Garnitures',
'Ecrasé de pommes de terre',
'Romanesco'],
'Entrées': ['Salade césar revisitée', 'Soupe de légumes'],
'Desserts': ['Demi cadre framboises',
'Salade de fruits frais']}},
'Le Cristal Shop Ru Esplanade': {'Déjeuner': {'Plat à emporter Box en verre réutilisable': ['Croûte de volaille aux champignons',
'Duo de carottes',
'Riz pilaf',
'Curry de pois chiches aux légumes maison',
'Riz pilaf',
'4,50 € HT/4,95 € TTC',
'+ prix de la Box 5,70 € TTC'],
'Burger maison au choix': ['Formule avec frites',
'Burger de boeuf BIO',
'Chicken burger',
'Végé burger'],
'Pizza maison au choix': ['Reine', '4 saisons'],
'Formule étudiante à 1€ tarif boursier / non boursier 3,30 €': ['Formule Be Fit',
'Sandwich, eau plate ou gazeuse, fruit ou yaourt']}},
'Learning Center': {'Déjeuner': {'Plat du jour': ['Burger / Burger végé'],
'Sandwichs': ['Le Végéta',
'Le Campagnard',
"L'Indien",
'Le Bagnat Ugolin',
'Le poulet curry'],
'Pasta box': ['Pasta au saumon'],
'Plat du soir commande Crous&Go': ['Cuisse de poulet grillée ',
'(origine ou provenance France)',
'Pennes',
'Petits pois',
'OU',
'Bouchée edamame',
'Sauce Napolitaine',
'Pennes'],
'Salade': ["L'Alsacienne"]}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Cervelas orloff, poireaux à la crème, pommes de terre sautées'],
'Plat du jour': ['Bouchée à la reine, riz pilaf'],
'Végétarien': ['Cari réunionnais'],
'Extension': ['FERMÉ']}},
'Resto U De Colmar': {'Déjeuner': {'Menu du jour 3.30€ ou 1€': ['Cuisse de Poulet BBC',
'(Origine ou Provenance France)',
'Pennes',
'Petits Pois',
'OU',
'Bouchées Edamame/Carottes',
'Sauce Napolitaine',
'Pennes'],
'Viennoiseries HT': ['En Vente à partir de 8h30 :',
'Croissant Nature à 1,10 euros',
'Pain au Chocolat à 1,20 euros',
'Autre Viennoiserie de 1,10 à 1,40 euros'],
'Les grillades à la carte HT': ["Steak/frites ou légumes à 3,60 euros (l'assiette)",
'(Origine France)',
"Légumes/Féculents à 2,50 euros (l'assiette)",
'Frites à 2,50 euros (le cornet)',
"L'américain à 4,00 euros (le Sandwich)",
'(Origine France)'],
'La Pasta box HT': ['Sauce Bolognaise à 3,60 euros'],
'Les sandwichs HT': ['Le Campagnard',
'Le Végéta',
"L'Indien",
"L'Alsacienne"]}},
'Resto U De Lillberg': {'Déjeuner': {'Menu étudiant - Tarif social': ['Cuisse de poulet grillée ',
'(origine ou provenance France)',
'Pennes',
'Petits pois',
'OU',
'Pennes sauce crème jambon champignon',
'Emmental râpé',
'OU',
'Bouchée edamame',
'Sauce Napolitaine',
'Pennes'],
'Brasseur 4,70HT / 5.17TTC euros': ['Fricassée de porc au munster ',
'(origine ou provenance France)',
'Spaetzles',
'Carottes rondelles']}},
'Resto U De Liut Mulhouse': {'Déjeuner': {'Menu étudiant 3.30€ ou 1€': ['Cuisse de poulet grillée ',
'(origine ou provenance France)',
'Pennes',
'Petits pois',
'OU',
'Pennes sauce crème jambon champignon',
'Emmental râpé',
'OU',
'Bouchée edamame',
'Sauce Napolitaine',
'Pennes'],
'Sandwichs': ['Le Végéta',
'Le Campagnard',
"L'Indien",
'Le Bagnat Ugolin',
'Chaud: Burger / Burger végé'],
'Pasta Box': ['Pasta au saumon'],
'Salades': ["L'Alsacienne"]}},
'Resto U Esplanade': {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage :',
'Fricadelle de boeuf, sauce marchand de vin',
'Duo de carottes',
'Frites',
'Curry de pois chiches aux légumes maison',
'Riz pilaf',
'1er étage :',
'Croûte de volaille aux champignons',
'Duo de carottes',
'Riz pilaf',
'Torsades, sauce carbonara maison',
'Curry de pois chiches aux légumes maison',
'Riz pilaf'],
'Desserts 1er et 2ème étage': ['Crème vanille',
'Donut',
'Eclair au chocolat'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Croûte de volaille aux champignons',
'Duo de carottes',
'Riz pilaf',
'Curry de pois chiches aux légumes maison',
'Riz pilaf']},
'Dîner': {'Menus étudiants 2ème étage': ['Palette à la diable',
'Petits pois carottes',
'Pommes de terre rôties',
'Aiguillettes de blé, sauce rémoulade',
'Petits pois carottes',
'Pommes de terre rôties'],
'Desserts 2ème étage': ['Crème vanille',
'Donut',
'Eclair au chocolat']}},
'Resto U Gallia': {'Déjeuner': {'MENU ETUDIANT': ["Boulettes d'agneau à la printanière",
"Purée de pommes de terre à l'ancienne",
'Brocolis'],
'BRASSERIE': ['Couscous Royal',
'Pizza Parma',
'Tarte flambée traditionnelle'],
'VENTE A EMPORTER': ['FORMULE ÉTUDIANTE : Parisien, eau, fruit',
'Game of cheese',
'Italien',
'Maidele',
'Salade la Niçoise',
'Pizza Parma',
'Tarte flambée traditionnelle',
'Américain Merguez'],
'MENU VEGETARIEN': ['Friand au fromage',
"Purée de pommes de terre à l'ancienne",
'Brocolis']},
'Dîner': {'MENU ETUDIANT': ["Tarte à l'oignon et au jambon ",
'Salade verte',
'Pommes rissolées'],
'MENU VEGETARIEN': ['Koshari'],
'ORIGINE ET PROVENANCE DE NOS VIANDES': ['menu non communiqué']}},
'Resto U Illkirch': {'Déjeuner': {'CAFETERIA': ['Petits déjeuners à partir de 7h45',
'Viennoiseries',
'Sandwichs',
'Snacking chaud',
'Desserts maison, pâtisseries américaines',
'Boissons chaudes et froides'],
'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées'],
'SALLE DES ETUDIANTS - PLAT VEGETARIEN': ['Tajine de pois chiches,abricots et amandes',
'Boulgour'],
'SALLE DES ETUDIANTS - MENU DU JOUR': ['Chili con carne',
'Riz'],
'SALLE DES ETUDIANTS - PATES': ['Spaghettis bolognaise'],
'SALLE DES ETUDIANTS - BARBECUE': ["Cuisse de canette à l'orange"],
'SALLE DES ETUDIANTS - DESSERTS': ['Fondant au chocolat',
'ou',
'Compote de pommes'],
'SALLE DES PERSONNELS - ENTREES': ['Salade à la mimolette',
'Ou',
'Salade italienne'],
'SALLE DES PERSONNELS - SUGGESTION DU JOUR': ['Cuisse de poulet à la tournaisienne',
'Choux de Bruxelles',
'Frites'],
'SALLE DES PERSONNELS - MENU DU JOUR': ['Chili con carne',
'Riz'],
'SALLE DES PERSONNELS - PLAT VEGETARIEN': ['Tajine de pois chiches,abricots et amandes',
'Boulgour'],
'SALLE DES PERSONNELS - DESSERTS': ['Tarte aux pommes,cannelle',
'ou',
'Fromage blanc à la rhubarbe']}}},
'mercredi 26 mars 2025': {'Cafeteria De La Fonderie': {'Déjeuner': {'menu étudiant tarif social': ['Émincé végétal à la Chinoise',
'Riz cantonais',
'OU',
'Samoussas aux légumes',
'Sauce aigre douce au curry ',
'Riz cantonais'],
'Sandwich': ['Le Maraicher',
'Le Parisien',
'Thon mayo',
"Le mystère de l'ouest"],
'Box de pâtes': ['Pasta champignons'],
'Salade': ['La Vérone']}},
'Cafeteria Le Pege': {'Déjeuner': {'Petit-déjeuner': ['Café & Viennoiseries',
'7h30 -10h30'],
'Plat du jour': ['Curry de pois chiches Bio & lentilles corail de Plobsheim aux petits légumes',
'Patate douce rôtie',
'Fallafels de Légumineuses'],
'Végétarien': ['Assiette Libanaise, Houmous, Fallafel, Bouchée végétale, quinoa épicée et crudités']}},
'Cafeteria Mini R': {'Déjeuner': {'Fermeture': ['Structure fermée du Lundi 24 Mars 2025 au Vendredi 28 Mars 2025']}},
'Cybercafe Ru Illberg': {'Déjeuner': {'Sandwichs': ['Le Maraicher',
'Le Parisien',
'Thon mayo',
"Le mystère de l'ouest",
'Chaud:Panini Bolognaise'],
'Pasta Box': ['Pasta champignons'],
'Salade': ['La Vérone']}},
'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Le 32': {'Déjeuner': {'Carte du jour au 32 - Plats': ['Moussaka végétarienne',
'Salade verte',
'Wok de légumes'],
'Entrées': ['Muffin féta et olives', 'Soupe de légumes'],
'Desserts': ['Tiramisu', 'Salade de fruits frais']}},
'Le Cristal Shop Ru Esplanade': {'Déjeuner': {'Plat à emporter Box en verre réutilisable': ['JOURNEE VERTE',
'Gratin de légumes',
'Polenta',
'Tajine aux abricots et pois chiches',
'Boulgour aux épices',
'4,50 € HT/4,95 € TTC',
'+ prix de la Box 5,70 € TTC'],
'Burger maison au choix': ['Formule avec frites',
'Le Bretzel burger',
'Végé burger'],
'Pizza maison au choix': ['4 fromages', 'Légumes du soleil'],
'Formule étudiante à 1€ tarif boursier / non boursier 3,30 €': ['Formule Be Fit',
'Sandwich, eau plate ou gazeuse, fruit ou yaourt']}},
'Learning Center': {'Déjeuner': {'Plat du jour': ['Tarte Irlandaise'],
'Sandwichs': ['Le Maraicher',
'Le Parisien',
'Thon mayo',
"Le Mystère de l'ouest",
'Le Dragon ball'],
'Pasta box': ['Pasta champignons'],
'Plat du soir commande Crous&Go': ['Émincé végétal à la Chinoise',
'Riz cantonais',
'OU',
'Samoussas aux légumes',
'Sauce aigre douce au curry ',
'Riz cantonais'],
'Salade': ['La Vérone']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Dahl crémeux de pois cassés'],
'Plat du jour': ['Chili sin carne, riz'],
'Végétarien': ['Fajitas de haricots rouges tex mex, salade verte'],
'Extension': ['FERMÉ']}},
'Resto U De Colmar': {'Déjeuner': {'Menu du jour 3.30€ ou 1€': ['Emincé Végétal à la Chinoise',
'Riz Cantonnais',
'OU',
'Samoussas Aux Légumes',
'Riz Cantonnais'],
'Viennoiseries HT': ['En Vente à partir de 8h30 :',
'Croissant Nature à 1,10 euros',
'Pain au Chocolat à 1,20 euros',
'Autre Viennoiserie de 1,10 à 1,40 euros'],
'Les grillades à la carte HT': ["Steak/frites ou légumes à 3,60 euros (l'assiette)",
'(Origine France)',
"Légumes/Féculents à 2,50 euros (l'assiette)",
'Frites à 2,50 euros (le cornet)',
"L'américain à 4,00 euros (le Sandwich)",
'(Origine France)'],
'La Pasta box HT': ['Sauce Champignons à 3,20 euros'],
'Les sandwichs HT': ['Le Parisien',
'Le Maraîcher',
'Le Thon Mayo',
"le Mystère de l'Ouest"]}},
'Resto U De Lillberg': {'Déjeuner': {'Menu étudiant - Tarif social': ['Émincé végétal à la Chinoise',
'Riz cantonais',
'OU',
'Samoussas aux légumes',
'Sauce aigre douce au curry ',
'Riz cantonais'],
'Brasseur 4,70HT / 5.17TTC euros': ['Burger au quinoa à la Provençale',
'Salade verte',
'Potatoes']}},
'Resto U De Liut Mulhouse': {'Déjeuner': {'Menu étudiant 3.30€ ou 1€': ['Émincé végétal à la Chinoise',
'Riz cantonais',
'OU',
'Samoussas aux légumes',
'Sauce aigre douce au curry ',
'Riz cantonais'],
'Sandwichs': ['Le Maraicher',
'Le Parisien',
'Thon mayo',
"Le mystère de l'ouest",
'Chaud:Panini Bolognaise'],
'Pasta Box': ['Pasta champignons'],
'Salades': ['La Vérone']}},
'Resto U Esplanade': {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['JOURNEE VERTE',
'2ème étage :',
'Chili aux lentilles',
'Riz pilaf',
'Tajine aux abricots et pois chiches',
'Boulgour aux épices',
'1er étage :',
'Gratin de légumes',
'Polenta',
'Tajine aux abricots et pois chiches',
'Boulgour aux épices'],
'Desserts 1er et 2ème étage': ['Gâteau quinoa pommes',
'Fondant au citron',
'Cocktail de fruits'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Gratin de légumes',
'Polenta',
'Tajine aux abricots et pois chiches',
'Boulgour aux épices']},
'Dîner': {'Menus étudiants 2ème étage': ['Boulettes de pois chiches BIO, raïta de concombre BIO',
'Haricots verts BIO',
'Boulgour BIO',
'Torsades aux courgettes et pois BIO'],
'Desserts 2ème étage': ['Tarte aux pommes BIO',
'Flan au caramel BIO']}},
'Resto U Gallia': {'Déjeuner': {'MENU ETUDIANT': ['MENU 100% VEGETARIEN',
'100% BIO',
'œufs brouillés à la Portugaise',
'Blé',
'Carottes',
'Émincé végétal à la Chinoise'],
'BRASSERIE': ['MENU 100% VEGETARIEN',
'Risotto de Petit Épeautre au butternut ',
'Pizza forestière',
'Tarte flambée ail et ciboulette'],
'VENTE A EMPORTER': ['FORMULE ÉTUDIANTE : Parisien, eau, fruit',
'Game of cheese',
'Italien',
'Maidele',
'Salade la Niçoise',
'Pizza forestière',
'Tarte flambée ail et ciboulette',
'Pasta box'],
'MENU VEGETARIEN': ['TOUS LES MERCREDIS MIDIS MENU 100% VEGETARIEN']},
'Dîner': {'MENU ETUDIANT': ['Tomates farcies',
'Semoule',
'Petits pois'],
'MENU VEGETARIEN': ['Couscous végétarien aux fallafels'],
'ORIGINE ET PROVENANCE DE NOS VIANDES': ['menu non communiqué']}},
'Resto U Illkirch': {'Déjeuner': {'CAFETERIA': ['Petits déjeuners à partir de 7h45',
'Viennoiseries',
'Sandwichs',
'Snacking chaud',
'Desserts maison, pâtisseries américaines',
'Boissons chaudes et froides'],
'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées'],
'SALLE DES ETUDIANTS - PLAT VEGETARIEN': ['Dhal crémeux de pois cassés',
'Pâtes cœur de blé'],
'SALLE DES ETUDIANTS - MENU DU JOUR': ['Chili aux lentilles et haricots rouges',
'Céréales gourmandes'],
'SALLE DES ETUDIANTS - PATES': ['Lasagnes à la provençale'],
'SALLE DES ETUDIANTS - BARBECUE': ['Galette de quinoa à la provençale',
'Sauce au miel'],
'SALLE DES ETUDIANTS - DESSERTS': ['Gâteau de quinoa aux pommes',
'Ou',
'Fromage blanc aux myrtilles'],
'SALLE DES PERSONNELS - ENTREES': ['Salade grecque',
'ou',
'Champignons à la grecque'],
'SALLE DES PERSONNELS - SUGGESTION DU JOUR': ['Mafé épicé à la sauce cacahuètes',
'Semoule'],
'SALLE DES PERSONNELS - MENU DU JOUR': ['Lasagnes à la provençale'],
'SALLE DES PERSONNELS - PLAT VEGETARIEN': ['Chili aux lentilles et haricots rouges',
'Céréales gourmandes'],
'SALLE DES PERSONNELS - DESSERTS': ['Tarte aux fruits de bois',
'ou',
'Mousse au citron']}}},
'jeudi 27 mars 2025': {'Cafeteria De La Fonderie': {'Déjeuner': {'menu étudiant tarif social': ['Chausson à la Bolognaise',
'Frites',
'Haricots verts',
'OU',
'Msir wot',
'Frites'],
'Sandwich': ['Le Végéta',
'Le Campagnard',
'Le Game of cheese',
'Wrap chicken roll'],
'Box de pâtes': ['Pasta champignons'],
'Salade': ['La New César']}},
'Cafeteria Le Pege': {'Déjeuner': {'Petit-déjeuner': ['Café & Viennoiseries',
'7h30 -10h30'],
'Plat du jour': ['Sauté de porc à l’aigre douce ',
'Légumes à l’asiatique',
'Riz cantonais'],
'Végétarien': ['Samossas de légumes',
'Légumes à l’asiatique',
'Riz cantonais']}},
'Cafeteria Mini R': {'Déjeuner': {'Fermeture': ['Structure fermée du Lundi 24 Mars 2025 au Vendredi 28 Mars 2025']}},
'Cybercafe Ru Illberg': {'Déjeuner': {'Sandwichs': ['Le Végéta',
'Le Campagnard',
'Le Game of cheese',
'Wrap chicken roll',
'Chaud: Burger / Burger végé'],
'Pasta Box': ['Pasta champignons'],
'Salade': ['La New César']}},
'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Le 32': {'Déjeuner': {'Carte du jour au 32 - Plats': ['Paleron de boeuf',
'Risotto vert',
'Garnitures',
'Pommes de terre charlottes au four',
'Poêlée de carottes et céleri'],
'Entrées': ['Wrap végétal', 'Soupe de légumes'],
'Desserts': ['Dôme crème brûlée', 'Salade de fruits frais']}},
'Le Cristal Shop Ru Esplanade': {'Déjeuner': {'Plat à emporter Box en verre réutilisable': ['Pilons de poulet à la citronnelle',
'Nouilles chinoises',
'Wok de légumes',
'Samoussa aux légumes, sauce au miel',
'Nouilles chinoises',
'Wok de légumes',
'4,50 € HT/4,95 € TTC',
'+ prix de la Box 5,70 € TTC'],
'Burger maison au choix': ['Formule avec frites',
'Burger de boeuf BIO',
'Chicken burger',
'Végé burger'],
'Pizza maison au choix': ['Poulet', 'Mozzarella'],
'Formule étudiante à 1€ tarif boursier / non boursier 3,30 €': ['Formule Be Fit',
'Sandwich, eau plate ou gazeuse, fruit ou yaourt']}},
'Learning Center': {'Déjeuner': {'Plat du jour': ['Burger / Burger végé'],
'Sandwichs': ['Le Végéta',
'Le Campagnard',
'Le Game of cheese',
'Wrap chicken roll',
"L'Auvergnat"],
'Pasta box': ['Pasta champignons'],
'Plat du soir commande Crous&Go': ['Chausson à la Bolognaise',
'Frites',
'Haricots verts',
'OU',
'Msir wot',
'Frites'],
'Salade': ['La New César']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['chaîne perso: Gombo traditionnel louisianais et son riz au raisin',
'chaîne étudiants: Rougail saucisse et riz'],
'Plat du jour': ['Poisson à la bordelaise et légumes vapeur'],
'Végétarien': ['Curry de patates douces'],
'Extension': ['Tacos au poulet']}},
'Resto U De Colmar': {'Déjeuner': {'Menu du jour 3.30€ ou 1€': ['Chausson à la Bolognaise de Dinde',
'Frites',
'Haricots Verts',
'OU',
'Misir Wot(Mijoté Ethiopien)',
'Frites'],
'Viennoiseries HT': ['En Vente à partir de 8h30 :',
'Croissant Nature à 1,10 euros',
'Pain au Chocolat à 1,20 euros',
'Autre Viennoiserie de 1,10 à 1,40 euros'],
'Les grillades à la carte HT': ["Steak/frites ou légumes à 3,60 euros (l'assiette)",
'(Origine France)',
"Légumes/Féculents à 2,50 euros (l'assiette)",
'Frites à 2,50 euros (le cornet)',
"L'américain à 4,00 euros (le Sandwich)",
'(Origine France)'],
'La Pasta box HT': ['Sauce Thon à la Tomate à 3,20 euros'],
'Les sandwichs HT': ['Le Campagnard',
'Le Végéta',
'Le Game Of Cheese',
'Le Wrap : Le Chicke N Roll']}},
'Resto U De Lillberg': {'Déjeuner': {'Menu étudiant - Tarif social': ['Chausson à la Bolognaise',
'Frites',
'Haricots verts',
'OU',
'Msir wot',
'Frites'],
'Brasseur 4,70HT / 5.17TTC euros': ['Couscous ',
'(Boulettes, merguez, pilon de poulet)']}},
'Resto U De Liut Mulhouse': {'Déjeuner': {'Menu étudiant 3.30€ ou 1€': ['Chausson à la Bolognaise',
'Frites',
'Haricots verts',
'OU',
'Msir wot',
'Frites'],
'Sandwichs': ['Le Végéta',
'Le Campagnard',
'Le Game of cheese',
'Wrap chicken roll',
'Chaud: Burger / Burger végé'],
'Pasta Box': ['Pasta champignons'],
'Salades': ['La New César']}},
'Resto U Esplanade': {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage:',
'Poutine',
'Frites',
'Samoussa aux légumes, sauce au miel',
'Nouilles chinoises',
'Wok de légumes',
'1er étage :',
'Pilons de poulet à la citronnelle',
'Nouilles chinoises',
'Wok de légumes',
'Torsades, sauce aux 3 fromages maison',
'Samoussa aux légumes, sauce au miel',
'Nouilles chinoises',
'Wok de légumes'],
'Desserts 1er et 2ème étage': ['Millefeuille vanille',
'Tarte aux pommes',
'Fromage blanc aux griottes'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Pilons de poulet à la citronnelle',
'Nouilles chinoises',
'Wok de légumes',
'Samoussa aux légumes, sauce au miel',
'Nouilles chinoises',
'Wok de légumes']},
'Dîner': {'Menus étudiants 2ème étage': ['Chili con carné maison',
'Fajitas de haricots rouges tex mex maison',
'Poêlée mexicaine'],
'Desserts 2ème étage': ['Millefeuille vanille',
'Tarte aux pommes',
'Fromage blanc aux griottes']}},
'Resto U Gallia': {'Déjeuner': {'MENU ETUDIANT': ['Émince de porc au Pistou'],
'BRASSERIE': ["Suggestion : Pizza Napolitaine 'MAISON'",
'Margarita ou Mortazza'],
'VENTE A EMPORTER': ['FORMULE ÉTUDIANTE : Parisien, eau, fruit',
'Game of cheese',
'Italien',
'Maidele',
'Salade la Niçoise',
'Pizza Margarita',
'Tarte flambée traditionnelle',
'Hamburger / frites'],
'MENU VEGETARIEN': ["Menu 100% local 'Gaines d'Alsace'",
'Chili de lentilles ',
'Pilaf de quinoa']},
'Dîner': {'MENU ETUDIANT': ['Escalope Viennoise',
'Sauce tomate basilic',
'Julienne de légumes',
'Pâtes'],
'MENU VEGETARIEN': ['Pâtes aux 3 fromages'],
'ORIGINE ET PROVENANCE DE NOS VIANDES': ['.']}},
'Resto U Illkirch': {'Déjeuner': {'CAFETERIA': ['Petits déjeuners à partir de 7h45',
'Viennoiseries',
'Sandwichs',
'Snacking chaud',
'Desserts maison, pâtisseries américaines',
'Boissons chaudes et froides'],
'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées'],
'SALLE DES ETUDIANTS - PLAT VEGETARIEN': ['Cari de carottes aux deux lentilles',
'Quinoa'],
'SALLE DES ETUDIANTS - MENU DU JOUR': ['Cordon bleu/viennoise',
'Duo de haricots',
'Purée'],
'SALLE DES ETUDIANTS - PATES': ['Gratin de coudes à la savoyarde'],
'SALLE DES ETUDIANTS - BARBECUE': ['Chipolatas',
'ou',
'Fricadelles sauce bordelaise'],
'SALLE DES ETUDIANTS - DESSERTS': ['Crème dessert vanille',
'ou',
'Fondant citron et pois chiches'],
'SALLE DES PERSONNELS - ENTREES': ["Salade d'avocat au thon",
'ou',
'Salade de cervelas-gruyère'],
'SALLE DES PERSONNELS - SUGGESTION DU JOUR': ['Sauté de poulet à la crème de tomates confites',
'Courgettes poêlées',
'Röstis'],
'SALLE DES PERSONNELS - MENU DU JOUR': ['Gratin de coudes à la savoyarde'],
'SALLE DES PERSONNELS - PLAT VEGETARIEN': ['Cari de carottes aux deux lentilles',
'Quinoa'],
'SALLE DES PERSONNELS - DESSERTS': ['Tarte au citron meringuée',
'ou',
'Crêpe miel amandes']}}},
'vendredi 28 mars 2025': {'Cafeteria De La Fonderie': {'Déjeuner': {'menu étudiant tarif social': ['Filet de colin pané',
'Tagliatelles',
'Courgettes à la Provençale',
'OU',
'Dahl crémeux de lentilles blondes',
'Tagliatelles'],
'Sandwich': ['Le Maraicher',
'Le Parisien',
"L'Italien",
'Le Maidele'],
'Box de pâtes': ['Pasta pesto'],
'Salade': ['La Louisiana']}},
'Cafeteria Le Pege': {'Déjeuner': {'Petit-déjeuner': ['Café & Viennoiseries',
'7h30 -10h30'],
'Plat du jour': ['Limande meunière ',
'Duo de carottes & panais',
'Frites',
'ou',
'Petits salés aux lentilles bio de Plobsheim',
'Saucisse fumée'],
'Végétarien': ['Galette potiron boulgour',
'Duo de carottes & panais',
'Frites']}},
'Cafeteria Mini R': {'Déjeuner': {'Fermeture': ['Structure fermée du Lundi 24 Mars 2025 au Vendredi 28 Mars 2025']}},
'Cybercafe Ru Illberg': {'Déjeuner': {'Sandwichs': ['Le Maraicher',
'Le Parisien',
"L'Italien",
'Le Maidele',
'Chaud: Panini Le Vénézia'],
'Pasta Box': ['Pasta pesto'],
'Salade': ['La Louisiana']}},
'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Le 32': {'Déjeuner': {'Carte du jour au 32 - Plats': ['Filet de sandre, beurre blanc',
'Polenta au fromage et légumes',
'Garnitures',
'Pépinettes aux herbes',
'Epinards à la crème'],
'Entrées': ['Brick au chèvre, miel et romarin',
'Soupe de légumes'],
'Desserts': ['Charlottine aux fruits rouges',
'Salade de fruits frais']}},
'Le Cristal Shop Ru Esplanade': {'Déjeuner': {'Plat à emporter Box en verre réutilisable': ['Echine de porc, sauce à la bière',
'Haricots verts',
'Purée de pommes de terre',
'Quiche aux pommes de terre et épinards',
'Haricots verts',
'Torsades',
'4,50 € HT/4,95 € TTC',
'+ prix de la Box 5,70 € TTC'],
'Burger maison au choix': ['Formule avec frites',
'Burger de boeuf BIO',
'Chicken burger',
'Végé burger'],
'Pizza maison au choix': ['Thon', 'Chèvre'],
'Formule étudiante à 1€ tarif boursier / non boursier 3,30 €': ['Formule Be Fit',
'Sandwich, eau plate ou gazeuse, fruit ou yaourt']}},
'Learning Center': {'Déjeuner': {'Plat du jour': ['Panini Le Vénézia'],
'Sandwichs': ['Le Maraicher',
'Le Parisien',
"L'Italien",
'Le Maidele',
'Le dolce vita'],
'Pasta box': ['Pasta pesto'],
'Plat du soir commande Crous&Go': ['Filet de colin pané',
'Tagliatelles',
'Courgettes à la Provençale',
'OU',
'Dahl crémeux de lentilles blondes',
'Tagliatelles'],
'Salade': ['La Louisiana']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Fricadelle de bœuf, sauce marchand de vin, chou romanesco, frites'],
'Plat du jour': ['chaîne perso: Tagliatelles aux gésiers confits',
'chaîne étudiants: Menu du jour'],
'Végétarien': ['Boulettes de blé thaï, risotto aux légumes'],
'Extension': ['Lasagnes bolognaise']}},
'Resto U De Colmar': {'Déjeuner': {'Menu du jour 3.30€ ou 1€': ['Filet de Colin Pané',
'Tagliatelles',
'Courgettes à la Provençale',
'OU',
'Dahl Crémeux de Pois Cassés',
'Tagliatelles'],
'Viennoiseries HT': ['En Vente à partir de 8h30 :',
'Croissant Nature à 1,10 euros',
'Pain au Chocolat à 1,20 euros',
'Autre Viennoiserie de 1,10 à 1,40 euros'],
'Les grillades à la carte HT': ["Steak/frites ou légumes à 3,60 euros (l'assiette)",
'(Origine France)',
"Légumes/Féculents à 2,50 euros (l'assiette)",
'Frites à 2,50 euros (le cornet)',
"L'américain à 4,00 euros (le Sandwich)",
'(Origine France)'],
'La Pasta box HT': ['Sauce Pesto à 3,20 euros'],
'Les sandwichs HT': ['Le Parisien',
'Le Maraîcher',
"L'Italien",
'La Mauricette : Le Maidele',
'Le Panini : Le Venezia']}},
'Resto U De Lillberg': {'Déjeuner': {'Menu étudiant - Tarif social': ['Filet de colin pané',
'Tagliatelles',
'Courgettes à la Provençale',
'OU',
'Spaghettis à la Bolognaise ',
'(haché origine ou provenance France)',
'OU',
'Dahl crémeux de lentilles blondes',
'Tagliatelles'],
'Brasseur 4,70HT / 5.17TTC euros': ['Lasagnes à la Bolognaise ',
'(haché origine ou provenance France)',
'Salade verte']}},
'Resto U De Liut Mulhouse': {'Déjeuner': {'Menu étudiant 3.30€ ou 1€': ['Filet de colin pané',
'Tagliatelles',
'Courgettes à la Provençale',
'OU',
'Spaghettis à la Bolognaise ',
'(haché origine ou provenance France)',
'OU',
'Dahl crémeux de lentilles blondes',
'Tagliatelles'],
'Sandwichs': ['Le Maraicher',
'Le Parisien',
"L'Italien",
'Le Maidele',
'Chaud: Panini Le Vénézia'],
'Pasta Box': ['Pasta pesto'],
'Salades': ['La Louisiana']}},
'Resto U Esplanade': {'Déjeuner': {'Menus étudiants 1er et 2ème étage': ['2ème étage :',
'Merguez, sauce tomate',
'Zaalouk de chou-fleur',
'Frites',
'Quiche aux pommes de terre et épinards',
'Haricots verts',
'Torsades',
'1er étage :',
'Echine de porc, sauce à la bière',
'Haricots verts',
'Purée de pommes de terre',
'Torsades, sauce aux 2 saumon maison',
'Quiche aux pommes de terre et épinards',
'Haricots verts',
'Torsades'],
'Desserts 1er et 2ème étage': ['Beignet aux framboises',
'Eclair au café',
'Tiramisu'],
'Cristal Shop (RDC) Cafétéria': ['Plat à emporter en box en verre ou sur place',
'Echine de porc, sauce à la bière',
'Haricots verts',
'Purée de pommes de terre',
'Quiche aux pommes de terre et épinards',
'Haricots verts',
'Torsades']},
'Dîner': {'Menus étudiants 2ème étage': ['Cordon bleu, sauce tomate',
'Carottes au céleri branche',
'Gratin dauphinois'],
'Desserts 2ème étage': ['Beignet aux framboises',
'Eclair au café',
'Tiramisu']}},
'Resto U Gallia': {'Déjeuner': {'MENU ETUDIANT': ['Grignottes de poulet',
'Sauce aux herbes',
'Poêlée Printanière'],
'BRASSERIE': ["Tourte au bœuf 'MAISON' ",
'Salade Auvergnate',
'Pizza',
'Tarte flambée'],
'VENTE A EMPORTER': ['FORMULE ÉTUDIANTE : Parisien, eau, fruit',
'Game of cheese',
'Italien',
'Maidele',
'Salade la Niçoise',
'Pizza',
'Tarte flambée',
'Hot-dog'],
'MENU VEGETARIEN': ['Galette au sarrasin et lentilles',
'Poêlée Printanière']},
'Dîner': {'MENU ETUDIANT': ['Palette à la diable',
'Riz pilaf',
'Légumes'],
'MENU VEGETARIEN': ['Galette végétarienne'],
'ORIGINE ET PROVENANCE DE NOS VIANDES': ['.']}},
'Resto U Illkirch': {'Déjeuner': {'CAFETERIA': ['Petits déjeuners à partir de 7h45',
'Viennoiseries',
'Sandwichs',
'Snacking chaud',
'Desserts maison, pâtisseries américaines',
'Boissons chaudes et froides'],
'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées'],
'SALLE DES ETUDIANTS - PLAT VEGETARIEN': ['Curry de boulettes aux légumes',
'Petit épeautre'],
'SALLE DES ETUDIANTS - MENU DU JOUR': ['Émincé de porc aux cacahuètes',
'Riz cantonais'],
'SALLE DES ETUDIANTS - PATES': ['Spaetzle à la choucroute et aux lardons'],
'SALLE DES ETUDIANTS - BARBECUE': ['Galopin de veau sauce champignons'],
'SALLE DES ETUDIANTS - DESSERTS': ['Pêche sur lit de crème pâtissière'],
'SALLE DES PERSONNELS - ENTREES': ['Pâté en croute-crudités',
'ou',
'Oeuf mollet aux lardons'],
'SALLE DES PERSONNELS - SUGGESTION DU JOUR': ['Fish and chips sauce rémoulade',
"Carottes à l'oriental",
'Pommes de terre au four'],
'SALLE DES PERSONNELS - MENU DU JOUR': ['Émincé de porc aux cacahuètes',
'Riz cantonais'],
'SALLE DES PERSONNELS - PLAT VEGETARIEN': ['Curry de boulettes aux légumes',
'Petit épeautre'],
'SALLE DES PERSONNELS - DESSERTS': ["Tarte à l'ananas",
'ou',
'Mousse cappucino']}}},
'lundi 31 mars 2025': {'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Escalope viennoise, sauce tomate, choux fleurs, pommes rissolées'],
'Plat du jour': ['Crêpe au jambon et fromage, salade champêtre'],
'Végétarien': ['Pâtes aux fromages'],
'Extension': ['Pasta party']}},
'Resto U Illkirch': {'Déjeuner': {'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées']}}},
'mercredi 2 avril 2025': {'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Galette orge chèvre miel, gratin de légumes'],
'Plat du jour': ['Croissant au fromage, salade auvergnate'],
'Végétarien': ['Kefta coriandre menthe, sauce tzatziki, semoule'],
'Extension': ['FERMÉ']}},
'Resto U Illkirch': {'Déjeuner': {'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées']}}},
'jeudi 3 avril 2025': {'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['Currywurst, petits pois à la française, frites'],
'Plat du jour': ['Cari de poisson au combava, riz au safran'],
'Végétarien': ['Pita à la galette de soja tomate basilic, sauce aux herbes, salade composée'],
'Extension': ['Nuggets de poulet, brocolis, gratin de pommes de terre']}},
'Resto U Illkirch': {'Déjeuner': {'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées']}}},
'vendredi 4 avril 2025': {'Kiosque Ru Esplanade': {'Déjeuner': {'Fermeture': ['Structure fermée du Dimanche 23 Février 2025 au Samedi 31 Mai 2025']}},
'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['chaîne perso: Bacon burger, salade verte, potatoes',
'chaîne étudiants: Grillade du jour'],
'Plat du jour': ['Quiche lorraine, légumes'],
'Végétarien': ['Boulettes de pois chiche, sauce au fromage blanc, dahl de lentilles aux épices'],
'Extension': ['Raviolis à la sauce tomate']}},
'Resto U Illkirch': {'Déjeuner': {'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées']}}},
'mardi 1 avril 2025': {'Resto U Cronenbourg': {'Déjeuner': {'Grillade': ['chaîne perso: Filet de loup, sauce à la vanille, haricots verts, pomme duchesse',
'chaîne étudiants: Filet de colin , sauce à la vanille, haricots verts, pomme duchesse'],
'Plat du jour': ['Emincé de dinde à la crème, riz aux petits légumes'],
'Végétarien': ['Tchoutchouka aux œufs, boulgour'],
'Extension': ['Doner à garnir']}},
'Resto U Illkirch': {'Déjeuner': {'SALLE DES ETUDIANTS - ENTREES': ['Crudités variées']}}}})
def show_item(list_):
i = 1
for item in list_:
print('%s : %s'%(str(i),item))
i+=1
quit = 'N'
change_rest = 'Y'
while quit=='N':
dates = list(all_dates_all_menus.keys())
show_item(dates)
date_choosed = int(input('Select the date (type the number aside)'))
restaurants = list(all_dates_all_menus[dates[date_choosed-1]].keys())
while change_rest == 'Y':
print('---------------------------------------\n\n')
show_item(restaurants)
rest_choosed = int(input('Select the restaurant (type the number aside)'))
meal_keys = list(all_dates_all_menus[dates[date_choosed-1]][restaurants[rest_choosed-1]].keys())
show_item(meal_keys)
meal_choosed = int(input('Select the meal (type the number aside)'))
menu = all_dates_all_menus[dates[date_choosed-1]][restaurants[rest_choosed-1]][meal_keys[meal_choosed-1]]
for meal in menu:
print('''%s :
%s
'''%(meal,menu[meal]))
change_rest = input('Do you want to select another restaurant ? (Y/N)')
quit = input('Do you want to quit ? (Y/N)')
if quit == 'N':
change_rest = 'Y'
1 : lundi 24 mars 2025
2 : mardi 25 mars 2025
3 : mercredi 26 mars 2025
4 : jeudi 27 mars 2025
5 : vendredi 28 mars 2025
6 : lundi 31 mars 2025
7 : mercredi 2 avril 2025
8 : jeudi 3 avril 2025
9 : vendredi 4 avril 2025
10 : mardi 1 avril 2025
Select the date (type the number aside)2
---------------------------------------
1 : Cafeteria De La Fonderie
2 : Cafeteria Le Pege
3 : Cafeteria Mini R
4 : Cybercafe Ru Illberg
5 : Le 32
6 : Le Cristal Shop Ru Esplanade
7 : Learning Center
8 : Resto U Cronenbourg
9 : Resto U De Colmar
10 : Resto U De Lillberg
11 : Resto U De Liut Mulhouse
12 : Resto U Esplanade
13 : Resto U Gallia
14 : Resto U Illkirch
Select the restaurant (type the number aside)2
1 : Déjeuner
Select the meal (type the number aside)1
Petit-déjeuner :
['Café & Viennoiseries', '7h30 -10h30']
Plat du jour :
['Penne sauce carbonara ', 'Roquette & parmesan']
Végétarien :
['Penne sauce aux champignons', 'Roquette & parmesan']
Do you want to select another restaurant ? (Y/N)N
Do you want to quit ? (Y/N)Y