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

Python Discussion :

Récupération page en string


Sujet :

Python

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Par défaut Récupération page en string
    Bonjour à tous,
    Voilà mon problème est tout simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import urllib.request, urllib.parse, urllib.error
     
    requete = urllib.request.Request('http://www.google.fr')
    resultat = urllib.request.urlopen(requete)
    h=resultat.read()
    print(type(h))
    Je récupère la source d'une page et elle est en type byte or j'aurais besoin de l'avoir en chaine normale. Comment faire ?

    Merci d'avance.

    Ps: Python 3.0

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Avec les deux codes suivants, j'obtiens le source sous forme de chaînes de caractères

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    from urllib2 import Request
    from urllib2 import urlopen
     
    requete = Request('http://www.google.fr')
    resultat = urlopen(requete)
    h=resultat.read()
    print repr(h)
    print type(h)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    from urllib import urlopen
     
    sock = urlopen('http://www.google.fr')
    hh = sock.read()
    sock.close()
    print repr(hh)
    print type(hh)


    J'ai Python 2.6



    Pour des problèmes de fichiers binaires, d’encodages, etc, tu peux rechercher les discussions dans lesquelles Tyrtamos est intervenu parce qu'il maîtrise vraiment bien ces questions.
    Son site http://python.jpvweb.com/mesrecettespython/

  3. #3
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut
    Bonjour..j'essaye..

    1°) Comment faire une conversion
    Pour simplifier, En Python 3000, de façon interne, le format texte (str) prend en compte tout les caractères sous un format spécial.
    Si on fourni une suite d'octet (bytes) il faut indiquer à l'interpréteur l'encodage (le langage) pour que python le comprenne et le convertisse en texte.


    d'après
    http://docs.python.org/dev/3.0/whatsnew/3.0.html

    Use str.encode() to go from str to bytes, and bytes.decode() to go from bytes to str
    2°) Paramètre de conversion
    D'après l'analyse de la page,il s'agit d'un encodage "ISO-8859-1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    3°) La commande complète
    Je demande donc un décodage pour passer de bytes (au format "ISO-8859-1") vers str
    h=h.decode("ISO-8859-1")

    4°) Puis je fait une visu du résultat


    :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import urllib.request, urllib.parse, urllib.error
     
    requete = urllib.request.Request('http://www.google.fr')
    resultat = urllib.request.urlopen(requete)
    h=resultat.read()
    h=h.decode("ISO-8859-1")
    print(type(h))
    print ("------------------------------------------------")
    for c in h: # Visu
        print (c,end='')
        if c==">" :
            print(end='\n')

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/10/2009, 20h55
  2. Réponses: 3
    Dernier message: 02/06/2009, 19h41
  3. Réponses: 2
    Dernier message: 14/11/2008, 11h28
  4. Affichage page par page - problème STRING
    Par navis84 dans le forum Langage
    Réponses: 4
    Dernier message: 19/07/2006, 14h35

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