Web Scraping: urls de ayuntamientos de Gipuzkoa

Bien, sigamos con nuestra miniserie. Necesitamos tener una hoja de cálculo con los nombres de los municipios de Gipuzkoa en una columna y las URL de los ayuntamientos de dichos municipios en la columna adyacente. Ayer vimos que eso es viable y más o menos «automatizable», siempre que dispongamos de algún servicio que nos proporcione la URL de un municipio dado su nombre como parámetro.
La información en bruto la podemos encontrar en esta web de EUDEL. El objetivo es «recortar» esa información para guardarla en una simple tabla de una base de datos (usando MySQL como SGDB). Para ello, creamos primero el esquema de nuestra tabla municipios, donde guardaremos la información:


CREATE TABLE `municipios` (
`ID` int(11) NOT NULL auto_increment,
`nombre` varchar(200) NOT NULL default »,
`url` varchar(200) NOT NULL default »,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Un simple script PHP hará el resto:


(.*)<br><a(.*)>(.*)</a></li>/», $linea, $trozos); // expresión regular para sacar nombre_URL
$i = 0;
foreach ($trozos[1] as $nombre) { // recorremos el resultado de la expresión regular
$url = $trozos[3][$i];
$sql = «insert into municipios
set ID=», nombre=’$nombre’, url=’$url'»;
mysql_query($sql) or die(«Error:» . mysql_error()); // guardamos lo obtenido en la tabla municipios
echo $sql . «n»;
$i++;
}
?>

Una vez guardadas las tuplas (nombre, url), sólo nos queda crear el servicio php correspondiente:

0){
$linea = mysql_fetch_array($result);
echo $linea[‘url’];
}
?>

Ok! Todo funciona. ¿Y para qué quiero esos datos? Pronto lo veréis…

Masajeando Google Docs y Wikipedia (II)

Sigamos donde lo dejamos. El objetivo ahora es conocer la url del ayuntamiento de cada municipio de Gipuzkoa y colocar esa url en la celda correspondiente (ver imagen de la izquierda)

Para ello, necesitamos algún servicio que dado un nombre de municipio nos devuelva la url del ayuntamiento. Supongamos que tenemos uno en DiarioLinux (bueno, no supongamos, sea):

http://www.diariolinux.com/municipios/locate.php?municipio=XXXXXX

Donde XXXXXX es el nombre de un municipio (no hace falta que sea exacto… si ponemos Arrasate, nos saldrá la URL del ayuntamiento de Arrasate-Mondragón, sin problemas).

Ahora, ¿cómo decirle a Google Docs que en la celda D3 ponga la URL del municipio que indico en A3? Fácil. Nos colocamos en D3 y escribimos la siguiente fórmula:

