Tengo una pequeña utilidad que utilizo para descargar un MP3 de un sitio web en un horario y luego construye / actualiza un archivo XML de podcast que I & # 39; he añadido, obviamente, a iTunes.
El procesamiento de texto que crea/actualiza el archivo XML está escrito en Python. Sin embargo, uso wget dentro de un archivo .bat
de Windows para descargar el MP3 real. Sin embargo, preferiría tener toda la utilidad escrita en Python.
Me costó encontrar una manera de descargar el archivo en Python, por lo que recurrí a wget
.
Entonces, ¿cómo puedo descargar el archivo usando Python?
En Python 2, utilice urllib2 que viene con la biblioteca estándar.
import urllib2
response = urllib2.urlopen('http://www.example.com/')
html = response.read()
Esta es la forma más básica de utilizar la biblioteca, sin ningún tipo de manejo de errores. También puedes hacer cosas más complejas como cambiar las cabeceras. La documentación se puede encontrar aquí.
Lenguaje: python -->
import urllib2
mp3file = urllib2.urlopen("http://www.example.com/songs/mp3.mp3")
with open('test.mp3','wb') as output:
output.write(mp3file.read())
El wb
en open('test.mp3','wb')
abre un archivo (y borra cualquier archivo existente) en modo binario para poder guardar datos con él en lugar de sólo texto.
Estoy de acuerdo con Corey, urllib2 es más completo que urllib y probablemente debería ser el módulo utilizado si quieres hacer cosas más complejas, pero para hacer las respuestas más completas, urllib es un módulo más simple si quieres sólo lo básico:
import urllib
response = urllib.urlopen('http://www.example.com/sound.mp3')
mp3 = response.read()
Funcionará bien. O, si no quieres lidiar con el objeto "response" puedes llamar a read() directamente:
import urllib
mp3 = urllib.urlopen('http://www.example.com/sound.mp3').read()