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 :

Télécharger un fichier sur le web avec Python


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 22
    Par défaut Télécharger un fichier sur le web avec Python
    Bonjour.

    J'ai écrit un code pour télécharger un fichier sur Internet.

    Quand on procède à la main, on doit changer certains paramètres dans l'adresse URL, taper l'adresse dans un navigateur, appuyer sur entrée, et le fichier se télécharge automatiquement ensuite.
    (Si vous me demandez pourquoi je veux automatiser ça alors que ça se fait simplement "à la main", c'est juste car ce n'est une étape qui fait partie d'un grand programme plus global)

    Cependant, dans mon code, les paramètres (entre slashs : nom de ville, tel numéro, etc...) sont tapés par l'utilisateur dans une interface, puis automatiquement insérés dans l'adresse qui se "reconstruit" ainsi, morceau par morceau.

    Quand je lance ce code (j'utilise aussi Selenium et Chrome Driver Manager à cet effet), une page Google Chrome s'ouvre rapidement, un fichier se télécharge, la page se ferme aussitôt (je ne l'ai pas demandé dans mon code, me semble-t-il, en tout cas pas explicitement, mais ça m'arrange).

    Et quand je vais regarder dans les téléchargements ce qui vient d'être téléchargé, il s'agit d'un fichier temporaire tmp et pas d'un fichier .tar.bz2 (qui est d'ailleurs écrit à la fin de l'URL dont je vous parlais plus haut).

    Savez-vous pourquoi et comment y remédier ?

    Je vous remercie d'avance.

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    bonjour
    Citation Envoyé par nsl31 Voir le message
    un fichier se télécharge, la page se ferme aussitôt (je ne l'ai pas demandé dans mon code, me semble-t-il, en tout cas pas explicitement, mais ça m'arrange).
    donc "ça m'arrange" qu'il se ferme mais, si il se ferme, il ne peut pas télécharger (on interrompt le téléchargement)

    La méthode classique, c'est de plutôt télécharger le fichier de façon normale avec python, puisque tu peux capturer l'url, alors tu peux utiliser une bibliothèque http

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 964
    Par défaut
    Je ne suis pas un spécialiste alors peut être qu'il y a mieux, mais la librairie "requests" répond parfaitement à mes besoins et elle devrait également suffire pour simplement télécharger un fichier.

    requests.get(url) pour l'obtention de la réponse de type requests.Response.
    Cette réponse possède une propriété content qui correspond au tableau de bits composant le fichier.
    Ensuite il suffit de créer un nouveau fichier en mode 'wb' et d'y écrire le contenu du tableau de bits.

    https://www.w3schools.com/python/ref_requests_get.asp
    https://www.w3schools.com/python/ref...s_response.asp

  4. #4
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    424
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 424
    Par défaut
    J'avais fait il y a un certain temps (c'était en python 2) une petite moulinette pour aller télécharger les fichiers référencés par des liens sur une page à base de beautifulsoup et urllib
    Selenium et Chrome Driver Manager dans cette opération, c'est utiliser une presse hydraulique pour enfoncer un clou .

    La partie téléchargement du fichier est très simple (j'ai mis urllib.request à la place de ce qui était antérieurement urllib2 en python 2 et apparemment, ça marche en python 3 mais il y a peut-être mieux) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        def download_file(self, file_data):
            filename = file_data['name']
            file_url = file_data['url']
            local_filename=os.path.join(file_data['out_dir'], filename)
            urllib.request.urlretrieve(file_url, local_filename)
            return local_filename
    La fonction, ici, reçoit un tableau qui contient le nom et l'url du fichier ainsi que le répertoire de sortie et renvoie le nom du fichier local
    urlretrieve télécharge le fichier.

    PS. Passer un dictionnaire en paramètre plutôt que des paramètres distincts et bien nommés (ou un objet) n'est pas joli joli mais c'est juste une petite moulinette sans grande prétention vite faite (120 lignes utiles). Elle fait le taf et c'est tout ce que je lui demande. Cela dit, un peu plus de rigueur ne peut pas nuire

Discussions similaires

  1. télécharger un fichier sur un site avec CMD
    Par moha1919 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 20/04/2020, 10h32
  2. [Python 3.X] télécharger des fichiers sur une page web et les fusionner
    Par doppelman dans le forum Général Python
    Réponses: 2
    Dernier message: 27/10/2015, 15h50
  3. [CSV] Télécharger un fichier sur le serveur avec une URL
    Par bolandfranck dans le forum Langage
    Réponses: 2
    Dernier message: 23/06/2007, 13h33
  4. Réponses: 2
    Dernier message: 19/12/2005, 13h15

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