=ImportData(«http://www.diariolinux.com/municipios/locate.php?municipio=»&A2)

¿Qué hemos hecho? Hemos construído una URL concatenando las cadenas «http://www.diariolinux.com/municipios/locate.php?municipio=» y el contenido de la celda A2 («Aduna») para formar:

http://www.diariolinux.com/municipios/locate.php?municipio=Aduna

Ese «servicio web» devuelve la url «www.aduna.net». Estiramos hacia abajo desde el manejador de la esquina inferior derecha de la celda D3 y ya tenemos nuestra hoja completita para seguir trabajando.

Epígrafe: «¿cómo has conseguido crear el servicio locate.php en DiarioLinux?» Mediante técnicas de web-scrapping que veremos mañana 😉

Linux Magazine Nov 2008

# DVD: Mandriva 2009.0
# Portada: Trucos Web: Los diseñadores web siempre andan a la búsqueda de maneras de aumentar su productividad. Este mes exploraremos trucos para conseguir páginas más efectivas
# Portada: Para Dejar Huella: Los trackbacks suponen un modo sencillo de conectarse y compartir información entre bloggers.
# Portada: Trucos con Estilo: Las Hojas de Estilo en Cascada (CSS) pueden hacer mucho más que definir el color y tipo de letra de su página Web. Os mostramos cómo implementar la potencia de las CSS en sus creaciones Web.
# Portada: Conejo Veloz: Con Jackrabbit ahorramos tiempo en el desarrollo web. Se trata de una implementación en código abierto del estándar Java Content Repository.
# Portada: Balanceado: Los requerimientos actuales de rendimiento y disponibilidad de la web hacen indispensable el balanceo de la carga. En este artículo, vamos a mostrar cómo configurar un sistema de balanceo de carga utilizando las características que vienen con el servidor web Apache.
# Evaluación: Defensa Móvil: Esta máquina Linux del tamaño de un stick USB actúa como un pequeño cortafuegos móvil.
# Evaluación: ¡Optimizado!: El último GCC 4.3 está destinado a hacerse con el mundo de la programación gracias a sus nuevas optimizaciones, al soporte experimental para la próxima generación de C++ 0x, una STL opcional de C++ concurrente, y un nuevo compilador de Java cortesía del proyecto Eclipse.
# Práctico: A lo Grande: Son muchas las empresas que aún dependen de mainframes, lo que hace más difícil que podamos echar mano de ellos e instalarles Linux. El emulador Hercules nos plantea una buena alternativa.
# Práctico: Tal Como Eramos: La herramienta Flyback, basada en rsync, crea automáticamente capturas de directorios críticos a intervalos regulares; y cualquier usuario normal puede restaurar la copia de seguridad con sólo unos clicks de ratón.
# Práctico: Muy Capaz: Si no deseamos concederle el acceso de root a cualquier programa que necesite privilegios extras, podemos utilizar las capacidades POSIX en vez de utilizar los bits «s».
# Desarollo: ¡Desarrollo Rápido!: Jose María Ruíz nos enseña como contentar al cliente que quería la aplicación con interfaz gráfica para ayer.
# Desarrollo: Portfolio: Este mes os mostramos un script en Perl que nos ayuda a dibujar gráficos de área para seguir el comportamiento de nuestra cartera de acciones.
# SysAdmin: La Máquina Lechera 2.0: El uso de SQL para obtener los datos del registro del sistema de una base de datos se conoce universalmente, pero es una solución bastante enrevesada. phpLogCon, con su interfaz web, brinda a los administradores una opción más sencilla.
# SysAdmin: Envío Certificado: Server Name Indication nos permite operar más de un servicio protegido por SSL por dirección IP.
# Linux User: Creatividad Pura: Inkscape siempre ha sido bueno, aunque ahora la versión 0.45.1 de este programa de dibujo vectorial presenta un aspecto creativo totalmente nuevo.
# Linux User: Ritmo: Originalmente inspirado en los iTunes de Apple, Rhythmbox organiza nuestra colección de música y más.
# Linux User: Trucos Mentales: Aprendemos cómo llegar a dominar las funcionalidades avanzadas de la aplicación de mapeo mental FreeMind para sacarle todo su jugo a esta útil herramienta.
# Linux User: Trileros: Un juego de azar con Squeak que te puede dejar sin blanca.
# Linux User: Sus Labores: ¿Qué está pasando en nuestra máquina Linux? Varios comandos de la shell nos dan detalles sobre los procesos del sistema y nos ayudan a controlarlos.
# Linux User: Adanaxis: Aquéllos que carezcan de «visión 3D» quizás no deberían embarcarse en este viaje interestelar pilotando la peculiar nave de Adanaxis, capaz de moverse libremente en 4 dimensiones.
# Comunidad: El Consultorio De Klaus: Si tienes algún problema de configuración, o simplemente quieres conocer mejor cómo funciona Linux, pregúntale a Klaus Knopper, el creador de Knoppix. Este mes: Dos tarjetas de audio, Linux Raid y FTP.
# Comunidad: Linux Legal: Jose María Lancho, fundador de LegalVenture y secretario de HispaLinux, responde a las dudas legales de los lectores. Este mes: El estado de la GPl en los tribunales.
# Comunidad: Perro Viejo: Jon «Perroloco» Hall se presenta a sí mismo y nos comenta su nueva columna sobre la comunidad.

Linux+ Noviembre 2008

Linux+ 11/2008: Tema de portada: Linux en la educación y formación

En el DVD adjunto encontraréis:
# Scientific 5.2: Distribución diseñada para educación científica

Artículos:
* Plataformas de e-learning: diferencias y similitudes entre varias soluciones libres
* Crea tu propia distribución: Con nuestras instrucciones es fácil
* Dspace: Construyendo repositorios de información y conocimiento
* Atari: Reviviendo el computador en Linux
* Edubuntu: Linux para alumnos
* Google Translation: Aprovechando el poder de Google en tus aplicaciones web
* 11 reglas para tener una web exitosa
* Google Chrome

Masajeando Google Docs y Wikipedia

¿Cuál es la lista completa de municipios de Gipuzkoa – con sus nombre en euskera- y sus respectivos datos sobre el número de habitantes ? Esa información está en la Wikipedia. ¿Podríamos tener esa misma información en una hoja de cálculo? Éso es fácil, basta con copiar y pegar. Ya… entiendo. Pero, y si la Wikipedia actualiza sus datos, ¿qué pasa con mi hoja de cálculo? Pues que se queda sin actualizar, obsoleta. ¿Y no podría ser que la hoja de cálculo tuviera un vínculo automático con la Wikipedia de tal forma que, cuando la Wikipedia actulice el número de habitantes de un municipio, la hoja de cálculo también se actualizara automágicamente? Sí, se puede hacer de distintas formas. Una de ellas es a través de las hojas de cálculo de Google Docs. Basta con poner en una de las celdas (A1, por ejemplo) la siguiente fórmula:

=ImportHTML(«http://eu.wikipedia.org/wiki/Gipuzkoako_udalerrien_zerrenda»;»table»;1)

La fórmula ImportHTML toma 3 parámetros. El primero indica la URL de la que quieres extraer información. En este caso, de la página de la Wikipedia en Euskera que indica Municipios/NumHabitantes de Gipuzkoa. Lo siguiente puede ser «list» o bien «table», indicando que queremos extraer la información de una lista de elementos o bien de una tabla que forma parte de la URL anterior. El último parámetro específica de qué lista o tabla exactamente estamos hablando (de la primera tabla que aparezca en la URL en nuestro ejemplo). Google recortará la información de dicha tabla y la pegará en nuestra hoja de cálculo. Si Wikipedia actualiza, cuando abramos nuestra spreadsheet, veremos las novedades. Magia.