sábado, 22 de enero de 2011

Candidatos al Congreso en Arequipa, otra más

Lamentablemente estamos en una época de vacas flacas en la política. El último lustro ha sido conocido por tener el congreso más escandaloso de los últimos años: Procesados judiciales, parlamentarios calientabancas sin iniciativa y sin trascendencia, funcionarios acusados de corrupción, tránsfugas, etc.
Ser parlamentario parece haberse convertido en un negocio.Ante las denuncias de ventas de candidaturas y las vergonzosas inscripciones de la que uno es testigo ante los medios de prensa, no queda otra más que pedirle a la población que sea más inteligente al emitir su voto, que no nos convirtamos en ese famoso electarado que sólo se dedique a mandar a sinverguenzas al hemiciclo.

Hasta hace dos días tenía conocimiento que las lista de postulantes al Congreso por parte de Arequipa açun sacan ronchas y gracias a Correo tenemos idea de cuales serían sus conformaciones finales:

- Partido Nacionalista (en pugnas): Ana María Solórzano, Tomás Zamudio, Justiniano Apaza Ordóñez, Ritzi Calderón, Carlos Vizcarra. Las sexta posición estaría por definirse...

- Alianza Peru Posible y otros: Gilberto Díaz Peralta, Víctor Urday Manchego, Gino Bravo Ardiles, SAndra Ángela Bolaños de Zenteno, Silvia Valenzuela, Marco Falconí.

Además estaría confirmándose que Yamel Romero sería candidato fijo del sancochado de PPK,y que por Solidaridad Nacional estarían yendo Maribel Ramírez Gallegos y Gustavo Rondón Fudinaga.

Se ruega a la población que a medida que conozcan a los candidatos al congreso por parte de la ciudad blanca se enteren de sus intenciones y planes que llevarán al parlamento, que rogamos que no sean, como ya fuimos testigos, los típicos lamebotas que defienden las leguleyadas del presidente de turno, que queremos evitar baguazos y arequipazos y otros hechos que signifiquen derramamiento de sangre.

Esas malditas ONGs ambientalistas

Últimamente somos testigos de cómo los medios de información, aquellos que viven de la publicidad, publican a diestra y siniestra noticias a toda portada en la que entrevistan a personas del gobierno, y en especial se tocan dos puntos muy trascendentes como son el terrorismo y el problema minero.
Hace minutos acabo de leer la nota en Correo sobre las Charlas dadas por los representantes de la Tía María en Cocachacra y una pequeña observación en Bajo el Volcán.
Sin justificar los detestables actos violentos que hayan podido ocurrir, el fragmento que más me llamó la atención fue:

PROTESTA. Azuzados por los dirigentes antimineros, con apoyo de ONG ambientalistas, al término de la reunión se presentaron un grupo reducido de manifestantes, lanzando basura al interior del colegio.
Habría que preguntarle a los periodistas de Correo ¿Cuáles son los nombres de esas ONGs ambientalistas? ¿Es necesario disparar sin siquiera apuntar a un blanco? ¿Si tienen los nombres de esas ONGs por qué no las publican para que las conozcamos? y los más importante ¿La nota insinua que esas ONGs ambientalistas asesoran legalmente a los manifestantes o los apoya en los actos violentos? en vista de la AMBIGUEDAD con la que escriben dicho párrafo, ambiguedad que permite darle varias interpretaciones.

Hace poquísimos días en Lima se hace contra viento y marea la colosal obra que es el tren eléctrico, algunos medios de prensa denunciaron que se están reutilizando columnas construidas hace más de 20 años atrás, algunas de ellas debieron ser demolidas, utilizaban fierro oxidado para levantar columnas, etc. una serie de observaciones las cuales fueron minimizadas por la empresa y los funcionarios públicos encargados de fiscalizar dicho proyecto.

Lo más grave, y al que lamentablemente muchos de los ciudadanos les importa un comino porque no les afecta, es que se instaló una fábrica de concreto en la zona de la Videna sin poseer un estudio de impacto ambiental. Es decir, que el requisito exigido a TODOS los que trabajan en construcción esta vez fue escandalosamente omitido con el objetivo de culminar el tren eléctrico antes de abril, atropellando el derecho a la salud de los cientos o miles de pobladores afectados, puesto que esos finos polvos que se escapan de esas fábricas pueden ocasionar una enfermedad llamada silicosis.

