Buscando artículos sobre " Programación"
10-diciembre-2015
admin

Descargar imágenes de la web usando Python

Existen distintos métodos para descargarse imágenes de la web desde una aplicación python. A continuación vamos a exponer dos ejemplos:

Ej 1/ Utilizando el módulo httplib

import httplib

...

'''
   Se conecta con el servidor y se hace la petición de la imagen
'''
conn = httplib.HTTPConnection("www.url.com")
conn.request ("GET", '/img/imagen.jpg')
r = conn.getresponse()
	
'''
    se guarda la imagen en disco mediante la creación de un fichero
'''
fichero = file( '/home/img/imagen.jpg', "wb" )
fichero.write(r.read())
fichero.close()
...

Ej 2/ Utilizando los módulos PIL, urllib y StringIO

from PIL import Image
from urllib import urlopen
from StringIO import StringIO
 
'''
   Se descarga la imagen y se almacena en una cadena
'''
URL = 'http://www.url.com/img/imagen.jpg'
data = urlopen(URL).read() 

'''
   Se convierte a fichero con StringIO y luego se convierte en imagen
'''
file = StringIO(data) 
img = Image.open(file) 

'''
   Se almacena en disco
'''
img.save('/home/img/imagen.jpg')
5-diciembre-2015
admin

Groovy Goodness: Porque groovy no es java sin punto y coma

Charla bastante interesante para conocer groovy. Realizada en el Codemotion Madrid 2014 por Pablo Alba.

Slideshare

30-noviembre-2015
admin

Python throws UnicodeEncodeError

Documentación oficial Caracteres Unicode en Python

Ejemplo:

'''
   Se declara una variable con caracteres unicode
'''
>>> u = unichr(40960) + u'abcd' + unichr(1972)
>>> u.encode('utf-8')
'\xea\x80\x80abcd\xde\xb4'


'''
   Se aplica un encode ASCII para la conversión de la variable. 
   Se puede ver que falla.
'''
>>> u.encode('ascii')                       
Traceback (most recent call last):
    ...
UnicodeEncodeError: 'ascii' codec can't encode character u'\ua000' in
position 0: ordinal not in range(128)


'''
   Se vuelve a aplicar diciéndole que ignore los caracteres unicode
   superiores a los 8 bits (127)
'''
>>> u.encode('ascii', 'ignore')
'abcd'


'''
   Se vuelve a aplicar diciéndole que reemplace esos carácteres por 
   U+FFFD (REPLACEMENT CHARACTER)
'''
>>> u.encode('ascii', 'replace')
'?abcd?'


'''
   Se vuelve a aplicar reemplazándo esos caracteres por su equivalente html.
'''
>>> u.encode('ascii', 'xmlcharrefreplace')
'& #40960;abcd& #1972;'
25-noviembre-2015
admin

Módulo de python para traducciones: Goslate

Google Translate tiene un API que permite usar el traductor desde un programa, en el caso de Python se tiene goslate.

Documentación oficial de Goslate

Para utilizarlo basta con instalarlo.

pip install goslate

Ejemplos de uso

1/ Detectar el lenguaje

import golsate
gs = goslate.Goslate()
language_id = gs.detect('hallo welt')
language_desc = gs.get_languages()[language_id]

language_id = de
language_desc = German

2/ Traducir una palabra al español

import golsate
gs = goslate.Goslate()
word = gs.translate('hello','es')

word = hola

Nota: Otra opción en python puede ser utilizar Translate API Client Library for Python

21-noviembre-2015
admin

Ejemplo de uso de SQlite3 con Python

SqLite es un paquete de software de dominio público que proporciona un sistema de gestión de base de datos relacional.
Documentación oficial de SQlite3 en python 3.5

Ejemplo sencillo de uso:

import sqlite3
....
con = sqlite3.connect('C:\\base_datos.db')
cursor = con.cursor()
print 'Conectado a la BD base_datos.db'
....
self.cursor.execute('''CREATE TABLE IF NOT EXISTS COMMENT(
                    id    INT    NOT NULL,
                    comment    TEXT    NOT NULL,
                    user    TEXT
                    )''')
