Créer un script

Bonjour, c'est mon premier message que je poste sur un forum, je suis tout nouveau dans le monde de la programmation.

Je suis actuellement en stage dans une société de météo, et je doit faire un script qui me permettrait de récupérer des données en temps réel d'un site.
http://candhis.cetmef.developpement-durable.gouv.fr/carte/
Nous avons des bouées, et je dois récupérer les données qui sont dans le tableau pour toutes les bouées, et il faut que je parse la date, le H1/3, Hmax, Th1/3, et la température de mer.
Je ne sais pas trop comment m'y prendre, grace a la commande wget j'ai le code source de la page, mais comment faire un programme/script qui recupere les données les parse et l'enregistre dans un autre fichier ?

Si quelqu'un peut m'aider svp.

Coordialement Geek974.

7 réponses

  1. Modérateur
    À mon avis il faut faire un petit script par exemple en python ou en ruby qui va permettre de récupérer les morceaux qui t'intéressent (cherche par exemple des exemples sur google "python parser html") il y en a plein :-)
    https://python.developpez.com/faq/?page=Web

    Bonne chance
    1. Merci pour ta réponse ^^
      Le python, je n'y connais rien. Mon tuteur ma conseilleur pour parser d'y aller en C
      Mais j'croyais qu'on pouvait dans un script inscrire des commandes ?
      J'ai pensé à faire un script incluant les commandes wget, pour chacune des bouées ?
      Cque j'obtient je fait un gedit lien & pour avoir le code source et puis parser...
      Et mettre le tout dans un autre fichier .text
      1. Modérateur
        En C pour parser une page web tu vas juste mourir de désespoir (et c'est quelqu'un qui connaît bien le C qui te dit ça !). C'est évidemment faisable mais c'est bien plus compliqué, car tu devras te familiariser avec une libraire genre libxml2 etc..., là ou le parsing serait mille fois plus simple en python.

        Pour le fait de n'y rien connaître en python, honnêtement c'est un langage très simple. Si tu as déjà développer tu ne devrais pas bloquer (lis par exemple un tutoriel pour apprendre les bases). Avec python tu peux faire l'équivalent de ton wget et charger le contenu xml dans une structure calquée sur la structure de l'arbre xml.

        Pour l'histoire du script en wget, c'est aussi faisable, mais en shell tu vas galérer pour parser un contenu xml.

        Après tu fais comme tu le sens :-)
        1. Je te remercie pour ton aide, je te tiendrai au courant.
          Je pense que je vais suivre ton idée, je me lance dans un tuto avec du python. Et on verra ce que ça donne.

          Merci :D
        2. Modérateur
          Ça roule, bon courage !
      2. Contributeur
        hello
        un début
        on récupère les codes de chaque bouée dans la page principale et on fabrique les URLs
        $ wget -O url -o log http://candhis.cetmef.developpement-durable.gouv.fr/carte/ 
        $ 
        $ awk -F "=|>|<|-" '/value.*-/  {gsub("'\''", "", $3) ; print "wget -O url" ++f " -o log http://candhis.cetmef.developpement-durable.gouv.fr/campagne/?idcampagne=]" $3}' url  
        wget -O url1 -o log http://candhis.cetmef.developpement-durable.gouv.fr/campagne/?idcampagne=c4ca4238a0b923820dcc509a6f75849b 
        wget -O url2 -o log http://candhis.cetmef.developpement-durable.gouv.fr/campagne/?idcampagne=c81e728d9d4c2f636f067f89cc14862c 
        wget -O url3 -o log http://candhis.cetmef.developpement-durable.gouv.fr/campagne/?idcampagne=eccbc87e4b5ce2fe28308fd9f2a7baf3 
        ........... 
        

        problème: c'est du Javascript (je crois) qui affiche les données, donc les wget ne récupèrent rien, là je ne sais plus
        1. Contributeur
          Salut,

          problème: c'est du Javascript (je crois) qui affiche les données, donc les wget ne récupèrent rien, là je ne sais plus
          En fouinant un peu on peut s'apercevoir que la page obtenue via javascript rajoute "inc-tempsreel.php" dans l'url, donc avec :

          http://candhis.cetmef.developpement-durable.gouv.fr/campagne/inc-tempsreel.php?idcampagne=c4ca4238a0b923820dcc509a6f75849b

          et en donnant le tout à parser à w3m + grep (on filtre sur la date) on obtient par exemple pour la dernière (qui est la 1ère en fait) valeur pour Nice :

          $ wget -q -O- http://candhis.cetmef.developpement-durable.gouv.fr/campagne/inc-tempsreel.php?idcampagne=c4ca4238a0b923820dcc509a6f75849b | w3m -dump -T text/html | grep -m 1 '10/07/2012'
          ? 10/07/2012 15:00 ?   0.2    ?   0.4    ?    3.6     ?   140    ?    47     ?    26.1     ?
          
          $ 

          Reste plus qu'à récupérer les valeurs souhaitées et les envoyer dans un fichier...

          ;-))
      3. Contributeur
        effectivement, bien vu
        donc :
        $ cat x
        #!/bin/bash
        
        wget -O url -o log http://candhis.cetmef.developpement-durable.gouv.fr/carte/
        awk -F "=|>|<| - " '/value.*-/  {gsub("'\''", "", $3) ; sub("^ ", "", $5) ; gsub("[ '\'']", "-", $5); n[$5]++ ; if(n[$5]>1)$5=$5 sprintf("%d", ++a) 
         ; print "wget -O - -o log http://candhis.cetmef.developpement-durable.gouv.fr/campagne/inc-tempsreel.php?idcampagne=" $3 " | w3m -dump -T text/html > " $5}' url
        $ 
        $ ./x | sh
        $ 

        $ head Anglet
        Liste des dernières mesures Temps Réel de la campagne 06402 - Anglet
        ????????????????????????????????????????????????????????????????????????????????????????????
        ? Date et heure ? H1/3 ? Hmax ? Th1/3 ? Dir au ? Etalement ? Température ?
        ? (T.U.) ? (mètres) ? (mètres) ? (secondes) ? pic ? au pic ? mer ?
        ? ? ? ? ? (degrés) ? (degrés) ? (degrés C) ?
        ????????????????????????????????????????????????????????????????????????????????????????????
        ? 11/07/2012 08:00 ? 0.7 ? 1.5 ? 5.1 ? 308 ? 29 ? 19.3 ?
        ????????????????????????????????????????????????????????????????????????????????????????????
        ? 11/07/2012 07:30 ? 0.6 ? 1.1 ? 5.0 ? 305 ? 21 ? 19.4 ?
        ????????????????????????????????????????????????????????????????????????????????????????????
        $
        CCM n'aime pas les caractères semi-graphiques, remplacés par ?
        1. Contributeur
          pour ne récupérer que du texte (mais on perd les accents)
          $ iconv -c -f utf-8 -t ascii Nice | sed '/^$/d' 
          Liste des dernires mesures Temps Rel de la campagne 00601 - Nice 
            Date et heure      H1/3      Hmax      Th1/3      Dir au   Etalement  Temprature  
                (T.U.)       (mtres)  (mtres)  (secondes)    pic      au pic        mer      
                                                             (degrs)  (degrs)   (degrs C)   
           11/07/2012 08:00    0.3       0.6        4.3        186        39         25.7      
           11/07/2012 07:30    0.3       0.6        4.4        199        30         25.7      
           11/07/2012 07:00    0.3       0.5        4.5        203        32         25.6      
           11/07/2012 06:30    0.4       0.6        4.5        202        29         25.7      
           11/07/2012 06:00    0.4       0.7        4.7        202        17         25.7      
           11/07/2012 05:30    0.4       0.7        5.0        198        30         25.7