Y aparecieron los talibanes. Al menos decenas o quizás cientos de ciudadanos se manifestaron a favor de construir rápidamente el tren eléctrico, y otros tantos continuaron lanzando sus ataques hacia esas malditas ONGs que lo único que saben es traer problemas... ¿Pero acaso saben cómo funciona una ONG?

Esa ONG que hizo la denuncia la realizó de acuerdo a leyes y ordenanzas vigentes, esa ONG se dió la tarea de consultar y especialmente de asesorar legalmente a aquellos ciudadanos afectados por este atropello del Poder Ejecutivo, al igual que muchas ONGs lo hacen con muchos otros tantos afectados por diferentes actividades, eso incluye también a la minería, explotación petrolera y gasífera, entre otras actividades extractivas.

¿Por qué las ONGs meten sus narices en esto? Pues si una comunidad tiene un problema que involucra un impacto ambiental pregúntate ¿Vas a encontrar a esos especialistas con la misma facilidad que encuentras a abogados civiles, penales o laborales? Lamentablemente no porque los casos son pocos, son casos largos y eso no "da dinero para sobrevivir".

Por esa razón especialistas en derecho buscan financiamiento internacional para brindarle el apoyo respectivo a esos grupos humanos que tanto lo necesitan.

Si no tienes idea de lo que te digo, mejor revisa otros artículos importantes como David contra Goliath: un ecuatoriano contra la gran petrolera Chevron (Texaco), Petróleo para nosotros, crudo para ellos, etc.

Naturalemente posiblemente existan aquellos vivos que usan sus ONGs para negocios particulares, por ejemplo imagínense que hipotéticamente existe un conocido político que tenga una ONG para apoyo de discapacitados y la utilice para haer sus negocios inmobiliarios, etc.

miércoles, 12 de enero de 2011

Inscripciones para la XXX Convencion Minera

Según informa diario Correo:

Las inscripciones para PERUMIN – XXX Convención Minera se iniciaron ayer, invitando a los interesados a formar parte de este megaevento internacional; podrán inscribirse por primera vez ingresando a: www.convencionminera.com, solicitando información a inscripciones@iimp.org y/o comunicándose a la central telefónica 349–4262 anexos 391, 394, 371.

Este evento, organizado cada dos años por el Instituto de Ingenieros de Minas del Perú (IIMP) desde 1954, es el foro minero y empresarial de mayor trascendencia a nivel mundial, y esta trigésima edición se llevará a cabo del 12 al 16 de setiembre en el campus del Instituto Tecnológico (Tecsup) de Arequipa.

“Como organizadores nos hemos trazado, para esta edición, metas ambiciosas de expansión”, dijo Oscar González Rocha, presidente de PERUMIN – XXX Convención Minera.

domingo, 9 de enero de 2011

Arequipa: Candidatos para el Congreso... triste realidad

La Universidad Nacional de San Agustín de Arequipa acaba de publicar los resultados de una encuesta para conocer las preferencias electorales de los arequipeños para el congreso. La síntesis de los resultados los puede leer en diario Correo.

Para desgracia nuestra y de otras regiones, tenemos la triste tendencia de elegir a desconocidos, intrascendentes, interesados y gente no preparada para asumir la gran responsabilidad de hacer las leyes para el pueblo, de decidir las sanción sobre otros congresistas, de analizar y determinar las necesidades que tienen diferentes áreas en nuestra nación.

Tuvimos desagradables experiencias con ejemplos como Alvaro Gutierrez y Rocio Gonzales, pero lejos de aprender lo único que hacemos es caer en el error de regalar el voto a quienquiera-que-nos-parezca-bueno sin siquiera tener idea de los escándalos acaecidos con personajes de nuestro hemiciclo.

Según Correo, por el momento las preferencias electorales se inclinan por:

