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')
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.
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;'
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
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.
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)
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>
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;
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;
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.
Categorias
- adobe (2)
- agile (1)
- Alfresco (1)
- Android (26)
- Angular (6)
- angularjs (10)
- apache (1)
- axis (2)
- Bases de datos (14)
- Bootstrap (1)
- C# (3)
- Cámara (1)
- chrome (3)
- Codeigniter (2)
- Control de Versiones (2)
- CSS (25)
- CVS (1)
- Django (9)
- Django Rest Framework (1)
- DNS (1)
- Docker (3)
- dominio (1)
- eclipse (5)
- Entity Framework (2)
- ETL (1)
- Firefox (6)
- flash (1)
- freecad (1)
- Git (12)
- GitHub (4)
- gpg (2)
- Groovy (1)
- Handlebars (1)
- hibernate (4)
- hosting (1)
- HTML (50)
- HTML 5 (26)
- Impresión 3D (9)
- Inkscape (1)
- IOS (2)
- ireports (3)
- Java (44)
- Javascript (55)
- JBoss (5)
- JPA (2)
- JQuery (20)
- Json (7)
- JSP (6)
- Keycloak (1)
- Lamp (1)
- LDAP (2)
- lean (1)
- linkedin (1)
- LINQ (1)
- linux (13)
- Livecycle (1)
- log (1)
- microcontroladores (1)
- MongoDB (4)
- MySQL (8)
- Node.js (5)
- OC4J (1)
- Openshift (2)
- Oracle (6)
- Patrones de Diseño (1)
- Photoshop (2)
- php (20)
- PostgreSQL (1)
- python (19)
- rabbitmq (1)
- Raspberry PI (13)
- Raspherry PI (5)
- React (6)
- seguridad (3)
- Selenium (3)
- Sencha Touch (1)
- Sin categoría (29)
- Spring (17)
- spring-boot (3)
- SQL (7)
- SQLServer (1)
- SSO (1)
- struts (2)
- SVN (1)
- Talend (1)
- Tomcat (6)
- unity (3)
- Visual Studio Code (2)
- vmware (5)
- Web Services (11)
- windows (18)
- wordpress (10)
- Xiaomi (1)
- xml (2)
Trabajos Realizados
- App Android – Autoka Fr
- App Android – Cartelera Cántabra
- App Android – Gramática y Vocabulario Ingles
- App Android – Hoja de Gastos
- App Android – Hotel Torre Cristina
- App Android – OcioEnjoy
- App Android – Visor CardBoard
- App Firefox – Managapp
- DiamanteBomba – DisasterCode
- Generador de Partes de Trabajo
- GitHub – Android Web Generator
- GitHub – Dynamic Angular Gallery
- GitHub – Dynamic React Gallery
- GitHub – Sotilizator
- GitHub – SpringAngularJS
- GitHub – Swiper Dynamic Angular Gallery
- HazParejas – DisasterCode
- RompeCabezas – DisasterCode
- Unity Game – English Couple
- Unity Game – Kill Wasp
- WordPress – El Buen Apicultor
- WordPress – El Cajón de los Retales
- WordPress – El Vestidito Azul
- WordPress – Feuchas
- WordPress – Fragua de Navajas Ponce
- WordPress – Humor a las Tres
- WordPress – Photo Places