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 :

Aide pour petit script de download


Sujet :

Réseau/Web Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Points : 43
    Points
    43
    Par défaut Aide pour petit script de download
    Bonjour,

    Je voudrais construire un petit script qui va chercher plusieurs fichiers .txt sur divers sites, controle qu'ils le font pas plus d'1Mo en poids, puis les mettre dans un seul répertoire commun. Étant débutant sous python, voici ce à quoi je suis arrivé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import urllib
     
    urllib.urlcleanup()
    url="http://site.org/texte.txt"
    dest="/home/toto/files/"
    monurl = urllib.urlretrieve(url,dest)
    C'est bon pour l'instant?

    Il me manque un truc pour "controler" la taille du fichier, que dois-je rajouter?
    Puis-combiner plusieurs lignes url="lesite..." ?

    ++

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Voici mon résultat pour rapatrier deux fichiers de deux sites. Comme vous le voyez, ils ont le même nom au départ et je veux les renommer suivant le nom du site

    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import urllib,os
    the_location = "/home/toto/xmlfiles/"
     
    urllib.urlcleanup()
    url="http://site1.com/fichier.xml"
    dest="the_location.site1.xml"
    monurl = urllib.urlretrieve(url,dest)
     
    urllib.urlcleanup()
    url="http://site2.com/fichier.xml"
    dest="the_location.site2.xml"
    monurl = urllib.urlretrieve(url,dest)
    le problème c'est que ça ne marche pas je n'ai pas d'erreurs pourtant, et je ne vois pas les fichiers téléchargés :/

    ++

  3. #3
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Citation Envoyé par csseur22 Voir le message
    Voici mon résultat pour rapatrier deux fichiers de deux sites. Comme vous le voyez, ils ont le même nom au départ et je veux les renommer suivant le nom du site

    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import urllib,os
    the_location = "/home/toto/xmlfiles/"
     
    urllib.urlcleanup()
    url="http://site1.com/fichier.xml"
    dest="the_location.site1.xml"
    monurl = urllib.urlretrieve(url,dest)
     
    urllib.urlcleanup()
    url="http://site2.com/fichier.xml"
    dest="the_location.site2.xml"
    monurl = urllib.urlretrieve(url,dest)
    le problème c'est que ça ne marche pas je n'ai pas d'erreurs pourtant, et je ne vois pas les fichiers téléchargés :/

    ++
    J'aurais eu tendance à écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    urllib.urlcleanup()
    url="http://site2.com/fichier.xml"
    dest=the_location + "site2.xml"
    monurl = urllib.urlretrieve(url,dest)
    sinon tes fichiers porteront le nom 'the_location.sitexx.xml' dans le dossier courant.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    merci, j'avais un peu de mal avec la syntaxe :p

    par contre il me manque une dernière chose: controler le poids du fichier avant téléchargement (c'est à dire que s'il est au-dessus d'une limite indiquée, je ne le dl pas), quel est le nom de la fonction pour faire ceci?

    ++

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Ah j'oubliais, je dois aussi m'assurer que chaque fichier est bien en UTF8 (j'affiche ensuite avec simplexml sur une page php utf8)

    j'ai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import urllib,codecs
    the_location = "/home/toto/xmlfiles/"
     
    urllib.urlcleanup()
    url="http://site2.com/fichier.xml"
    dest=the_location + "site2.xml"
    monurl = urllib.urlretrieve(url,dest)
    out = file( dest )
    out.write( codecs.BOM_UTF8 )
    out.close()
    c'est bon?

  6. #6
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Salut,

    Tu peux utiliser ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    >>> import urllib2
    >>> page = urllib2.urlopen("http://www.python.org")
    >>> page.info().headers
    ['Date: Tue, 16 Dec 2008 21:36:56 GMT\r\n', 'Server: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_ssl/2.2.3 OpenSSL/0.9.8c mod_wsgi/2.3 Python/2.4.4\r\n', 'Last-Modified: Tue, 16 Dec 2008 16:12:12 GMT\r\n', 'ETag: "105800d-3f5e-38d68f00"\r\n', 'Accept-Ranges: bytes\r\n', 'Content-Length: 16222\r\n', 'Connection: close\r\n', 'Content-Type: text/html; charset=UTF-8\r\n']
    >>> contenu = page.read()
    >>> page.close()
    >>> fichier = open("/home/login/test.html", 'w')
    >>> fichier.write(contenu)
    >>> fichier.close()
    => le "page.info().headers" retourne une liste avec notamment la taille (content-length) et l'encodage

    Par contre, urllib2 est un peu différente de urllib. Tu n'as pas de fonction "urlretrieve" par exemple, donc il faut utiliser read() pour récupérer les données, puis les écrire dans un fichier.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Re,

    merci, mais je ne comprends pas ou indiquer la limite, et les infos de page.info headers, pourquoi sont-elles déjà marquées?

    désolé j'suis ultra-débutant en python :p

  8. #8
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Ben quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import urllib2
    page = urllib2.urlopen("http://www.python.org")
    donnees = page.info().headers
    la variable "donnees" contient une liste avec des infos sur le fichier disponible à l'adresse "http://www.python.org", dont la taille et l'encodage du fichier.

    Les infos sont "déjà marquées" car j'ai copié-collé le résultat qui s'est affiché dans la console python.

    Dans mon cas, il y a la chaine 'Content-Length: 16222\r\n' dans "donnees" qui donne la taille de la page web (16222 octets)

Discussions similaires

  1. Besoin d'aide pour petit script
    Par tibofo dans le forum VBScript
    Réponses: 2
    Dernier message: 22/07/2009, 22h37
  2. aide pour un script javascript
    Par speedylol dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/03/2006, 14h28
  3. Réponses: 2
    Dernier message: 11/03/2006, 19h34
  4. [Tableaux] aide pour un script
    Par jim1 dans le forum Langage
    Réponses: 3
    Dernier message: 22/01/2006, 20h48
  5. [langage] aide pour un script pliz
    Par biog dans le forum Langage
    Réponses: 6
    Dernier message: 17/05/2005, 13h54

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