- Juan Carlos Eguren: El mismo que siendo congresista aprovechaba su cargo para "alertar" a la población del resurgimiento del terrorismo y del radicalismo. Gracias a Google sabemos que en el Perú el tema del terrorismo alcanza picos de búsqueda antes de cada proceso electoral y curiosamente NADIE habla de ese problema entre fines de año y época de verano. Hay congresistas que creen que los pobladores somos tontos. Otro de sus grandes méritos es oponerse a la distribución gratuita de la píldora del día siguiente por parte del Ministerio de Salud (hay cada creencia religiosa). Recordemos que la bancada de Unidad Nacional junto a los fujimoristas y a los apristas se oponían radicalmente al debate que pudo haber evitado el Baguazo... podemos ver más sobre sus leyes aprobadas en el Congreso. Sin embargo, se le ve como a un congresista más preocupado por Lima que por Arequipa.

- Marco Falconí Picardo: El mismo que ya está confirmado por la alianza que encabeza Perú Posible, increible que un partido que se considera presidenciable deba buscar políticos con intención de voto después de un proceso electoral. Conocido por las adquisiciones hechas en el Club Internacional, y negarse en todos los idiomas conocer al involucrado en los terrenos inservibles adquiridos (yo soy testigo ocular y afectado por el problema de la Federación Bancaria). Mi más cercano recuerdo a su posible triunfo en la regional se debía en especial a una de las encuestadoras que El Buho investigó. Bueno, Google explica más sobre Marco Falconi (a leer).
Yo veía a Perú Posible como el mal menor, sin embargo y en vista que los cadáveres políticos que dejó la el movimiento de la chakana vuelven a la vida y en Arequipa más han buscado a gente conocida que a gente nueva con proyectos reales a la mano, desde hace tiempo me he dado cuenta que Alejandro Toledo no ha aprendido y sencillamente para mí ya no es alternativa para el Gobierno.

- Lourdes Mendoza del Solar: Totalmende desaparecida. Evidentemente votando a favor de las tapaderas apristas (Tula Benites, Baguazo, Petroaudios, etc.) en algunas de las cuales tuvieron que retroceder ante la presión ciudadana. Lo peor de todo es cuando no se tiene la preparación debida, porque de nuestros bolsillos, impuestos que pagamos para pagar mantener a nuestra sociedad, terminan contratando asesores. De todos modos estamos ante una prueba viviente de que no se necesita ser un brillante estudiante para llegar a lo más alto de la política... La frase "quien estudia, triunfa" ya perdió validez en el Perú...

- Gustavo Rondón Fudigana: Ha intentado alcanzar algún logro democrático con diferentes bancadas políticas, sin éxito. Sin más información al respecto, pero es prueba viviente que los movimientos políticos nacen, crecen, mueren y luego se transforman. Mejor dicho: ¿Existe algún político cuyo movimiento o alianza tenga más de 5 años?

- Justiniano Apaza Ordóñez: Dirigente nacional de camioneros, Al menos se conoce un artículo en el cual hace observaciones en torno a los aportes mineros y el famoso óbolo. He encontrado una denuncia periodística en diario El Comercio sobre agresiones contra funcionarios públicos que llevaban a cabo el ineficiente programa Tolerancia Cero .Sin más información. Ver más en Google.

- Jaime Candia Aguilar: Empresario en el rubro de las computadoras. Su empresa participa en licitaciones para diferentes municipios y organismos públicos. Lo más extenso que he podido encontrar ha sido este hilo de discusión en el blog Encuestas Arequipa y una pequeña nota de El Buho. Ver más en Google.

Así es el primer panorama político, dentro de una semana tendremos idea real de los candidatos que van a tentar una curul en el Congreso. Viva la informalidad y las alianzas acomodadas.

sábado, 8 de enero de 2011

Que el apra no alcance el 5% en estas elecciones

Hace años atrás los principales partidos políticos se coludieron para sacar una ley que dejaba una valla del 5% que debían alcanzar los movimientos políticos para no perder su inscripción ante el Jurado Nacional de Elecciones.

Precisamente estos partidos han sido los que más frecuentemente aparecían en los diarios cuando saltaba algún escándalo de corrupción.

El partido más sinverguenza es el aprista: Después de los petroaudios, baguazos, concesiones mineras y petroleras en todo el Perú afectando reservas y zonas arquológicas, tráfico de terrenos y crecimiento de la delincuencia pretenden hacerse un lavado de cara y presentarse a las elecciones para mantener en el congreso a sus principales dirigentes e intrascendentes funcionarios públicos como Mercedes Cabanillas, Mauricio Mulder, Carlos Arana, etc. y eso sin contar las innumerables denuncias a nivel de organismos regionales (Salud, Educación, Trabajo, etc)

