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 :

Extraire code source page web


Sujet :

Réseau/Web Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Extraire code source page web
    Bonjour à tous,
    Voilà je suis étudiant en informatique, et j'ai un projet à réaliser, et j'aimerais pouvoir en python récupérer le code source d'une page.
    En fait il faut que je récupère la température d'une page comme celle ci http://weather.yahooapis.com/forecastrss?w=615702&u=c
    bien sur après j'adapterais car je ne veux pas une seule ville. Si vous pouviez me donner une base pour que je puisse y travailler, en sachant que j'ai n'ai pratiquement aucune connaissance

    Merci à tous pour voter future aide amis developpeurs

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Bonne idée, c'est très gai à faire ça.

    Sauf que cela fait appel à quelques pratiques généralement inconnues du débutant.

    Allons-y quand même, le lien tout d'abord.

    Ce lien: <http://weather.yahooapis.com/forecastrss?w=615702&u=c> contient des valeurs (w=615702&u=c) qui te ramènent obligatoirement à la region parisienne, si tu changes le chiffre tu verras que tu peux obtenir d'autres régions. Ce qui signifie que tu devras retrouver l'origine de cette url pour pouvoir la recomposer selon la ville que tu désireras. Bref, d'où vient cette url ?

    Ensuite cette page te dit simplement qu'il fait 'cloudy' actuellement et rien d'autre, tu es invité à cliquer sur un lien vers <http://weather.yahoo.com/forecast/FRXX0076_c.html> pour en savoir plus.

    Il nous faut donc charger la première page, rechercher dans celle-ci le nouveau lien, charger la seconde page et enfin y lire les infos attendues.

    Charger une page se fait avec urllib2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    texte = urllib2.urlopen(url).read()
    Rechercher des données dans cette page peut se faire avec des outils de parsage (ça se dit ça ?) ou avec des expressions régulières.

    Puisque les pages en question sont particulièrement petites et simples je donne un exemple avec expressions régulières.
    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
    31
    32
    33
    34
    35
    36
    37
     
    # -*- coding: utf-8 -*-
     
    import sys
    import urllib2
    import re
     
    PAGE = 'http://weather.yahooapis.com/forecastrss?w=615702&u=c'
    LINK = re.compile('(?<=<link>)(.*?)(?=</link>)', re.DOTALL)
    TEMP = re.compile('(?<=<div class="day-temp-current temp-f ">)(.*?)(?=<span class="unit">)', re.DOTALL)
    MIN = re.compile('(?<=<div class="day-high-low">)(.*?)(?=&deg;&nbsp;)', re.DOTALL)
    MAX = re.compile('(?<=<span class="day-temp-low">)(.*?)(?=&deg;</span>)', re.DOTALL)
     
    def load_page(url):
        try:
            content = urllib2.urlopen(url).read()
        except IOError as why:
            print 'Erreur:', why
            sys.exit()
     
        return content
     
    def get_weather_link():
        page = load_page(PAGE)
        lk = LINK.search(page).group(0)
        return lk
     
    def get_weather_info(lk):
        page = load_page(lk)
        current = TEMP.search(page).group(0).replace(u'&deg;', u'°')
        minima = MIN.search(page).group(0).replace('H', '')
        maxima = MAX.search(page).group(0).replace('L', '')
        print u'Température actuelle: %s, minima: %s°, maxima: %s°' %(current, minima, maxima)
     
    if __name__ == '__main__':
        link = get_weather_link()
        get_weather_info(link)
    Lorsque les pages sont plus conséquentes, que les balises utilisées pour rechercher les données existent en plus grand nombre il faut passer par des outils plus appropriés (xml.dom, par exemple).

    Mais déjà si tu peux comprendre ce que fait exactement ce script, ce sera pas mal pour commencer.

    Je te laisse la conversion fahrenheit-centigrade.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,
    Juste pour signaler le projet google python-weather-api qui, s'il ne semble plus être maintenu, fait le boulot via l'analyse du fichier XML.
    Et openweathermap qui propose une API JSON indépendante de Yahoo, Google, and C°
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Extraire code source page web
    Par kango dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 26/11/2008, 14h26
  2. Recupérer code source page web
    Par ddsjm dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/03/2008, 21h54
  3. récupérer code source page HTML
    Par gianni17 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 02/07/2007, 15h47
  4. winsock source page web différente
    Par PoZZyX dans le forum Windows
    Réponses: 5
    Dernier message: 24/05/2007, 12h05

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