J’ai un petit utilitaire que j’utilise pour télécharger un MP3 à partir d’un site web selon un calendrier et qui construit/met à jour un fichier XML de podcast que j’ai évidemment ajouté à iTunes.
Le traitement de texte qui crée/met à jour le fichier XML est écrit en Python. J'utilise cependant wget dans un fichier `.bat' de Windows pour télécharger le MP3. Je préférerais cependant que l'utilitaire entier soit écrit en Python.
J'ai eu du mal à trouver un moyen de télécharger le fichier en Python, c'est pourquoi j'ai eu recours à wget
.
Alors, comment puis-je télécharger le fichier en utilisant Python ?
En Python 2, utilisez urllib2 qui est fourni avec la bibliothèque standard.
import urllib2
response = urllib2.urlopen('http://www.example.com/')
html = response.read()
C'est la façon la plus basique d'utiliser la bibliothèque, sans la gestion des erreurs. Vous pouvez aussi faire des choses plus complexes comme changer les en-têtes. La documentation peut être trouvée [ici.][1]
import urllib2
mp3file = urllib2.urlopen("http://www.example.com/songs/mp3.mp3")
with open('test.mp3','wb') as output:
output.write(mp3file.read())
Le wb
dans open('test.mp3', 'wb')
ouvre un fichier (et efface tout fichier existant) en mode binaire afin que vous puissiez enregistrer des données avec lui au lieu de simplement du texte.
Je suis d'accord avec Corey, urllib2 est plus complet que urllib et devrait probablement être le module utilisé si vous voulez faire des choses plus complexes, mais pour rendre les réponses plus complètes, urllib est un module plus simple si vous voulez juste les bases :
import urllib
response = urllib.urlopen('http://www.example.com/sound.mp3')
mp3 = response.read()
fonctionnera très bien. Ou, si vous ne voulez pas vous occuper de l'objet "response", vous pouvez appeler read() directement :
import urllib
mp3 = urllib.urlopen('http://www.example.com/sound.mp3').read()