print 'Creada la tabla Comment'
....
str2 = "INSERT INTO COMMENT (id, comment, user) "
str2 = str2 + "VALUES (?, ?, ? )"
self.cursor.execute(str2, (1, "comentario realizado", "pedro"))
print 'Comentario insertado correctamente'
....
self.cursor.execute("DROP TABLE IF EXISTS COMMENT")
print 'Borrada la tabla Comment'
....

Nota: Al intentar conectar a la base de datos si no existe se creará con el nombre y la ruta que se especifique.

19-noviembre-2015
admin

Web Scraping en Python con Requests y lxml

El módulo Requests simplifica el manejo HTTP, mientras que lxml se utiliza para procesar los documentos HTML.

– Documentación oficial lxml
– Documentación oficial requests

Instalación de las librerias.

python -m pip install -U pip
cd C:\Python27\Scripts
pip install lxml
pip install requests

Ejemplo de uso:

page = requests.get("http://url.com")
tree = html.fromstring(page.text)
table = tree.xpath('//table[@id=”prueba”]')
print 'Total de tablas con id=prueba ', len(table) 
10-septiembre-2015
admin

Cumplir legislación europea para el uso de cookies

Por ley estamos obligados a avisar al usuario del uso de cookies para su conocimiento. A continuación, algunas formas de adaptarnos a ello:

Para WordPress
Existen numerosos plugins que te permiten incorporarlo… uno de ellos es Cookie Notice. Bastante sencillo y fácil de utilizar. https://wordpress.org/plugins/cookie-notice/

Apps Android
Una solución bastante sencilla sería añadir una pantalla inicial avisando del uso de cookies.
Ejemplo de creación de pantalla de inicio: http://gerardoperrucci.com.ar/android/como-crear-un-pantalla-de-inicio-de-nuestras-app

Webs Personales
Se puede mostrar el mensaje de advertencia de forma manual en un sitio visible con un botón para aceptar. Almacenando en una cookie que ya se han aceptado las políticas de uso de cookies, para que deje de salir el mensaje.

function controlcookies() {
	document.getElementById("cookie1").innerHTML = "";
	createCookie('aviso_politicas_web', 1, 30);
}
function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) 
              return c.substring(nameEQ.length,c.length);
    }
    return null;
}
    < p id="cookie1" style="text-align:center;width:100%;">
    Utilizamos cookies para asegurar que damos la mejor experiencia al 
usuario en nuestro sitio web. Si continúa utilizando este sitio
asumiremos que está de acuerdo.
    < button onclick="controlcookies()">Aceptar< /button>
    < /p>
    < script type="text/javascript">
	var aviso_nueva_web = readCookie('aviso_politicas_web');
	if(! (!aviso_nueva_web || (aviso_nueva_web == '')) ) {
		controlcookies();
	}
    < /script>
9-agosto-2015
admin

Timeout con nusoap

En la librería NuSOAP el tiempo de espera predeterminado es de 30 segundos. Cuando se realizar un servicio con tiempos de ejecución superiores el servicio devolverá un timeout.

Para solucionarlo basta con aumentar el tiempo de espera de respuesta para resolver este problema. Para ello se puede modificar directamente el fichero nusoap.php añadiendole el número de segundos que se precisen a la variable $response_timeout.

$response_timeout = 400;
25-junio-2015
admin

Crear una sencilla cuenta atrás con javascript

Para este ejemplo suponesmos que el id «cuentaAtras» se corresponde por ejemplo con un div.

    var totalTiempo=50;//total de segundos a contar
	
    function actualizaCuenta(){
        document.getElementById('cuentaAtras').innerHTML = totalTiempo;

        if(totalTiempo==0) {
           document.getElementById('cuentaAtras').innerHTML = "FIN";
        }else{
            totalTiempo-=1;
            setTimeout("actualizaCuenta()",1000);

        }

    }

    window.onload=actualizaCuenta;
18-junio-2015
admin

Plugins para poner posts autómaticos en wordpress

Auto Post Scheduler
Te permite publicar nuevos mensajes y/o reciclar los mensajes antiguos, de forma automática. No hay necesidad de programar tiempos de correos de forma individual.

Es especialmente útil para la importación de un gran número de mensajes, se configurar para publicar con cualquier frecuencia que se elija.

Auto Post After Image Upload
Te permite crear un post automático al subir una imagen a la galeria de medios.

Páginas:«123456789...15»

Categorias

Linkedin