El mejor castigo que se le puede dar a tan corrupto movimiento es evitar que la tenga fácil en las siguientes elecciones no dejando que alcancen el 5 % de votos para estas elecciones:

Que el 2011 el APRA no supere el 5%

jueves, 6 de enero de 2011

¿Alza del gas? Exportan el gas de Camisea a precio de regalo...

Teniendo una enorme veta de gas como Camisea no se nos ha ocurrido la mejor alternativa que exportarlo a un precio de regalo, para ver que contentos y alegres los productos de primera necesidad suban de precio y que hayamos experimentado diferentes temporadas de escasez de gas.

Sube el gas pese a que tenemos Camisea ¿Llegará el momento en el que se deba volver a cocinar a leña?

Para colmo, los principales actores que permitieron que se exportara esta sustancia clave, energética, se autodenominan presidenciables o como la mejor opción para ser presidentes: Pedro Pablo Kuczinsky, Alejandro Toledo y Mercedes Aráoz.

Con el gas a precio de regalo en beneficio de empresarios extranjeros y a precio de lujo para nosotros, no me hace más que recordar que Fujimori quería que se explotara Camisea en beneficio nuestro, por eso presionó al entonces consorcio Shell-Mobil para que antes del año 2000 hiciera caminar a Camisea y optara por la tercera reelección.


No soy fujimorista, pero quizás las personas deban reflexionar muchas veces que los que nos gobiernan deben tomar decisiones en beneficio nuestro, quienes los hemos llevado al sillón presidencial.

Impulsando una nueva idea

Durante meses me he matado buscando información de lo que se vende o comercializa en Arequipa y pese a tener referencias como Mercado Libre, o algunas otras páginas que no están orientadas necesariamente a la ciudad blanca, estoy impulsando un blog el cual estará actualizado frecuentemente, con el aporte de vendedores o potenciales vendedores cumpliendo ciertas condiciones para sus ofertas. La publicación en la misma es gratuita y busca reunir en un sitio web información de referencia en caso busquemos comprarnos un celular, una computadora, una laptop, un LCD/LED TV, una radio, un parlante con MP3, etc.

Arequipa PC.

domingo, 2 de enero de 2011

Analizando las 130 mil obras del Gobierno (Parte IV: Palabras finales)

Una tarea algo tediosa pero que ha rendido sus frutos. Lo raro y quizás sea porque haya cometido algún error es que el archivo obras-todo.txt tenga 126314 registros en cambio el script para MySQL muestre 126629 registros... muy raro en ese caso recomendaría que se trabaje con el archivo para MySQL.

Finalmente tenemos, para repetir:

- Webs descargados hacia mi disco duro usando el script en Perl.
- Información extraida de las páginas web y almacenadas en archivos de texto, organizados por región.
- Información compilada en un sólo archivo, con separaciones de tabulación, para Excel.
- Información compilada en un script para MySQL.

- Archivo de texto con separación de tabulaciones convertido a partir del script SQL.

Ahora la siguiente tarea será procesar la información y publicar los resultados. Si quieren hacer una consulta más potente les sugeriría que ejecuten la instrucción ALTER TABLE sobras ADD FULLTEXT KEY (obra) después de cargar el archivo MySQL en la base de datos.

Analizando las 130 mil obras del Gobierno (Parte III: Pasando de HTML a txt y a sql)

Bien, el drama lo tenía casi resuelta y ya era hora de poner a Perl nuevamente en acción.

procesar_txt_tab.pl
************************************


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

Los archivos html los tengo en la misma carpeta que los scripts. Creamos un archivo llamado obras-todo.txt en el cual vamos a almacenar todas las obras extraidas de los 2642 archivos html.
El mecanismo que voy a usar consiste en eliminar los saltos de línea y posteriormente separar las nuevas líneas del documento usando nuevos saltos de línea en las etiquetas TR (fila)
He utilizado la variable hash %zonas para almacenar las regiones y las páginas, con el bucle exterior itero entre esos valores para generar los nombres de los archivos que voy a abrir.
Cada vez que se abre un archivo eliminamos los saltos de línea y retornos de carro con la expresión regular

