Comment télécharger des fichiers en Python

Python fournit plusieurs méthodes pour télécharger des fichiers sur Internet. Cela peut être fait via HTTP en utilisant le paquet urllib ou la bibliothèque de requêtes. Ce didacticiel explique comment utiliser ces bibliothèques pour télécharger des fichiers à partir d’URL à l’aide de Python..

DEMANDES

La bibliothèque de requêtes est l'une des bibliothèques les plus populaires en Python. Les demandes vous permettent d'envoyer  Requêtes HTTP / 1.1 sans qu'il soit nécessaire d'ajouter manuellement des chaînes de requête à vos URL ou d'encoder des données sous forme de formulaire.

Avec la bibliothèque de requêtes, vous pouvez exécuter de nombreuses fonctions, notamment:

  • ajouter des données de formulaire,
  • ajout de fichiers en plusieurs parties,
  • et accéder aux données de réponse de Python

FAIRE DES DEMANDES

La première chose à faire est d’installer la bibliothèque. C’est aussi simple que:

demandes d'installation de pip

Pour tester si l'installation a réussi, vous pouvez effectuer un test très facile dans votre interpréteur python en tapant simplement:

demandes d'importation

Si l'installation a réussi, il n'y aura pas d'erreur.

Les requêtes HTTP incluent:

  • OBTENIR
  • POSTER
  • METTRE
  • EFFACER
  • OPTIONS
  • TÊTE

Faire une demande GET

Faire des demandes est très facile comme illustré ci-dessous.

demandes d'importation req = requests.get (“http://www.google.com”)

La commande ci-dessus récupère la page Web de Google et stocke les informations dans lereq variable. Nous pouvons ensuite aller chercher d'autres attributs.

Par exemple, pour savoir si la récupération de la page Web Google a réussi, nous interrogerons le code_état.

demandes d'importation req = requests.get (“http://www.google.com") req.status_code 200 # 200 signifie qu'une demande a été acceptée.

Et si nous voulions connaître le type de codage de la page Web de Google?

req.encodage ISO-8859-1

Vous voudrez peut-être aussi connaître le contenu de la réponse.

req.text

Ceci est juste un contenu tronqué de la réponse.

'Google>

Faire une demande POST

En termes simples, une requête POST utilisée pour créer ou mettre à jour des données. Ceci est particulièrement utilisé dans la soumission de formulaires.

Supposons que vous ayez un formulaire d’inscription qui utilise une adresse e-mail et un mot de passe comme données d’entrée. Lorsque vous cliquez sur le bouton Soumettre pour l’enregistrement, la demande de publication sera comme indiqué ci-dessous..

data = "email": "[email protected]", "mot de passe": "12345") req = requests.post (“http://www.google.com, params = data)

Faire une demande PUT

Une demande PUT est similaire à une demande POST. Il est utilisé pour mettre à jour les données. Par exemple, l’API ci-dessous montre comment effectuer une METTRE demande.

data = "name": "tutsplus", "telephone": "12345") r.put ("http://www.contact.com, params = data")

Faire une demande DELETE

Une demande DELETE, comme son nom l'indique, est utilisée pour supprimer des données. Ci-dessous un exemple de EFFACER demande

data = 'name': 'Tutsplus' url = "https://www.contact.com/api/") response = requests.delete (url, params = data)

Forfait Urllib

urllib est un paquet qui rassemble plusieurs modules pour travailler avec des URL, à savoir:

  • urllib.request pour ouvrir et lire des URL.
  • urllib.error contenant les exceptions soulevées par urllib.request
  • urllib.parse pour analyser les URL.
  • urllib.robotparser pour l'analyse robots.txt des dossiers.

urllib.request  offre une interface très simple, sous la forme de urlopen fonction capable de récupérer des URL en utilisant une variété de protocoles différents. Il offre également une interface légèrement plus complexe pour gérer l’authentification de base, les cookies, les mandataires, etc. c.

Comment récupérer des URL avec urllib

Le moyen le plus simple d'utiliser urllib.request est le suivant:

importer urllib.request avec urllib.request.urlopen ('http://python.org/') comme réponse: html = response.read () 

