El historial de Boris y el top keywords

Todo experimento que se precie ha de tener una serie de medidas y resultados que poder contar después. Así que le he dicho a Boris, la araña, que de vez en cuando vaya apuntando cuántas páginas lleva rastreadas, cuántas keywords y cuáles son las más populares. Y así lo está haciendo en su cuaderno de bitácora.

Por ahora, tras unas 20 horas, lleva unas 7.000 páginas (unas 1.100 exploradas para sacar sus meta keywords, description y título, y el resto en cola, encontradas a través de enlaces o envíos manuales). De esas 1.100 páginas, las keywords más populares son:

linux usada en 81 páginas.
open source
usada en 64 páginas.
software
usada en 44 páginas.
php
usada en 40 páginas.
suse
usada en 30 páginas.

Las estadísticas se actualizan cada día. A ver cómo crece la cosa… :)

6 comments ↓

#1 Dani on 05.24.07 at 1:38 pm

Jaime, ¿puedo hacerte unas preguntillas de curioso aprendiz de RoR?:

- Supongo que el rastreo de Boris no lo haces con una petición http online del servido, ¿que clase/modulo/plugin utilizas para lanzar tareas en fondo en Ror?

- ¿que utilizas para parsear las web (extraer links + keywords)? ¿Hpricot, HTree + REXML?

Gracias y que Boris “caze” mucho…

#2 Jaime Iniesta on 05.24.07 at 1:47 pm

Hola Dani, ¿flowers u otro Dani?

Por ahora la llamada automatizada a Boris es simplemente una petición http de controlador/vista, que es visitada por el servidor con wget cada minuto, programado con cron. Es una solución cutre y rápida, mientras me decido por alguna solución mejor (script/runner, backgrounDRb, railscron…

Para parsear la web, lo más básico: con open-uri me traigo todo el html y de allí extraigo los datos que me interesan con expresiones regulares. Tengo que estudiar otras alternativas más curradas como Hpricot.

#3 Danisev on 05.24.07 at 1:57 pm

¿Flowers?, hasta ahora nadie me había llamado así todavía ;-)…No soy otro Dani.

Prueba Hpricot yo lo he utilizado en mis “experimentos” y es muy fácil de aprender y utilizar.

Si no te emporta, me tienes que explicar mejor eso de “peticiones http visitadas por el servidor wget cada minuto programado con cron”. No lo pillo (tengo que mirar que es wget pq no lo conozco).

Yo tengo algún “xperimento”, también para aprender RoR, que hace tratamientos masivos (en concreto ver si nnnn domnios están libres o no) de datos. Ahora lo tengo más cutre que tu porque es una petición http que no acaba nunca…

Un día hize una prueba rápida de backgrounDRb pero no me funcionó, tengo que volver a ponerme pq me da vergüenza hasta contarlo…

#4 Trueke on 05.25.07 at 1:07 am

Muy interesante el experimento, estaré atento a ver los resultados.

#5 Jaime Iniesta on 05.25.07 at 3:28 am

Hola Dani (no Flowers entonces :P )… te explico lo del cron…

En primer lugar te montas tu controlador/accion que al ser visitado a través de http, hace lo que quieras que se haga. En mi caso, Boris busca la página encolada más antigua, la visita, se trae sus datos y enlaces, y termina. Así que si yo visito continuamente esa página (por ejemplo visitándola con el navegador y dándole a refrescar manualmente), ya tengo ahí una automatización.

Pero… para no tener que estar yo visitandola, pongo una tarea cron en el servidor (crontab -e para editar).

Yo quiero que cada minuto se me visite esa dirección… ¿Cómo se lo digo al servidor? Pues usando wget (esto es de GNU/Linux, no es de Rails), que es un programa al que le puedes decir que se te baje algo de la red. Por ejemplo:

wget -q http://www.google.com -O ~/google.html

Eso se me bajará la página principal de Google y la guardará en un archivo (-O) llamado google.html en mi directorio de usuario. La opción -q es para “quiet”, para que no suelte mensajitos por pantalla ya que no voy a estar yo para leerlos. Para más información, man wget.

Pues en lugar de bajarme Google, me bajo la página de mi aplicación que al ser visitada hace lo que quiero que haga en cada paso.

Para mayor comodidad puedes meter esa línea de wget en un archivo, por ejemplo “automatico.sh” que al ser ejecutado se haga el wget… Pones que se ejecute “automatico.sh” cada minuto por ejemplo así en el cron:

# m h dom mon dow command
* * * * * /home/usuario/bin/automatico.sh

Y con eso se ejecuta cada minuto. O así:

# m h dom mon dow command
15 * * * * /home/usuario/bin/automatico.sh

Se ejecutaría cada hora, a y cuarto.

Y eso es todo. Ya te digo, es una solución cutre pero muy rápida de implementar para ir probando. Lo cambiaré por otra cosa, seguramente script/runner con cron (similar pero en lugar de usar wget llamar directamente a script/runner para que ejecute lo necesario)

#6 Trabajos en background con script/runner // Jaime Iniesta on 05.31.07 at 11:01 am

[...] Para hacer este trabajo en background contínuo desde el servidor empleé una solución cutre-y-rápida consistente en un controlador/vista que al ser visitado, buscaba la siguiente página en cola y la exploraba. Para simular una visita a esa vista cada minuto, usaba wget desde cron, como expliqué en los comentarios de este post. [...]

Leave a Comment