Get informations from CROUS restaurants pages and turn them into an API
Uses NodeJs (instead of the previous version that used PHP)
Add my Discord BOT into your server ! Click here
Le scrapper est codé pour fonctionner sur les 3 principaux Restaurants Universitaires de Dijon. Chaque page CROUS peut potentiellement être construite différemment, à vous d'adapter le scrapper à vos restaurants dans le cas où il ne fonctionnerait pas nativement.
J'ai également développé un bot discord afin d'obtenir le menu du jour des différents R.U et cafet's de Dijon, ajoute le à ton serveur ici
l'élément principal à adapter selon les résultats obtenus avec mon code est cette ligne :
$('#menu-repas .slides h3').each(function(index){
datemenu = $(this).html();
if(datemenu.replace('û','u').includes("Menu du "+date)){
today_index = index;
}
});
const today_menu = $('#menu-repas .slides > li:nth-child('+(today_index+1)+')');
const ptidej = $(today_menu).find('.content.clearfix > div:nth-child(1) > .content-repas').html();
const dej = $(today_menu).find('.content.clearfix > div:nth-child(2) > .content-repas').html();
const diner = $(today_menu).find('.content.clearfix > div:nth-child(3) > .content-repas').html();
En effet, cette ligne de code interprète le code HTML et navigue dedans pour aller chercher les éléments de la liste du menu. Parfois, d'une page à l'autre, la disposition des éléments de la liste du menu changent, il faut alors modifier ce selecteur.
Je vais essayer de maintenir une version fonctionnelle et en ligne de cette API pour les Restaurants Universitaires Mansart, Montmuzard et la caféteria CROUS de l'IUT de Dijon ici :
CAFET IUT : http://crous.lucienpuget.fr/?resto=cafet_iut
MANSART : http://crous.lucienpuget.fr/?resto=mansart
MONTMUZARD : http://crous.lucienpuget.fr/?resto=montmuzard
This scrapper is coded to work on the 3 major uni restaurants of Dijon (21000, France). Every CROUS page can potentially work differently from the other ones, so the scrapper's code is more or less unique for every uni restaurant.
The main element that make this scrapper working and that you'll need to modify to adapt it are these lignes of code :
$('#menu-repas .slides h3').each(function(index){
datemenu = $(this).html();
if(datemenu.replace('û','u').includes("Menu du "+date)){
today_index = index;
}
});
const today_menu = $('#menu-repas .slides > li:nth-child('+(today_index+1)+')');
const ptidej = $(today_menu).find('.content.clearfix > div:nth-child(1) > .content-repas').html();
const dej = $(today_menu).find('.content.clearfix > div:nth-child(2) > .content-repas').html();
const diner = $(today_menu).find('.content.clearfix > div:nth-child(3) > .content-repas').html();
Indeed, these lignes process the HTML code and navigate into it to get the elements of the menu list. Sometimes, from a CROUS page to another, the disposition of the elements can change, you'll therefore have to modify these lignes to adapt it.
I will try to maintain online and working an accessible version of this scrapper for the 3 main restaurants of Dijon :
CAFET IUT : http://crous.lucienpuget.fr/?resto=cafet_iut
MANSART : http://crous.lucienpuget.fr/?resto=mansart
MONTMUZARD : http://crous.lucienpuget.fr/?resto=montmuzard