Retour

Journal Etudiant

Collaborer Conduire

Contexte

L'université de Rennes n'a pas l'emploi du temps le plus abouti, mais elle permet de le syncroniser avec une application comme thunderbird ou google calendar, avec un calendrier au format iCal.
Pour mes cours de conduite, l'école de conduite française (ECF) propose aussi un site pour voir ses prochains cours, mais ne donne pas de calendrier à syncroniser. Je l'ai donc fait moi même.

Objectifs

Le site myecf ne propose pas d'API pour communiquer avec le site. Je dois donc faire un site de type 'scraper' pour me connecter sur le site, ouvrir le calendrier, trouver la liste des cours à venir, et les convertir en calendrier lisible.

Déroulé du projet

La première étape est de se conncter au site, avec des identifiants. Pour cela, je peut utiliser la librairie 'selenium' de python pour simuler une session sur le site. Il ouvre une page sur un navigateur pour suivre le même processus qu'un utilisateur lambda, pour entrer les identifiants, se connecter, accéder à la page du calendrier et lire le code source de la page.

Ensuite, il faut repérer la liste des cours et leurs informations sur cette page. Ces informations sont facilement visible sur la page web, mais mon script ne voit que du code html. Je peut utiliser une nouvelle librairie: 'beautiful soup', qui me permet de retrouver les informations que je veut dans le code source html. Les développeurs d'ECF ont d'ailleurs eu la bienveillance de placer toutes les informations nécessaires dans les attributs des balises, ce qui m'a beaucoup simplifié le travail.

La dernière étape consiste à conertir ces informations en fichier ical pour le syncroniser avec thuderbird. Pour cela, la librairie 'icalendar' fait pratiquement le travail à ma place. Il me suffit reprendre les valeurs optenues plus tôt, convertir les dates en valeurs compréhensibles par python, et tout convertir en évènements ical, et de les sauvegarder dans un fichier en .ics .

Bilan

Au départ, ce projet m'a paru inachevable. Je n'avais jamais fait de script de scraping avant et je ne pensais pas pouvoir y arriver avec des requêtes http. C'est avec le coup de pouce d'un de me professeurs que j'ai pu trouver les bons outils, et créé un script entièrement fonctionnel en une matinée, dont vous pouvez voir le code source ici