Surfistes a càmara lenta

Archive for the ‘Repositori institucional’ Category

Al comenzar el Episodio 2 del Rei, se nos vino a la mente la necesidad de un Crawler. Un bot que sirviera para recoger vía RSS los materiales de la UOC de cualquier tipo, de cualquier site que publique para tal fin. El crawler es un mecanismo que recorre recursivamente las paǵinas web y toma de ellas información en profundidad, es capaz de montar la estructura del site e incluso guardarlo físicamente en el lugar que se le indique. Al menos de momento no necesitamos un crawler, ya que, los RSS son fuentes bastante directas de lo que se necesita de un site. No necesitamos indexar los sites, necesitamos indexar materiales, éstos tienen que estar siempre en la misma ubicación en línea y cualquiera puede descargarlos a través de métodos “download” como los de org.apache.commons.httpclient.*

Luego de estudiar el droids de Apache Lucene, hemos dado con que mucha de la funcionalidad que ofrece, no nos hace falta para este Episodio del Rei. He conseguido una opción más simple que consiste en usar la clase HttpClient (org.apache.commons.httpclient.HttpClient), la cual ejecuta una instancia de la clase GetMethod (org.apache.commons.httpclient.methods.GetMethod), habiendo creado ésta última con la URL (RSS o No RSS…) que nos interesa descargarnos. Después se recoge el contenido de la instancia de GetMethod como un InputStream con getMethod.getResponseBodyAsStream().

En un principio la función devolvía el InputStream, como un AutoCloseInputStream, esto daba un problema ya que antes de que la función lo devolviese, se cerraba la conexión http, con lo cual el InputStream llegaba cerrado y no se podía usar en el lugar de la llamada. Simplemente lo que he hecho ha sido devolver el GetMethod entero, en lugar del InputStream y cerrar la conexión http luego de la llamada a la función.

De esta manera se simplifica bastante el proceso de descarga desde los sites y nos ahorramos agregar al proyecto unas cuantas librerías.

Anuncis