Firefox Developer Edition: Instalación en Manjaro y Arch

Mozilla ha reinventado la rama Aurora de Firefox, dotándola de un IDE integrado en el navegador y otras herramientas ya existentes, orientándolo tanto para el desarrollo en la web como para crear aplicaciones para Firefox OS.

firefox develEsta nueva edición para desarrolladores no trae un conjunto especialmente grande de cambios, pero sin duda las herramientas que vienen por defecto lo hacen bastante atractivo para aquellos que trabajan en el desarrollo web. Algunas páginas también se han hecho eco de la noticia y muestran más a fondo estas novedades.

Si lo que queremos es instalar Firefox Developer Edition en nuestro ordenador, y tenemos instalado Manjaro o Archlinux (o algún derivado) podemos obtener los paquetes del AUR con la compilación de Firefox Aurora. También hay paquetes en otros idiomas, pero muchos de ellos no han sido actualizados a la última revisión.

yaourt -S firefox-aurora

Ala, ¡A pelearse con Javascript se ha dicho!

Saludos 😉

[Python] BeautifulSoup extrae código de una sopa de etiquetas HTML

Es posible que como desarrollador te hayas enfrentado alguna vez al «reto» de extraer información (del tipo que sea) de una página web. Es muy sencillo cuando eres «humano», pero un robot… No, no es tan fácil.

Imaginemos, por ejemplo que quisiéramos almacenar el número de artículos que tiene la Wikipedia en Español en un determinado momento. La forma más fácil es visitar la página destinada a tal efecto y, en la tabla, leer el número correspondiente y escribirlo (por ejemplo, en un archivo de texto). Pero la tarea se puede hacer muy tediosa (y de hecho lo es).

Pero nosotros no estamos aquí para hacer un trabajo de chinos. Para algo existen los cacharros con los cuales estás leyendo esto. Es mas cómodo encargarle esta pesada tarea a un ordenador. Pero, ¿cómo vamos a llevar a cabo nuestra tarea? Para este tipo de problemas existen los «parser», como lo es, en este caso, BeautifulSoup.

Estadisticas Wiki
El elemento td contiene los números que buscamos

Analizemos un poco la estructura de la página. Tiene una tabla, y nuestro valor deseado está dentro de un <td> que está (por suerte) perfectamente definido por un atributo class del tipo: «mw-statistics-numbers». En este caso es muy fácil extraer el texto que contiene los datos que buscamos. Con Python, y usando BS4, se haría así:

from bs4 import BeautifulSoup
import urllib

direcc = "https://es.wikipedia.org/wiki/Especial:Estad%C3%ADsticas"
page = urllib.urlopen(direcc).read()
sopa = BeautifulSoup(page)
articulos_raw = sopa.find('tr',class_="mw-statistics-articles").find('td',class_="mw-statistics-numbers").text
articulos_list = articulos_raw.split(u'\xa0')
numero = int(articulos_list[0]+articulos_list[1]+articulos_list[2])
print numero

Esto imprimirá el número de artículos convertido directamente a tipo entero. Nótese que se extrae una cadena con separación de miles por espacios.

Comentemos un poco el código. La primera línea importa el módulo BS4 (BeautifulSoup versión 4) que utilizaremos en el programa. En la 2ª, 4ª y 5ª línea utilizamos el módulo urllib para descargarnos un fichero de texto plano con el texto html de la página. En la sexta línea es cuando viene la miga: crea un objeto BeautifulSoup con el texto html descargado. En la séptima le pedimos al objeto de BeautifulSoup que encuentre dentro de un elemento tr cuya class es mw-statistics-article otro elemento td cuya class es mw-statistics-numbers. En el resto de las líneas lo que hacemos es crear una lista sin los espacios (\xa0) y luego la unimos, convirtiéndolo a int directamente.

Esta es una breve forma de obtener algo sencillito, pero para cualquier cosa, hay disponible una excelente documentación en el idioma de Shakespeare para hacer casi cualquier cosa. Y si la cosa falla, Google y StackOverflow son buenos amigos.

Os dejo un zip (7z) con el programilla entero, por si alguno le interesa trastear con esto más a fondo 😉

Saludos 🙂