Si vous souhaitez récupérer une ressource Internet et la stocker, vous pouvez le faire via le urlretrieve () une fonction.

import urllib.request nom_fichier, en-têtes = urllib.request.urlretrieve ('http://python.org/') html = ouvert (nomfichier) 

Téléchargement d'images avec Python

Dans cet exemple, nous souhaitons télécharger l'image disponible sur ce lien en utilisant à la fois le module request llibrary et le module urllib.. 

url = 'https://www.python.org/static/opengraph-icon-200x200.png' # téléchargement avec urllib # importé la bibliothèque urllib import urllib # Copier un objet réseau dans un fichier local urllib.urlretrieve (url, " python.png ") # téléchargement avec les requêtes # importe la bibliothèque de requêtes demande d'importation # télécharge le contenu de l'URL au format binaire r = requests.get (url) # méthode ouverte pour ouvrir un fichier sur votre système et écrire le contenu avec open (" python1.png "," wb ") en tant que code: code.write (r.content) 

Télécharger des fichiers PDF avec Python

Dans cet exemple, nous allons télécharger un pdf sur les tendances de Google à partir de ce lien..

url = 'https://static.googleusercontent.com/media/www.google.com/en//googleblogs/pdfs/google_predicting_the_present.pdf' # téléchargement avec urllib # importation du package urllib import urllib # Copier un objet réseau dans un fichier local urllib.urlretrieve (url, "tutorial.pdf") # téléchargement avec les demandes # importer la bibliothèque des demandes demandes d'importation # télécharger le contenu du fichier au format binaire r = requests.get (url) # méthode ouverte pour ouvrir un fichier sur votre système et écrivez le contenu avec open ("tutorial1.pdf", "wb") en tant que code: code.write (r.content) 

Télécharger des fichiers Zip avec Python

Dans cet exemple, nous allons télécharger le contenu d'un référentiel GitHub trouvé dans ce lien et stocker le fichier localement.

url = 'https://codeload.github.com/fogleman/Minecraft/zip/master' # téléchargement avec les demandes # importez les demandes d'importation de bibliothèques demandes # téléchargez le contenu du fichier au format binaire r = requests.get (url) # open méthode pour ouvrir un fichier sur votre système et écrire le contenu avec open ("minemaster1.zip", "wb") sous forme de code: code.write (r.content) # téléchargement avec urllib # importation de la bibliothèque urllib import urllib # Copier un objet réseau dans un fichier local urllib.urlretrieve (url, "minemaster.zip") 

Télécharger des vidéos avec Python

Dans cet exemple, nous voulons télécharger la conférence vidéo disponible sur cette page

url = 'https://www.youtube.com/watch?v=aDwCCUfNFug' nom_vidéo = url.split ('/') [- 1] # utilisation de demandes # importé les demandes importations d'importation de bibliothèques impression "Téléchargement du fichier:% s "% video_name # télécharge le contenu de l'URL au format binaire r = requests.get (url) # méthode ouverte pour ouvrir un fichier sur votre système et écrire le contenu avec open ('tutorial.mp4', 'wb') comme f: f .write (r.content) # utilisant urllib # importé la bibliothèque urllib import urllib print "Téléchargement du fichier:% s"% video_name # Copier un objet réseau dans un fichier local urllib.urlretrieve (url, "tutorial2.mp4") 

Conclusion

Ce didacticiel couvre les méthodes les plus couramment utilisées pour télécharger des fichiers ainsi que les formats de fichiers les plus courants. Même si vous écrivez moins de code en utilisant le urllib module, le demandes Le module est préféré en raison de sa simplicité, de sa popularité et de son large éventail de fonctionnalités, notamment:

  • Maintien en vie et mise en commun des connexions
  • Domaines et URL internationaux
  • Sessions avec persistance des cookies
  • Vérification SSL de type navigateur
  • Décodage automatique du contenu
  • Authentification de base / Digest
  • Biscuits élégants de clé / valeur
  • Décompression automatique
  • Corps de réponse Unicode
  • Prise en charge du proxy HTTP (S)
  • Téléchargement de fichiers en plusieurs parties
  • Téléchargements en streaming
  • Délais de connexion
  • Requêtes Chunked
  • .réseau Soutien