domingo, 2 de enero de 2011

Analizando las 130 mil obras del Gobierno (Parte II: Analizando el código html)

Como les mencionaba, mi experiencia con Perl y con objetos es muy baja, sé que a muchos programadores expertos se les ocurrirá usar módulos XML DOMDocument en cualquier lenguaje, Perl, Python, PHP, etc. sin embargo mi meta era hacer todo esto rápidamente y eso dependía del código fuente de estos archivos descargados.

Después de minutos rebanándome los sesos, al fin pude encontrar la respuesta a a todo esto, encontré un camino fácil para procesar rápidamente todo ese código HTML sin necesidad de utilizar librerías adicionales.

Tablas anidadas, títulos en filas, etiquetas y el contenido primordial...

El hecho que sea una página simple ayuda, el asunto era cómo automatizar sin mucho esfuerzo toda esa data sin requerir ayuda divina. Para facilitarme el análisis tomé los archivos obra-99-1.html, obra-99-2.html y obra-99-3.html generados al descargar las 3 páginas de la región 99 (Multidepartamental) si vieron mi post anterior. Resumiré la estructura del código HTML como la siguiente:

******************************



******************************
Como se observará hay dos tablas dentro de una en cada página web, con la pecularidad que la primera no nos sirve, pero la segunda si, a su vez en la segunda tabla, la más importante, hay 4 filas poco frecuentes pero muy importantes para determinar la Región, la Provincia y el Sector en el que se efectúa la obra, las siguientes son filas que especifican cada obra. Una de las cosas que sucede es que a veces la fila Provincia vuelve a aparecer para enumerar las "obras" para otra provincia.

Con esto ya tenía en mente qué reglas utilizar para procesar los 2462 archivos HTML sin perder la información. La clave estaba en las etiquetas de fila.

Pérdida de la información
Cuando se trata de pasar información de un medio a otro muchas veces se deben cambiar las estructuras y la forma de representación real de los datos. Ese problema tenía con las comas utilizadas en los montos en nuevos soles S/. que estaban indicados por obra, pues verán que enteros con comas no los acepta MySQL y en excel hay problemas de acuerdo a la región geográfica en la que uno se encuentra.

En mi siguiente post revelaré el script en perl de procesado de datos para generar un archivo de texto con separación de tabulaciones y uno para generar un script para MySQL.

No hay comentarios:

Buscar:

Se ha producido un error en este gadget.