Descargar archivos con Python

D

La descarga de archivos de diferentes recursos en línea es una de las tareas de programación más importantes y comunes para realizar en la web. La importancia de la descarga de archivos se puede destacar por el hecho de que una gran cantidad de aplicaciones exitosas permiten a los usuarios descargar archivos. Estas son solo algunas funciones de la aplicación web que requieren la descarga de archivos:

  • Compartición de archivos
  • Procesamiento de datos
  • Recuperar el código del sitio web (CSS, JS, etc.)
  • Redes sociales

Estas son solo algunas de las aplicaciones que le vienen a la mente, pero estoy seguro de que puede pensar en muchas más. En este artículo, veremos algunas de las formas más populares en las que puede descargar archivos con Python.

Usando el módulo urllib.request

los urllib.request El módulo se utiliza para abrir o descargar un archivo a través de HTTP. Específicamente, el urlretrieve El método de este módulo es lo que usaremos para recuperar el archivo.

Para utilizar este método, debe pasar dos argumentos al urlretrieve método: el primer argumento es la URL del recurso que desea recuperar, y el segundo argumento es la ruta del archivo local donde desea almacenar el archivo descargado.

Echemos un vistazo al siguiente ejemplo:

import urllib.request

print('Beginning file download with urllib2...')

url="http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg"
urllib.request.urlretrieve(url, '/Users/scott/Downloads/cat.jpg')

En el código anterior, primero importamos el urllib.request módulo. A continuación creamos una variable url que contiene la ruta del archivo a descargar. Finalmente, llamamos al urlretrieve método y pasarlo el url variable como primer argumento, “/Users/scott/Downloads/cat.jpg” como segundo parámetro para el destino del archivo. Tenga en cuenta que puede pasar cualquier nombre de archivo como segundo parámetro y esa es la ubicación y el nombre que tendrá su archivo, asumiendo que tiene los permisos correctos.

Ejecute el script anterior y vaya a su directorio “Descargas”. Debería ver su archivo descargado llamado “cat.jpg”.

Nota: Esta urllib.request.urlretrieve se considera una “interfaz heredada” en Python 3, y puede quedar obsoleta en algún momento en el futuro. Debido a esto, no recomendaría usarlo en favor de uno de los métodos a continuación. Lo hemos incluido aquí debido a su popularidad en Python 2.

Usando el módulo urllib2

Otra forma de descargar archivos en Python es a través del módulo urllib2. los urlopen El método del módulo urllib2 devuelve un objeto que contiene datos de archivo. Para leer el contenido de

Tenga en cuenta que en Python 3, urllib2 se fusionó con urllib como urllib.request y urllib.error. Por lo tanto, este script solo funciona en Python 2.

import urllib2

filedata = urllib2.urlopen('http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg')
datatowrite = filedata.read()
 
with open('/Users/scott/Downloads/cat2.jpg', 'wb') as f:
    f.write(datatowrite)

los open El método acepta dos parámetros, la ruta al archivo local y el modo en el que se escribirán los datos. Aquí “wb” indica que el open El método debe tener permiso para escribir datos binarios en el archivo dado.

Ejecute el script anterior y vaya a su directorio “Descargas”. Debería ver el documento pdf descargado como “cat2.jpg”

Usando el módulo de solicitud

También puede descargar archivos usando peticiones módulo. los get método del requests El módulo se utiliza para descargar el contenido del archivo en formato binario. A continuación, puede utilizar el open método para abrir un archivo en su sistema, tal como hicimos con el método anterior, urllib2.urlopen.

Eche un vistazo al siguiente guión:

import requests

print('Beginning file download with requests')

url="http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg"
r = requests.get(url)

with open('/Users/scott/Downloads/cat3.jpg', 'wb') as f:
    f.write(r.content)

# Retrieve HTTP meta-data
print(r.status_code)
print(r.headers['content-type'])
print(r.encoding)

En el script anterior, el open El método se usa una vez más para escribir datos binarios en un archivo local. Si ejecuta el script anterior y va a su directorio “Descargas”, debería ver su archivo JPG recién descargado llamado “cat3.jpg”.

Con el requests módulo, también puede recuperar fácilmente metadatos relevantes sobre su solicitud, incluido el código de estado, encabezados y mucho más. En el script anterior, puede ver cómo accedemos a algunos de estos metadatos.

Lo mismo ocurre con los parámetros adicionales que se requieren en la solicitud HTTP GET. Si necesita agregar encabezados de cliente, por ejemplo, todo lo que necesita hacer es crear un dict con tus encabezados y pásala a tu get solicitud:

headers = {'user-agent': 'test-app/0.0.1'}
r = requests.get(url, headers=headers)

Hay muchas más opciones y funciones en esta biblioteca, así que echa un vistazo a su gran guía del usuario para obtener más información sobre cómo usarlo.

Usando el módulo wget

Una de las formas más sencillas de descargar archivos en Python es a través de wget módulo, que no requiere que abra el archivo de destino. los download método del wget módulo descarga archivos en una sola línea. El método acepta dos parámetros: la ruta URL del archivo a descargar y la ruta local donde se almacenará el archivo.

import wget

print('Beginning file download with wget module')

url="http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg"
wget.download(url, '/Users/scott/Downloads/cat4.jpg')

Ejecute el script anterior y vaya a su directorio “Descargas”. Aquí debería ver el archivo “cat4.jpg” recién descargado.

Conclusión

En este artículo presentamos cuatro de los métodos más utilizados para descargar archivos en Python. Personalmente, prefiero usar el request módulo para descargar archivos debido a su combinación de simplicidad y potencia. Sin embargo, su proyecto puede tener restricciones que le impidan usar bibliotecas de terceros, en cuyo caso usaría el urllib2 módulo (para Python 2) o el urllib.request módulo (para Python 3).

¿Qué biblioteca prefieres y por qué? ¡Háznoslo saber en los comentarios!

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con tus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad