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 :

Télécharger une page html et la lire avant qu'elle soit complète


Sujet :

Réseau/Web Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Télécharger une page html et la lire avant qu'elle soit complète
    Salut,

    Ce que je voudrais faire c'est télécharger une page et, comme ça prend du temps, commencer à la lire avant qu'elle soit complètement téléchargée.

    Pour récupérer la page pour l'instant, j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import urllib2
    f = urllib2.urlopen('http://www.mapageweb.com')
    f.read()
    Utiliser f.readline() ou f.readlines() à la place de f.read() ne semble pas permetttre d'aller plus vite qu'avec read().

  2. #2
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Points : 109
    Points
    109
    Par défaut
    Dans ton code, f.read() n'est exécuté qu'après l'instruction précédente donc une fois ta page chargée.

    Pour ce que tu veux, il faudrait que la récupération et la lecture s'exécutent dans des threads différentes. De plus il faudrait que la lecture se fasse par paquets que tu transmettrais à ton thread de lecture.

    Par contre j'ai plus touché à python depuis un bout de temps donc pour te dire comment faire concrètement et pas seulement dans la structure du programme, il faudra quelqu'un d'autre!

  3. #3
    Membre extrêmement actif
    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
    Points : 1 658
    Points
    1 658
    Par défaut
    Bonjour,

    Personnellement, j'ai copie dans la page web suivante http://diveintopython.adrahon.org/html_processing/extracting_data.html
    le procede suivant:

    import urllib
    sock = urllib.urlopen("http://diveintopython.org/")
    htmlSource = sock.read()
    sock.close()
    print htmlSource


    Le print de htmlSource apparait instantanement a l'ecran, il n'y aucune impression de defilement.

    Ensuite, comme je voulais manipuler le contenu de htmlSource et que je n'y arrivais pas directement, j'ai essaye les instructions suivantes:

    f = open('docu', 'w')
    f.write(htmlSource)
    f.close()
    g = open('docu','r')

    et ensuite on peut lire g comme on veut.

    J'ai fait des essais.
    Avec l'adresse http://www.boursorama.com/forum/file...symbole=1rPALO, ca donne ;

    - la lecture de 'docu' sous forme de liste:
    listedelignes = g.readlines()
    print listedelignes
    est long a s'afficher (40 secondes)

    - la lecture de 'docu' ligne apres ligne:
    for line in g:
    print line
    --> ca defile pendant 25 secondes avant d'avoir le resultat


    En realite, je ne comprends pas exactement ce qui se passe.

    En utilisant le programme suivant:
    URL = raw_input(" Entrer l'URL\n}}")

    import urllib
    sock = urllib.urlopen(URL)
    print '11'
    print type(sock)
    htmlSource = sock.read()
    print '12'
    print type(htmlSource)
    sock.close()

    f = open('fichierdelignes','w')
    f.write(htmlSource)
    print '13'
    type(f)
    f.close()

    on voit que
    sock est du type 'instance'
    htmlSource est du type 'string'
    le type de f ne sort pas, sic

    Faire un read() sur sock, je sais pas trop ce que ca peut donner....
    A mon humble avis, c'est un truc tordu, et c'est pour ca que c'est long.
    D'ailleurs c'est tellement long que personnellement, j'ai essaye tes instructions, et je n'ai rien vu se passer, seulement le prompt qui reapparait 2 fois, puis rien.

    htmlSource a le type 'string'
    Mais comme cette chaine contient des caracteres de retour a la ligne, son ecriture dans un fichier donne un fichier de lignes et non pas d'une seule chaine en une seule ligne: c'est comme ca que je m'explique les choses, mais je ne garantis pas cette explication, je suis un debutant en Python.

    Personnellement j'utilise le contenu du fichier 'docu' pour en extraire du texte, et pour cela je suis oblige de couper les extremites finales des lignes qui doivent etre des retour a la ligne (EOL je crois) car si je ne les coupe pas, je n'arrive pas a faire ce que je veux des donnees.

    Voila, j'espere que cela t'aidera. Moi je debute en Python et je rame, je trouve les tutoriels mal faits sur certains points precis sur lesquels un debutant va bloquer. Le livre Dive into Python (lien donne plus haut) me semble assez mauvais pour un debutant. Il procede d'une facon seduisante de prime abord, mais on s'apercoit vite qu'on a du mal a avancer si on se limite a lui. Un livre de Swinnen, qui me paraissait au depart trop scolaire est finalement tres bien pour comprendre les notions de base avant d'aller plus loin.
    Salut

  4. #4
    Membre extrêmement actif
    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
    Points : 1 658
    Points
    1 658
    Par défaut
    lien mal sorti dans le message precedent:

    http://www.boursorama.com/forum/file...symbole=1rPALO

  5. #5
    Membre extrêmement actif
    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
    Points : 1 658
    Points
    1 658
    Par défaut
    ptin !!!!

    forum/file_messages.phtml?symbole=1rPALO

  6. #6
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 240
    Points : 132
    Points
    132
    Par défaut J'ai un petit problème
    Moi je voudrai afficher une page web dans ma explorateur. Comment puis je faire?

  7. #7
    Membre extrêmement actif
    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
    Points : 1 658
    Points
    1 658
    Par défaut
    Comme disait Coluche, je ne comprends meme pas la question.
    Ca veut dire quoi afficher une page web dans un explorateur ? La fonction Explore accessible par un clic droit ?
    Et puis si tu dis tout de suite dans quel but tu cherches a faire ca, cela donne un eclairage a celui qui lit qui pourrait lui permettre de mieux repondre.
    ET puis c'est je voudraiS

  8. #8
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Il est possible de stipuler une taille en parametre à la fonction read() pour commencer à lire, en le faisant tourner dans une boucle.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import urllib2
    url = urllib2.urlopen('http://www.google.fr')
    contenu = url.read(20)
    while contenu:
        print contenu
        contenu = url.read(20)
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  9. #9
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 240
    Points : 132
    Points
    132
    Par défaut Bon je reexplique tout
    Je voudrais ,que pendant l'execution de mon programme la page de mon site s'affiche et non son code source.Est ce assez clair?

  10. #10
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 240
    Points : 132
    Points
    132
    Par défaut Enfin c'est bon
    C'est bon j'ai trouver ce que je chercher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import webbrowser
    webbrowser.open('http://www.monsite.fr')

Discussions similaires

  1. lire une page HTML
    Par louay02 dans le forum Débuter
    Réponses: 10
    Dernier message: 06/06/2011, 12h44
  2. Lire le contenu d'une page html via PHP
    Par laure07 dans le forum Langage
    Réponses: 8
    Dernier message: 25/11/2010, 11h35
  3. Lire le contenu d'une page html via PHP
    Par overtrack dans le forum Langage
    Réponses: 1
    Dernier message: 26/05/2009, 12h09
  4. [débutant]-Lire une page HTML
    Par torso dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 03/03/2006, 21h42

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