$contenedor =~ s/(\n|\r)//g;

para luego tener todo el texto en una sóla línea y poder separar las filas de tabla. Primero pongo saltos de línea que rodeen a las etiquetas SCRIPT y HEAD, las que luego voy a eliminar en totalidad. Después acomodo saltos de línea que rodeen a cada fila TR del código HTML.
Una vez hecho esto uso la función split, indicándole que corte el código de la página abierta a partir de los saltos de línea y los almacene en el vector @filas.
Una vez generado mi arreglo @lineas, con un bucle foreach empiezo a extraer cada uno de sus elementos y los almaceno en la variable $fila, la cual va a pasar a ser procesado.

Se deben tener en cuenta unas reglas adicionales para esto. Establecemos una jerarquía de condiciones para almacenar la información de Regiones, Provincias, Sector, etc. Si no se cumple una condición el programa salta a la siguiente y así hasta terminar. Entonces tenemos:

Primero: Verificamos si es una línea que contenga al código de número de página, si es así lo ignoramos con una sentencia next y pasamos a analizar la siguiente fila, mejor dicho, el contenido del siguiente elemento del vector @filas.

# Ignoramos a las conteniendo el numero de pagina
             if ($linea =~ /javascript:/) {    next;    }

Segundo: Verificamos si es una fila que indique si es información de región (en este caso dice DEPARTAMENTO). De ser así tenemos a una variable $region que almacenará el bombre de la región encontrada. después saltamos al siguiente valor de @filas usando la sentencia next.

# Verificamos si hay region
             if ($linea =~ /DEPARTAMENTO: (.+)<\/td>/) {

                $region = $1;
                next;
             }


Tercero: Verificamos si la fila tiene información de una provincia, de ser así almacenamos el nombre de la provincia en la variable $provincia para usarla finalmente en la construcción del texto final.

 # Verificamos si hay provincia
             if ($linea =~ /PROVINCIA: (.+)<\/td>/) {
                 $provincia = $1;
                 next;
             }


Cuarto: Verificamos el sector de inversión. De igual manera usamos una variable $rubro para almacenar dicho valor.

 # Verificamos si hay rubro
             if ($linea =~ /class="textotitFun">(.+)<\/td>/) {
                 $rubro = $1;
                 next;
             }


Quinto: Si encontramos una fila de etiquetas, las ignoramos y pasamos al siguiente elemento de @filas.

# Ignoramos las etiquetas
             if ($linea =~ /align="justify">OBRAS<\/td>/) {
                 next;
             }


Sexto: Si no se han cumplido algunas de las condiciones anteriores es posible que se trate de una fila de datos. Primero reemplazamos los valores enteros por comas por valores enteros sin comas, esto en la columna (TD) de Monto. Luego reemplazamos los códigos de columna TD, y filas TR para ir limpiando la cadena de texto. Luego eliminamos los códigos de etiqueta que quedan al igual que los saltos de línea y quedarán como separadores del texto las cadenas de caracteres   las cuales reemplazaremos al final por tabulaciones o caracteres ',' si se desea hacer los archivos de texto con separación de tabulaciones para MS Excel o si se desea generar un archivo script para MySQL.

