Python: descargar imágenes de una web

Hoy me he dado cuenta de algo terrible: ¡Aún no he escrito ninguna entrada acerca de Python, uno de de mis lenguajes de programación favoritos!

Voy a remediarlo comenzando con un sencillo script que permite descargarse imágenes de una web. Este script lo he usado como parte de un proyecto para un cliente que necesitaba descargarse automáticamente imágenes que le iban subiendo sus usuarios.

Ya que estamos en fiestas de Bilbao voy a poner un ejemplo que se descarga de la web del Ayuntamiento el cartel de las fiestas.

#!/usr/bin/env python
# -*- coding: cp1252 -*-
 
import httplib # Necesaria para hacer peticiones HTTP
 
# Configuración
dominio = 'www.bilbao.net'
ruta_imagen = '/astenagusia2008/cartel2008.jpg'
dir_downloads = '/home/gorka/'
imagen_local = 'cartel_aste_nagusia.jpg'
 
# Descargamos la imagen. Usamos try/except por si hay algún
# error en la conexión
try:
	# conectamos con el servidor
	conn = httplib.HTTPConnection(dominio)
	# hacemos la petición a la imagen
	conn.request ("GET", '/' + ruta_imagen)
	r = conn.getresponse()
	# abrimos o creamos el fichero donde vamos a guardar la imagen
	fichero = file( dir_downloads + '/' + imagen_local, "wb" )
	# guardamos la imagen en el fichero
	fichero.write(r.read())
	# y cerramos el fichero
	fichero.close()
except:
	print "No se ha podido descargar la imagen"

Puedes hacer las pruebas cambiando los parámetros de configuración:

dominio: En este ejemplo es el del ayuntamiento (sin ‘http://’), sólo el dominio, en este caso bilbao.net.

ruta_imagen: es la ruta completa a la imagen, en este caso ‘astenagusia2008/cartel2008.jpg’.

(La URL completa de la imagen es: http://www.bilbao.net/astenagusia2008/cartel2008.jpg)

dir_downloads: directorio de nuestro ordenador donde queremos guardar la imagen (debe tener permiso de escritura).

imagen_local: nombre del archivo con el que queremos guardar la imagen.

Es posible que el servidor de donde intentes bajar la imagen no lo permita. Para saber si hay algún problema de ese tipo puedes imprimir el resultado de r.read() para ver si aparece algún mensaje de error (como ‘imagen no disponible’ o algo similar).

5 thoughts on “Python: descargar imágenes de una web

  1. ¿es posible descargar ficheros como .rar o .exe? esuve buscando eso por internet y no he encontrado nada… es muy raro, un saludo!

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.