¿Cómo descargar un archivo a través de HTTP?
Tengo una pequeña utilidad que uso para descargar un archivo MP3 de un sitio web según un cronograma y luego compila/actualiza un archivo XML de podcast que agregué a iTunes.
El procesamiento de texto que crea/actualiza el archivo XML está escrito en Python. Sin embargo, uso wget dentro de un .bat
archivo de Windows para descargar el archivo MP3 real. Preferiría tener toda la utilidad escrita en Python.
Luché por encontrar una manera de descargar el archivo en Python, por eso recurrí al uso de wget
.
Entonces, ¿cómo descargo el archivo usando Python?
Uno más, usando urlretrieve
:
import urllib.request
urllib.request.urlretrieve("http://www.example.com/songs/mp3.mp3", "mp3.mp3")
(para uso de Python 2 import urllib
y urllib.urlretrieve
)
Usar urllib.request.urlopen()
:
import urllib.request
with urllib.request.urlopen('http://www.example.com/') as f:
html = f.read().decode('utf-8')
Esta es la forma más básica de utilizar la biblioteca, menos el manejo de errores. También puedes hacer cosas más complejas, como cambiar encabezados.
En Python 2, el método está en urllib2
:
import urllib2
response = urllib2.urlopen('http://www.example.com/')
html = response.read()