#ordenamos los registros de obras
             if ($linea =~ / /) {
                
                # Arreglamos el numero natural (monto en soles)
                $linea =~ /align="right">(.+) /;
                $temporal = $1;
                $temporal =~ s/,//g;
                $linea =~ s/align="right">(.+) /align="right">$temporal /g;
                
                $linea =~ s/(<\/td>||<\/tr>)/\n/g;
                #print "ELIMINAMOS ,,: \n$linea\n";
              
                $linea =~ s/<.+>//g;
                #print "ELIMINAMOS ETIQUETAS: \n$linea\n";
              
                $linea =~ s/(\n|\r|\t)//g;
                #print "ELIMINAMOS SALTOS: \n$linea\n";
              
                $linea =~ s/ /\t/g;
                #print "FINAL DE PROCESADO: \n$linea\n\n\n\n\n";
                $contenedor = "\n".$linea."\t".$rubro."\t".$provincia."\t".$region;
                print RELLENAR $contenedor;


RELLENAR es el manejador del archivo que creamos para guardar la información extraida de los archivos HTML previamente descargados a nuestro disco duro. En cada ciclo interno se abre y cierra cada archivo. Al final se cierra el archivo en el cual hemos escrito nuestros datos.

Si quieren ver el código para generar el archivo MySQL es el siguiente:

procesar_mysql.pl
*********************************





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

Es una tarea agotadora cuando se trata de analizar HTML y tienes muchas alternativas para procesarlo.

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.

Analizando las 130 mil obras del Gobierno (Parte II: Descargando la información al disco duro)

Nota: A los impacientes de toda la vida les pongo de una vez a disposición los enlaces para que puedan descargar los archivos a su computadora, revisarlos con Excel o en el mejor de las casos con MySQL:

- Los archivos los pueden descargar desde: http://achahuasoncco.blogspot.com/2011/01/analizando-las-130-mil-obras-del_5784.html


Pronto conocerán que esta web no es lo demasiado compleja como para extraer esa información y hacerla disponible para los diferentes analistas.
******************************

Pagina tediosa, para revisar los archivos de uno en uno. Mi idea era, y desde que apareció el bendito sitio, automatizar la descarga de la misma para que desde mi propia PC y con herramientas más útiles pudiera hacerme una idea acerca de los datos que nos ofrecía el Gobierno.

Analizando la página con Mozilla Firebug: 

Recopilar toda la información de cuántas páginas y cuales eran sus URL exactas para hacer una copia local sería una tarea titánica de no ser por el firebug:


La página usa un iframe en el cual se puede ver la información, la primera impresión es que usaron ajax, pero no es así. Bien, después de analizar el código HTML y el código javascript encuentro que las URL de las páginas tienen la siguiente forma

http://www.130milobras.presidencia.gob.pe/detobras.asp?dep=XX&hidpage=YY

En donde XX indica el código de la Región en donde esta hecha la "obra" y YY indica el número de página. Después de darle otra mirada a cada una de las páginas de la lista tenemos lo siguiente:

La Región 01 es Amazonas: 79 páginas
La Región 02 Ancash: 223 páginas
La Región 03 Apurimac: 88 páginas
La Región 04 Arequipa: 137 páginas
La Región 05 Ayacucho:  142 páginas
La Región 06 Cajamarca: 169 páginas
La Región 07 Callao: 22 páginas
La Región 08 Cusco: 190 páginas
La Región 09 Huancavelica: 125 páginas
La Región 10 Huanuco: 87 páginas
La Región 11 Ica: 64 páginas
La Región 12 Junin: 157 páginas
La Región 13 La Libertad: 120 páginas
La Región 14 Lambayeque: 67 páginas
La Región 15 Lima: 274 páginas
La Región 16 Loreto: 76 páginas
La Región 17 Madre de Dios: 18 páginas
La Región 18 Moquegua: 46 páginas
La Región 19 Pasco: 54 páginas
La Región 20 Piura: 117 páginas
La Región 21 Puno: 158 páginas
La Región 22 San Martín: 87 páginas
La Región 23 Tacna: 60 páginas
La Región 24 Tumbes: 35 páginas
La Región 25 Ucayali: 44 páginas
La Región 99 Multidepartamental: 3 páginas

Teniendo esta información sólo queda usar una herramienta para que descargue hacia mi PC, haga una copia local. Al inicio me vino a la mente PHP y su librería cURL para poder automatizar la tarea, sin embargo antes tuve problemas porque PHP por defecto no puede ejecutar un script que supere los 300 segundos, o 5 minutos, así que descarté esa alternativa. En mi corta experiencia con Perl pude recordar que una vez comparé dos archivos de texto, uno con 12 mil registros y otro con 2 mil y el tiempo de procesamiento fue bastante muy rápido pese a que lo hice en una computadora con un procesador Pentium D...

En Perl tenemos:

descargar.pl
******************************************
#! /bin/usr/perl

%zonas = ("01" => "79",
"02" => "223",
"03" => "88",
"04" => "137",
"05" => "142",
"06" => "169",
"07" => "22",
"08" => "190",
"09" => "125",
"10" => "87",
"11" => "64",
"12" => "157",
"13" => "120",
"14" => "67",
"15" => "274",
"16" => "76",
"17" => "18",
"18" => "46",
"19" => "54",
"20" => "117",
"21" => "158",
"22" => "87",
"23" => "60",
"24" => "35",
"25" => "44",
"99" => "3");

use LWP::UserAgent;
use HTTP::Request;

my $ua = LWP::UserAgent->new;
$ua->agent("AgenteSmith 1.0 (http://achahuasoncco.blogspot.com/)");
while (($zona,$paginas) = each %zonas) {
    for ($i = 1; $i <= $paginas; $i++) {
        $nombre = "obra-".$zona."-".$i.".html";
        open(PRUEBA,">>$nombre") || die "No se pudo crear archivo";
        $url = "http://www.130milobras.presidencia.gob.pe/detobras.asp?dep=$zona&hidpage=$i";
        $req = HTTP::Request->new(GET => $url);
        $response = $ua->request($req);
        $cadena = $response->content();
        print PRUEBA $cadena;
        close(PRUEBA);
    }
}

******************************************
Archivo en el cual he almacenado en la variable %zonas los códigos de región (clave) y las páginas a descargar (valor), teniendo la estructura de la forma: $zonas{"region"} = "paginas";
El bucle while externo lo uso para iterar entre regiones y valores por dos razones: La primera es acceder a la URL exacta para descargar la web respectiva y, segundo, para escribir en el disco duro un archivo de la forma obra-XX-YY.html, en donde XX indica la región y YY indica la página respectiva desde donde se está descargando. Para poder hacer la descarga uso los módulos LWP::UserAgent y HTTP::Request.

Después de esperar unos 30 minutos en el segundo intento obtengo las 2642 páginas descargadas a mi disco duro. Durante la primera prueba la conexión con el servidor se cortó después de 458 páginas.

Para poder extraer la información se necesita analizar el código fuente de la página web, ese es el siguiente post.

Analizando las 130 mil obras del Gobierno (Parte I)

Como todos ya saben, la tan promocionada página de las 130 mil obras que tanto ha promocionado últimamente el Gobierno peruano recopila lo invertido por el Estado entre los periodos comprendidos entre el 2006 y el 2009. sin embargo, analizar todos estos datos desde la misma página web se convierte en una tarea tediosa y casi de hacer.

Y digo casi porque en tres días, trabajando en mis ratos libres, he podido descargar todo el contenido y pasarlo a un archivo para mysql y otro archivo de texto con separación de tabulaciones, para que los no programadores lo puedan analizar en Excel. Se van a llevar sorpresas y van a darse cuenta de las mentiras de los encargados de dicho sistema, es más, llamarle obras a cosas que no deberían llamárseles obras es el colmo de los casos.

El único inconveniente es que mis scripts me arrojan resultados diferentes. El archivo de texto con separación de tabulaciones tiene 126 315 registros, pero el archivo mysql contienen 126 629 registros, una diferencia de 314... para mis análisis voy a utilizar el archivo mysql... convertir el archivo mysql texto separado con tabulaciones va a ser una tarea adicional, pero estoy algo frustrado por lo de mis scripts.


Herramientas utilizadas

Para comenzar, no soy muy metido en la programación. Trabajo principalmente en plataformas Windows y el Visual Studio apenas lo conozco. Más he estado inmerso en la programación web trabajando con editores simples en Html, Javascript, Php, Mysql. No trabajo con Objetos (gran debilidad mía) pero varios de mis trabajos los he realizado de forma artesanal...

Para hacer esta tareita he utilizado:

Active Perl. El interprete/compilador gratuito que se puede utilizar en Windows, tanto en línea de comandos y como si se tratase de algún Visual Basic Script.


Scintillia: Algunos preferirán Notepad++ pero el Scite no me ha arrojado errores cuando se trata de abrir archivos inmensos.


Mozilla Firefox 3.6.13: El navegador de toda mi vida y en el que tengo instalado mis extensiones favoritas como el Web Developer y Firebug.

En mis siguientes posts voy a liberar la información para que otras personas puedan hacer lo que quieran...

Buscar:

Se ha producido un error en este gadget.