Mostrando entradas con la etiqueta Python. Mostrar todas las entradas
Mostrando entradas con la etiqueta Python. Mostrar todas las entradas
24/7/13
Python - Código Descargar Imágenes
Buenas a todos, después de darle muchas vueltas a unos cuantos de programitas que encontre, he realizado este pequeño programa.
Nos pide una URL y el nombre del directorio a crear, donde descargara todas las imágenes de dicha URL.
'''
Created on 23/07/2013
@author: aaguilar
'''
import urllib
import urllib2
import re
import sys
import os
from os.path import basename
from urlparse import urlsplit
EXTENSIONS = ['.jpg','.png','.gif','.jpeg']
def download_images_from_url(url):
fichero = raw_input("Ingrese nombre del fichero donde descargar las imagenes >")
#Almaceno el directorio actual para volver al terminar
directorioOriginal = os.getcwd()
#Creamos el nuevo directorio
directorio = os.path.join(fichero)
if not os.path.isdir(directorio):
os.mkdir(directorio)
os.chdir(directorio)
if not url.lower().startswith('http://') and not url.lower().startswith('https://'):
url = 'http://%s'%url
print 'Descargando imagenes desde %s...'%url
urlContent = urllib2.urlopen(url).read()
# Busqueda del tag img en la pagina web.
# HTML image tag: <img src="url" alt="some_text"/>
imgUrls = re.findall('img .*?src="(.*?)"', urlContent)
print "+--------------------------------------+"
print "+ Descarga de imagenes +"
print "+--------------------------------------+"
print "+ +"
print "+ Web:",url,(" "*(31-len(url)))+"+"
print "+ Cantidad de imagenes: ",len(imgUrls),(" "*(13-len(str(len(imgUrls)))))+"+"
print "+ +"
print "+--------------------------------------+"
#Recorremos todas las imagenes
for i in range(len(imgUrls)):
if not imgUrls[i].lower().startswith('http://') and not url.lower().startswith('https://'):
imgUrls[i] = url+"/"+imgUrls[i]
nombreImagen = imgUrls[i][imgUrls[i].rfind('/')+1:len(imgUrls[i])]
#llamamos al método que la descarga
download(imgUrls[i],nombreImagen,directorio)
print "Imagenes descargadas correctamente en > " + os.getcwd()
os.chdir(directorioOriginal) # vuelve al directorio inicial
def download(url, NOMBRE,directorio):
try:
furl = urllib2.urlopen(url)
f = file(NOMBRE,'wb')
f.write(furl.read())
f.close()
print "Descarga completada -->",NOMBRE
except:
print 'Unable to download file'
#Comenzamos
try:
if __name__ == '__main__':
args = sys.argv
if len(args) < 2:
url = raw_input("Ingrese URL >")
download_images_from_url(url)
else:
download_images_from_url(args[1])
exit(0)
except Exception, e:
print e
finally:
print "Operacion Finalizada."
Os presento ahora una modificación que he realizado en el código, para solucionar que hay web que si detectan que no es un navegador el que realiza la petición, no nos permite recorrerla. Por otro lado subsanamos el problema que puede darse cuando las imagenes no tienen extensión, lo solucionamos añadiendole una por defecto, además añadimos un tratamiento por si el nombre de la imagen es relativo y tiene caracteres especiales, le damos un nombre aleatorio a la imagen.
'''
Created on 26/07/2013
@author: aaguilar
'''
import urllib
import urllib2
import re
import sys
import os
import time
from os.path import basename
from urlparse import urlsplit
EXTENSIONS = ['.jpg','.png','.gif','.jpeg']
def download_images_from_url(url):
print url
fichero = raw_input("Ingrese nombre del fichero donde descargar las imagenes >")
#Almaceno el directorio actual para volver al terminar
directorioOriginal = os.getcwd()
directorio = os.path.join(fichero)
#Creamos el nuevo directorio
if not os.path.isdir(directorio):
os.mkdir(directorio)
os.chdir(directorio)
if not url.lower().startswith('http://') and not url.lower().startswith('https://'):
url = 'http://%s'%url
print 'Descargando imagenes desde %s...'%url
print url
#urlContent = urllib2.urlopen(url).read()
values = {'name' : 'Yo'}
data = urllib.urlencode(values)
headers = {'User-agent': 'Mozilla/5.0' }
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
urlContent = response.read()
# Busqueda del tag img en la pagina web.
# HTML image tag: <img src="url" alt="some_text"/>
imgUrls = re.findall('img .*?src="(.*?)"', urlContent)
print "+--------------------------------------+"
print "+ Descarga de imagenes +"
print "+--------------------------------------+"
print "+ +"
print "+ Web:",url,(" "*(31-len(url)))+"+"
print "+ Cantidad de imagenes: ",len(imgUrls),(" "*(13-len(str(len(imgUrls)))))+"+"
print "+ +"
print "+--------------------------------------+"
# download all images
contador = 0
#Recorremos todas las imagenes
for i in range(len(imgUrls)):
print imgUrls[i]
if not imgUrls[i].lower().startswith('http://') and not url.lower().startswith('https://'):
imgUrls[i] = "http:"+imgUrls[i]
nombreImagen = imgUrls[i][imgUrls[i].rfind('/')+1:len(imgUrls[i])]
#Tratamos imagenes cuyo nombre tienen caracteres especiales
if ('>' in nombreImagen or '<' in nombreImagen or '|' in nombreImagen or ':' in nombreImagen or '*' in nombreImagen or '"' in nombreImagen or '/' in nombreImagen or '?' in nombreImagen or '\\' in nombreImagen):
contador = contador +1
nombreImagen = "imagen"+str(contador)+".jpg"
#Tratamos imagenes que no indican el formato
elif '.' not in nombreImagen:
contador = contador +1
nombreImagen = "nombreImagen"+".jpg"
#llamamos al método que la descarga
download(imgUrls[i],nombreImagen,directorio)
print "Imagenes descargadas correctamente en > " + os.getcwd()
os.chdir(directorioOriginal) # vuelve al directorio inicial
def download(url, NOMBRE,directorio):
try:
furl = urllib2.urlopen(url)
#f = file("%s.png"%NOMBRE,'wb')
f = file(NOMBRE,'wb')
f.write(furl.read())
f.close()
print "Descarga completada -->",NOMBRE
except:
print 'Unable to download file'
#Comenzamos
try:
if __name__ == '__main__':
args = sys.argv
if len(args) < 2:
url = raw_input("Ingrese URL >")
print time.asctime()
download_images_from_url(url)
else:
download_images_from_url(args[1])
exit(0)
except Exception, e:
print e
finally:
print "Operacion Finalizada."
print time.asctime()
22/7/13
Python - MySQL
En esta entrada vamos a realizar operaciones con una base de datos de MySQl. y con un fichero de texto plano.
Vamos a comenzar realizando operaciones con MySQL, creaemos una tabla, insertaremos un par de registros, los recuperaremos y visualizaremos.
En mi caso he creado un base de datos con MySQL Workbench 5.2, la he denominado "deusto".
Para poder trabajar con MySQL tendremos que intalar MySQLdb de esta página (última versión), bastara con descargarlo e instalarlo por defecto en el directorio de Python donde hemos instalado Python.
Una vez instalado ya podremos utilizar MySQLdb:
'''
Created on 22/07/2013
@author: aaguilar
'''
# Importa librerias de MySQL
import MySQLdb
# La función
bbdd = MySQLdb.connect(host="localhost", # your host, usually localhost
user="root", # your username
passwd="root", # your password
db="deusto") # name of the data base
print bbdd
# Las distintas operaciones que podemos realizar con la base de datos se realizan a través de un objeto
c = bbdd.cursor()
# creemos una nueva tabla empleados en la base de datos
c.execute("""create table empleados(dni text,
nombre text,
departamento text)""")
# insertemos un par de tuplas en nuestra nueva tabla
c.execute("""insert into empleados
values ('123456789-A','Javier Carrasco','Contabilidad')""")
c.execute("""insert into empleados
values ('123456710-B','Manuel Aguilar','Contabilidad')""")
# Realizamos un commit para que las tuplas insertadas sean almacenadas
bbdd.commit()
# Realizamos una consulta sobre la tabla que hemos creado
c.execute("""select * from empleados""")
# Recorremos las tuplas que recuperamos en la consulta
for resultado in c.fetchall():
print resultado
# Cerramos la conexión y el cursor
c.close()
bbdd.close()
Ahora vamos a probar otro ejemplo para realizar pruebas mas sencillas, donde en lugar de trabajar con una base de datos MySQL, vamos a trabajar sobre un fichero de texto plano.
Ppara ello utilizaremos SQLite, es una base de datos Open Source minimalista. Se caracteriza por:
- No tener ningún demono por detras, los datos se almacenan en un único fichero,
- Es realmente pequeña, no exige practicamente recursos, no tiene depedencias.
- Funcionalidad muy limitada, en comparación con otras bases de datos.
- Multiplataforma
- Utilizada por aplicaciones de escritorio.
Veamos el ejemplo con SQLite:
'''
Created on 22/07/2013
@author: aaguilar
'''
# Importa librerias de SQLite
import sqlite3 as dbapi
print dbapi.apilevel
print dbapi.threadsafety
print dbapi.paramstyle
# La función
# Siendo deusto.dat el nombre del fichero
bbdd = dbapi.Connection("deusto.dat")
print bbdd
# Las distintas operaciones que podemos realizar con la base de datos se realizan a través de un objeto
c = bbdd.cursor()
# creemos una nueva tabla empleados en la base de datos
c.execute("""create table empleados(dni text,
nombre text,
departamento text)""")
# insertemos un par de tuplas en nuestra nueva tabla
c.execute("""insert into empleados
values ('123456789-A','Javier Carrasco','Contabilidad')""")
c.execute("""insert into empleados
values ('123456710-B','Manuel Aguilar','Contabilidad')""")
# Realizamos un commit para que las tuplas insertadas sean almacenadas
bbdd.commit()
# Realizamos una consulta sobre la tabla que hemos creado
c.execute("""select * from empleados""")
# Recorremos las tuplas que recuperamos en la consulta
for resultado in c.fetchall():
print resultado
# Cerramos la conexión y el cursor
c.close()
bbdd.close()
Un saludo a todos.
Vamos a comenzar realizando operaciones con MySQL, creaemos una tabla, insertaremos un par de registros, los recuperaremos y visualizaremos.
En mi caso he creado un base de datos con MySQL Workbench 5.2, la he denominado "deusto".
Para poder trabajar con MySQL tendremos que intalar MySQLdb de esta página (última versión), bastara con descargarlo e instalarlo por defecto en el directorio de Python donde hemos instalado Python.
Una vez instalado ya podremos utilizar MySQLdb:
'''
Created on 22/07/2013
@author: aaguilar
'''
# Importa librerias de MySQL
import MySQLdb
# La función
connect devuelve un objeto de tipo Connection en función de los parámetros que le informemosbbdd = MySQLdb.connect(host="localhost", # your host, usually localhost
user="root", # your username
passwd="root", # your password
db="deusto") # name of the data base
print bbdd
# Las distintas operaciones que podemos realizar con la base de datos se realizan a través de un objeto
Cursor. c = bbdd.cursor()
# creemos una nueva tabla empleados en la base de datos
c.execute("""create table empleados(dni text,
nombre text,
departamento text)""")
# insertemos un par de tuplas en nuestra nueva tabla
c.execute("""insert into empleados
values ('123456789-A','Javier Carrasco','Contabilidad')""")
c.execute("""insert into empleados
values ('123456710-B','Manuel Aguilar','Contabilidad')""")
# Realizamos un commit para que las tuplas insertadas sean almacenadas
bbdd.commit()
# Realizamos una consulta sobre la tabla que hemos creado
c.execute("""select * from empleados""")
# Recorremos las tuplas que recuperamos en la consulta
for resultado in c.fetchall():
print resultado
# Cerramos la conexión y el cursor
c.close()
bbdd.close()
Ahora vamos a probar otro ejemplo para realizar pruebas mas sencillas, donde en lugar de trabajar con una base de datos MySQL, vamos a trabajar sobre un fichero de texto plano.
Ppara ello utilizaremos SQLite, es una base de datos Open Source minimalista. Se caracteriza por:
- No tener ningún demono por detras, los datos se almacenan en un único fichero,
- Es realmente pequeña, no exige practicamente recursos, no tiene depedencias.
- Funcionalidad muy limitada, en comparación con otras bases de datos.
- Multiplataforma
- Utilizada por aplicaciones de escritorio.
Veamos el ejemplo con SQLite:
'''
Created on 22/07/2013
@author: aaguilar
'''
# Importa librerias de SQLite
import sqlite3 as dbapi
print dbapi.apilevel
print dbapi.threadsafety
print dbapi.paramstyle
# La función
connect devuelve un objeto de tipo Connection que representa la conexión con el servidor.# Siendo deusto.dat el nombre del fichero
bbdd = dbapi.Connection("deusto.dat")
print bbdd
# Las distintas operaciones que podemos realizar con la base de datos se realizan a través de un objeto
Cursor. c = bbdd.cursor()
# creemos una nueva tabla empleados en la base de datos
c.execute("""create table empleados(dni text,
nombre text,
departamento text)""")
# insertemos un par de tuplas en nuestra nueva tabla
c.execute("""insert into empleados
values ('123456789-A','Javier Carrasco','Contabilidad')""")
c.execute("""insert into empleados
values ('123456710-B','Manuel Aguilar','Contabilidad')""")
# Realizamos un commit para que las tuplas insertadas sean almacenadas
bbdd.commit()
# Realizamos una consulta sobre la tabla que hemos creado
c.execute("""select * from empleados""")
# Recorremos las tuplas que recuperamos en la consulta
for resultado in c.fetchall():
print resultado
# Cerramos la conexión y el cursor
c.close()
bbdd.close()
Un saludo a todos.
5/7/13
Python - PyReadline 2.0
Para poder acceder a la característica
de autocompletado de iPython 0.13.2 es necesario instalar PyReadline.
Para ello abrimos un intérprete de
comandos de Windows desde el botón de inicio pulsando la opción de ejecutar y a
continuación ejecutamos la instrucción cmd para invocar al intérprete de
comandos de Windows:
Desde el intérprete ejecutamos la
siguiente instrucción:
C:\>
pip install pyreadline
Esta instrucción descargará e
instalará la última versión de PyReadline que exista, en este caso la 2.0.
Una vez finalizada esta instalación
podemos dar finalizada la instalación del entorno de trabajo de Python 2.7.5
Oscar.
Python - iPython 0.13.2
Una vez instalado el instalador pip
1.3.1, procedemos a instalar iPython 0.13.2 que es un intérprete de comandos de
Python mas potente que el que viene por defecto con Pyhton 2.7.5, además, contiene
ciertas funcionalidades necesarias para ejecutar scrapy 0.1.6.5 como veremos más
adelante.
Para ello, abrimos un intérprete de
comandos de Windows desde el botón de inicio pulsando la opción de ejecutar:
A continuación ejecutamos la
instrucción cmd para invocar al intérprete de comandos de Windows:
Desde el intérprete ejecutamos la
siguiente instrucción:
C:\> pip install
ipython
Esta instrucción descargará e
instalará la última versión de iPython que exista, en este caso la 0.13.2.
Una vez instalado iPython podemos
invocarlo con la siguiente instrucción:
C:\>
ipython
Y al igual que en la consola por
defecto de Python 2.7.5 se pueden ejecutar instrucciones del lenguaje Python
con la diferencia que cuenta con características añadidas muy interesantes,
como el autocompletado o el operador ?,
aunque para activar la opción de autocompletado en Windows es necesario
instalar PyReadline, el cual
instalaremos a continuación.
Oscar.
Python - PIP 1.3.1
El
siguiente paso consiste en instalar el instalador pip que nos permitirá descargar
e instalar paquetes y librerías que pudiéramos necesitar para el entorno de
desarrollo de Python de manera sencilla y rápida sin la necesidad de tener que
buscarlos en la red.
Para
ello, lo descargaremos de la siguiente página:
Seleccionamos
el marcado en rojo que se corresponde con la versión de pip 1.3.1 para la
versión de Python 2.7.5 y para Windows de 32 bits.
Una
vez descargado el instalador, pip-1.3.1.win32-py2.7.exe,
lo ejecutamos desde la misma carpeta donde se haya descargado en el ordenador,
iniciándose un asistente que nos guiará por la instalación. Pulsamos el botón
de ejecutar.
Esta ventana solo presenta información
de la versión pip 1.3.1 que se va instalar. Pulsamos el botón de siguiente:
Esta ventana informa que pip 1.3.1 se
va a instalar sobre el intérprete de comandos Python 2.7.5 que instalamos en el
paso 2.1, Pulsamos el botón de siguiente:
Esta ventana inicia la instalación. Pulsamos
el botón de siguiente:
Una vez finalizada la instalación
satisfactoriamente cerramos el instalador pulsando el botón de finalizar:
Oscar.
2/7/13
Python (Instalando 2.7.5)
Antes de nada vamos a ver una pequeña introducción de que es Python (basada en la defnición de Wikipedia)
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible.
Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico y es multiplataforma.
Es administrado por la Python Software Foundation. Posee una licencia de código abierto, denominada Python Software Foundation License, que es compatible con la Licencia pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones anteriores.
Esta ventana nos solicita si la
consola se instalará para todos los usuarios o solo para usuario activo que ha
ejecutado la instalación. Para este caso se instala para todos los usuarios y
pulsamos el botón de siguiente:
Para una correcta instalación de un ambiente de desarrollo Python, debemos seguir este orden, después de haber instalado el interprete de Python:
- Python - SETUPTOOLS 0.9.5 instalación de un paquete que permitirá descargar, instalar, actualizar o desinstalar paquetes Python mediante el comando easy_install.
- pip-131 instalador pip que nos permitirá descargar e instalar paquetes y librerías para el entorno de desarrollo de Python de manera sencilla y rápida sin la necesidad de tener que buscarlos en la red.
- iPython 0.13.2 intérprete de comandos de Python mas potente que el que viene por defecto con Pyhton 2.7.5.
- PyReadline 2.0 característica de autocompletado de iPython.
Podemos ver la entrada Paquetes de Python donde vienen enunciados algunos paquetes y/o módulos que nos pueden interesar.
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible.
Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico y es multiplataforma.
Es administrado por la Python Software Foundation. Posee una licencia de código abierto, denominada Python Software Foundation License, que es compatible con la Licencia pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones anteriores.
Descarga e instalación de Python 2.7.5
El
primer paso consiste en descargar e instalar el intérprete de comandos de
Python, imprescindible para poder empezar a trabajar con el lenguaje. Para
ello, hay que descargarlo de la siguiente página:
Seleccionamos
el indicado en el recuadro rojo que se corresponde con la versión de Python
2.7.5 para Windows de 32 bits.
Existe
otra versión posterior de Python, la 3.3.2. Pero como indican en la página,
existe todavía software de terceros que no es compatible con esta versión.
Una
vez descargado el instalador, python-2.7.5.msi,
lo ejecutamos desde la misma carpeta donde se haya descargado en el ordenador,
iniciándose un asistente que nos guiará por la instalación. Pulsamos el botón
de ejecutar.
Esta ventana nos informa del
directorio por defecto donde se va instalar Python 2.7.5, teniendo la
posibilidad de cambiarlo. Para este caso vamos a dejar el directorio que viene
por defecto y pulsamos el botón de siguiente:
Esta ventana proporciona la posibilidad
de seleccionar que características de Python queremos instalar. Para este caso
la dejamos tal cual aparece por defecto y pulsamos el botón siguiente:
Esta ventana se inicia la instalación
de Python 2.7.5 y nos informa del progreso de la instalación:
Una vez finalizada la instalación
satisfactoriamente cerramos el instalador pulsando el botón de finalizar:
Ya podemos trabajar con Pyhton. Podemos
comprobarlo ejecutando el archivo python.exe,
que se encuentra en la carpeta donde se ha instalado el programa, en este caso
en C:\Python27, lanzándose la ventana
del de interprete de comandos:
Desde este intérprete ya se pueden
ejecutar instrucciones del lenguaje Python como aparece en el ejemplo de
arriba:
>>> Print “Hola
Mundo”
>>> Hola Mundo
Para una correcta instalación de un ambiente de desarrollo Python, debemos seguir este orden, después de haber instalado el interprete de Python:
- Python - SETUPTOOLS 0.9.5 instalación de un paquete que permitirá descargar, instalar, actualizar o desinstalar paquetes Python mediante el comando easy_install.
- pip-131 instalador pip que nos permitirá descargar e instalar paquetes y librerías para el entorno de desarrollo de Python de manera sencilla y rápida sin la necesidad de tener que buscarlos en la red.
- iPython 0.13.2 intérprete de comandos de Python mas potente que el que viene por defecto con Pyhton 2.7.5.
- PyReadline 2.0 característica de autocompletado de iPython.
Podemos ver la entrada Paquetes de Python donde vienen enunciados algunos paquetes y/o módulos que nos pueden interesar.
Oscar
Suscribirse a:
Entradas
(
Atom
)

















