fbpx
download

3 formas simples de descargar archivos con Python

Usar Python para descargar archivos de Internet es muy fácil y posible usando solo funciones de biblioteca estándar.

Python nos permite realizar descargas desde la web creando nuestros propios scripts de automatizaciones, la forma más fácil de hacerlo es utilizando librerías que ya se encuentran incluidas con la instalación básica de Python.

Veamos como hacerlo.

1. urllib.request.urlretrieve

La biblioteca urllib de Python ofrece una variedad de funciones diseñadas para manejar tareas comunes relacionadas con URL. Esto incluye analizar, solicitar y descargar archivos.

Consideremos un ejemplo básico de descarga del archivo robots.txt de www.google.com:

from urllib import request

# Definimos la URL del archivo a descargar

remote_url = 'https://www.google.com/robots.txt'

# Definimos el nombre del archivo local a guardar

local_file = 'local_copy.txt' 

# Se realiza la descarga y se guarda el archivo de manera local

request.urlretrieve(remote_url, local_file)

2. requests.get

El módulo de Python Requests es una biblioteca súper amigable, considerada a si misma como “HTTP para humanos”. Al ofrecer una API muy simplificada, Requests hace honor a su lema incluso para demandas relacionadas con peticiones HTTP de alto rendimiento. Sin embargo, no incluye una sola línea para descargar archivos. En su lugar, uno debe guardar manualmente los datos de archivos transmitidos de la siguiente manera:

import requests

# Definimos la URL del archivo a descargar

remote_url = 'https://www.google.com/robots.txt'

# Definimos el nombre del archivo local a guardar

local_file = 'local_copy.txt'

# Se envía la petición HTTP Get para la obtención del recurso

data = requests.get(remote_url)

# Guardamos el archivo de manera local

with open(local_file, 'wb')as file:
  file.write(data.content)

Hay algunos aspectos importantes de este enfoque a tener en cuenta, en particular el formato binario de transferencia de datos. Cuando un navegador web carga una página (o archivo), lo codifica utilizando la codificación especificada del host. Las codificaciones comunes incluyen UTF-8 y Latin-1.

Esta es una directiva dirigida a los navegadores web que reciben y muestran datos que no se aplican inmediatamente a la descarga de archivos.

Nota: los archivos descargados pueden requerir codificación para que se muestren correctamente.

Eso está más allá del alcance de este tutorial.

3. wget.download

La biblioteca wget Python ofrece un método similar a urllib y atrae mucha atención debido a que su nombre es idéntico al comando wget de Linux.

import wget

# Definimos la URL del archivo a descargar

remote_url = 'https://www.google.com/robots.txt'

# Definimos el nombre del archivo local a guardar

local_file = 'local_copy.txt'

# Se realiza la descarga y se guarda el archivo de manera local

wget.download(remote_url, local_file)

La función wget.download utiliza una combinación de urllib, tempfile y shutil para recuperar los datos descargados, guardarlos en un archivo temporal y luego mover ese archivo (y cambiarle el nombre) a la ubicación especificada.


Descargar archivos con Python es súper simple y se puede lograr usando las funciones estándar de urllib. Aunque es importante mencionar que la biblioteca de requests ofrece las API más fáciles y versátiles para tareas comunes relacionadas con HTTP. Una excepción notable son las funciones de análisis de URL de urllib. Sin embargo, estos están estrictamente relacionados con HTTP, así que te invito a pruebes con cuál módulo te va mejor y nos compartas tu experiencia en los comentarios.

¿Te gustó el artículo? Comparte con tus amigos
Imagen por defecto
Hever Rubio
Biodegradable. Desarrollador de software y apasionado por la tecnología.
Artículos: 42

Deja un comentario

Dirección
Torre DG. Av. Adolfo Ruíz Cortínes 1344.
Villahermosa, Tabasco 86035

Hecho en 🇲🇽 con ❤️