IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Récupération valeur sur une page web


Sujet :

Réseau/Web Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Novembre 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Italie

    Informations professionnelles :
    Activité : fonctionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2019
    Messages : 1
    Par défaut Récupération valeur sur une page web
    Bonjour à tous;

    je viens ici consulter les experts du Python pour un petit projet.

    j'habite près d'un lac, et je voudrai surveiller en continu son niveau... avant qu'il ne soit trop tard...

    L'idée est de faire un check à intervalle régulier et envoyer une notification lorsque le niveau est trop haut.

    J'ai trouvé un site indiquant le niveau de ce lac : https:www.astrogeo.va.it/idro/idro.php, la valeur intéressante étant celle située après "Stazione di Leggiuno", soit 194.12 m aujourdhui.

    J'ai commencé modestement hier à coder, pour dans un premier temps récupérer le site, et ensuite trouver la valeur derrière la balise "Stazione di Leggiuno" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/python
    import requests
    from bs4 import BeautifulSoup
     
    # using the requests module, we use the "get" funtion
    result = requests.get("https:www.astrogeo.va.it/idro/idro.php")
     
    print(result.status_code)
     
    # let us store the page content of the website
    # from requests to a variable
     
    src = result.content
    print(src)
    mais en voyant les résultats, la valeur recherchée (dans ce cas 194.12) n'apparait pas derrière la balise "Stazione di Leggiuno" , mais j'ai plutot ca :


    document.getElementById("Livello').InnerHTML="<strong>Stazione di Leggiuno: "+data.legb.livello[ data.legb.livello.lenght-1]+"<font color='#417 FDA'>
    donc, impossible de retrouver simplement cette valeur.

    Quelqu'un aurait-il une idée, une piste, pour récupérer cette valeur numérique affichée sur la page web ?

    Merci d'avance pour vos conseils !

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    les données sont récupérées à travers JavaScript et actualisées régulièrement, en pratique une requête sur https://www.astrogeo.va.it/data/idro/maggiore_inst.json permet de récupérer un JSON avec toutes les données historiques sur plusieurs jours
    le site réactualise sa page toutes 1 ou 2 minutes apparemment, et pour afficher l'info en bas se contente de prendre la dernière valeur de l'historique (data.legb.livello[ data.legb.livello.lenght - 1 ])

    si le propos est d'agréger un historique des différentes valeurs on peut probablement se contenter de réclamer le JSON une fois toutes les 24 ou 48h par exemple, réaligner avec les données précédentes, et sauvegarder/grapher le tout

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    Ce n'est pas simpliste, les données JSON donnent un dict mal formé car il y a plusieurs clés identiques

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #! python3
    # coding: utf-8
     
    from termcolor import cprint
    from dateutil.tz import gettz
    import datetime as dt
    import requests
    import json
     
    tzi = gettz("Europe/Brussels") # le site web est à la même heure
     
    result = requests.get(
        "https://www.astrogeo.va.it/data/idro/maggiore_inst.json")
     
     
    if result.status_code == 200:
        datas = json.loads(result.text)
     
        """Il y a plusieurs clés identiques, on supprime tout ce qui n'est pas nécessaire"""
        datas.pop('ran', None)
        datas.pop('plm', None)
        datas['legb'].pop('time', None)
        datas['legb'].pop('livello', None)
     
        """Il reste :{'legb': {'livello_last': 194.13, 'livello_last_time': 1573669200, 'livello_var': 0}}"""
     
        cprint('livello_last_time = {} ; livello_last = {} cm'.format(dt.datetime.fromtimestamp(
            datas['legb']['livello_last_time'], tzi).isoformat(), datas['legb']['livello_last']), 'green')
     
        """livello_last_time = 2019-11-13T19:20:00+01:00 ; livello_last = 194.13 cm"""

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/06/2018, 09h45
  2. [PHP 5.3] Récupération d'information sur une page web avec identification.
    Par vindkald dans le forum Langage
    Réponses: 4
    Dernier message: 14/05/2011, 08h23
  3. récupération de données sur une page web
    Par tomkiki dans le forum Web & réseau
    Réponses: 2
    Dernier message: 26/10/2009, 08h38
  4. récupérer des valeurs sur une page web
    Par houwa dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/07/2008, 14h27
  5. Réponses: 2
    Dernier message: 09/07/2008, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo