Partage
  • Partager sur Facebook
  • Partager sur Twitter

Se connecter à un service et récupérer les données

récupérer des tableaux dans des ongets/sous-onglets sur Pronote

    22 mai 2018 à 0:28:12

    Bonjour !

    Je me suis lancé un petit exercice à but éducatif et utile.

    Mon lycée utilise le service de gestion Pronote sur lequel j'ai un compte (pour voir les résultat, regarder mon agenda...). Je voudrais récupérer mes notes des 3 trimestres dans un format avec lequel je pourrais créer des graphiques par la suite.

    En cherchant un peu, je suis tomber sur un lib utilisant Requests, j'ai nomé requests-html.

    Voici le code que j'ai utilisé (mais qui ne fonctionne qu'a moitié) pour récupérer l'interface principale : 

    from requests_html import HTMLSession
    session = HTMLSession()
    
    r = session.get('http://lyc-monge.ac-grenoble.fr/pronote/eleve.html?login=true', auth=('<login>','<motDePass>'))
    
    r.html.render() # Le site utilise javascript

    Mais r.html.text me renvoie une joli erreur :

    'LYCEE GENERAL ET TECHNOLOGIQUE - PRONOTE\nIE.deferLoadingScript.add (\'defer\', [\'E_3_C_C44BABC9C24B99E1922253EAD1EE5DA822DF2C23EB4DFBAF696D5249A1E2136F/eleve_defer.js\']); function messageErreur (e) { $.get("erreur/" + e).fail(function (){}); alert ("Erreur sur le chargement de la page. Veuillez vider le cache de votre navigateur.")}\nJava script non activé. Veuillez le réactiver.\nPRONOTE 2017 - 0.2.8 logiciel de gestion de vie scolaire\nInformations concernant l\'accessibilité du site et la navigation clavier. Utilisez les flèches haut, bas, gauche et droite pour naviguer. Validez votre choix avec les touches Entrée ou Barre espace. Barre d\'onglets : Utilisez les flèches gauche et droite pour naviguer. Utilisez les flèches haut et bas pour naviguer. Utilisez les flèches gauche et droite pour naviguer et la barre espace ou entrée pour valider. Utilisez les flèches haut et bas pour naviguer et la barre espace ou entrée pour valider. Pour sélectionner la semaine précédente ou suivante, Sélectionnez la semaine précédente. Sélectionnez la semaine suivante. undefinedDétails des évènements pour la période sélectionnée : Menu contextuel : Utilisez les flèches haut et bas pour naviguer, la barre espace ou entrée pour valider et la touche échappe pour sortir sans sélectionner. undefinedCet item est désactivé. Activez l\'édition avec les touches majuscule + entrée. Utilisez les touches tabulation ou majuscule + tabulation pour naviguer entre les éléments. Supprimez la sélection avec la touche Suppr. Nouvelle fenêtre, Pour ajouter un nouvel élément, menu déroulant, Sélection des onglets et sous-onglets. Utilisez les flèches haut et bas pour naviguer dans un niveau, gauche et droite pour changer de niveau, barre espace ou entrée pour valider, échappe pour fermer le menu. sous menu, les touches Entrée ou Barre espace pour consulter les détails de l\'évènement. Retour en début de fenêtre, Utilisez la touche entrée ou flèche bas pour ouvrir la fenêtre de choixLa liste ne contient aucune donnée.'

    Qui dit, en gros, qu'il faut que je vide le cache et que j'active JS.

    Donc je n'arrive même pas à accéder à l'interface de base qui ressemble à ça sur navigateur : 

    Et je veux aller dans l'onglets entouré en rouge, voir même dans n'importe quel onglet en général.

    Sachant que l'adresse ne change pas, je pense que tout se fait en JS mais je ne sais pas trop comment intéragir alors.

    Un petit coup de pouce serais le bienvenu :D

    Cordialement,

    Simon



    -
    Edité par SimonPaulL 22 mai 2018 à 0:29:51

    • Partager sur Facebook
    • Partager sur Twitter
      22 mai 2018 à 1:09:03

      Faudrait voir les requêtes qui sont envoyées par le code JS et trouver laquelle renvoie les notes. Et reproduire cette requête dans le code Python.

      Tu peux faire ça avecl es outils développeur de ton navigateur.

      • Partager sur Facebook
      • Partager sur Twitter

      Blond, bouclé, toujours le sourire aux lèvres...

        22 mai 2018 à 18:44:46

        LoupSolitaire a écrit:

        Faudrait voir les requêtes qui sont envoyées par le code JS et trouver laquelle renvoie les notes. Et reproduire cette requête dans le code Python.

        Tu peux faire ça avecl es outils développeur de ton navigateur.


        Bonjour et merci de ta réponse !

        J'ai regardé ce que tu m'as dit et pour afficher la page il semblerait qu'il envoie deux "requêtes" (je ne sais pas si ça se dit pareil pour le JS).

        Est-ce que tu as une idée de la méthode à utilisé ou des paramètres important à envoyer ?

        Parceque je me retrouve avec des Payload de ce type:

        {donneesSec:"407756370D186572F13010F3D2D134C813678b9e142e2ce8800e1681dad9ecc45c927a252a01e4481ea4cdf030e4b2cb7618730306c0bbfc3d63703b4d802218784dac7c5715840b5ce0d622f68bf2d7"
        nom:"Navigation",
        numeroOrdre:"70EEEE1DC7A3B79C3914217F3EC8EBDA777e85e45f397f2ba3b81038352777ce",
        session:6543291}

        Et pour moi rien n'as de sense o_O

        Surtout que pour afficher une même page deux fois, il n'utilise pas le même numeroOrdre.

        • Partager sur Facebook
        • Partager sur Twitter
          28 mai 2018 à 23:01:57

          Non, les données sont peut-être encodées, faut étudier le code JS pour se faire une idée de ce qui se passe.

          Il n'y a pas de solution simple pour ce que tu veux faire.

          • Partager sur Facebook
          • Partager sur Twitter

          Blond, bouclé, toujours le sourire aux lèvres...

          Se connecter à un service et récupérer les données

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown