Escuela Técnica Superior De Ingeniería Informática

Transcription

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICAINGENIERO EN INFORMÁTICAGestor Web de Currículos Vitae de Autores CientíficosRealizado porAntonio Mariano Borja PérezDirigido porFrancisco R. Villatoro MachucaDepartamentoLenguajes y Ciencias de la ComputaciónUNIVERSIDAD DE MÁLAGAMÁLAGA, NOVIEMBRE 2005

UNIVERSIDAD DE MÁLAGAESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICAINGENIERO EN INFORMÁTICAReunido el tribunal examinador en el día de la fecha, constituido por:Presidente Dº/Dª.Secretario Dº/Dª.Vocal Dº/Dª.para juzgar el proyecto Fin de Carrera titulado:Gestor Web de Currículos Vitae de Autores Científicosdel alumno D. Antonio Mariano Borja Pérezdirigido por Dr. D. Francisco R. Villatoro MachucaACORDÓ POR OTORGAR LA CALIFICACIÓN DEY PARA QUE CONSTE, SE EXTIENDE FIRMADA POR LOS COMPARECIENTES DELTRIBUNAL, LA PRESENTE DILIGENCIA.Málaga, adedel 2005El PresidenteEl SecretarioEl VocalFdo.:Fdo.:Fdo.:

ÍNDICE1234INTRODUCCIÓN .11.1Objetivos del PFC .11.2Contenido de la memoria .2WEB CRAWLERS .52.1Definición de un Web Crawler .52.2Clases de Web Crawlers.62.3Exclusión de Robots.72.4Otros aspectos de los web crawlers .102.4.1Obtención de web crawlers.102.4.2Pautas para la creación de un web crawler .14HERRAMIENTAS . 213.1Introducción .213.2Herramientas.22ANALISIS, DISEÑO E IMPLEMENTACIÓN . 254.1Introducción .254.2Análisis del problema .254.2.14.3Problemas iniciales con los buscadores .30Diseño funcional .324.3.1Diseño del web crawler.324.3.2Diseño de la entrada.384.3.3Diseño de la salida .394.3.4Diseño del interfaz del usuario .404.4Implementación.424.4.1Implementación del Web Crawler .434.4.2Implementación de la base de datos.664.4.3Implementación de interfaz con el usuario .694.4.4Implementación de la salida como fichero HTML .734.4.5Implementación del Tratamiento del Fichero de entrada .734.5Implementación del ejecutable (.exe) .824.6Nombre y versión de la aplicación.88

5RESULTADOS . 896CONCLUSIONES. 9976.1Resumen de lo hecho.996.2Líneas futuras.101BIBLIOGRAFÍA. 103APENDICE A: MANUAL DE USUARIO . 107APENDICE B: CONTENIDO DEL CD E INSTALACIÓN. 121

1 INTRODUCCIÓN1.1 Objetivos del PFCTodo investigador (autor) científico gestiona la lista de publicaciones de sucurrículum vitae (CV) en un formato personal que a veces se ha de adaptar adiferentes formatos normalizados, como los de la Comisión Interministerial deCiencia y Tecnología (CICYT) o el de la Junta de Andalucía. Es habitual que dichosinvestigadores posean una página web donde presentan sus publicaciones(homepage), normalmente, limitánse a transcribir dicho CV a HTML o preservandosu formato original (por ejemplo, Word o PDF).Actualmente, muchas revistas están publicadas en formato online, a través deservidores como el ScienceDirect de Elsevier, Link de Springer, o IEEE Explore, ypermiten el acceso al resumen (abstract) del artículo de forma gratuita, y si ladirección de quien accede es adecuada, también a su texto completo (sólo parausuarios registrados). Sin embargo, la búsqueda manual de todos estos enlaces escomplicada sin algún tipo de ayuda computacional, sobre todo para investigadorescon muchas publicaciones en su CV (más de 100), para los que el proceso debúsqueda en web de los enlaces correspondientes a sus publicaciones es tarea larga ytediosa, que una herramienta software automatizada puede facilitar en gran medida.El objetivo de este proyecto es desarrollar una aplicación que a partir de unlistado de referencias a publicaciones científicas en formato estándar, facilite y, enparte, automatice el proceso de presentar dichas publicaciones en una página webincluyendo enlaces a las revistas online, si procede, en las que aparece cadapublicación, incluyendo su abstract y texto completo, si están disponibles. Para cadaartículo, dicha aplicación lo buscará por título, autor, revista, etc., en buscadoresespecializados, en concreto, ScienceDirect, IEEE Explore, EBSCO Journals, SpringerLink, Kluwer Online, Wiley Interscience, Scirus y Scopus. Si encuentra el artículopresentará los enlaces al mismo encontrados. Para artículos de actas de congresos, laaplicación se limitará donde un buscador generalista sea efectivo. Muchas revistasAntonio Mariano Borja PérezPágina 1

sólo tienen contenidos online a partir de un volumen dado, en dicho caso sólo sepodrá presentar la referencia al índice de contenidos en el que aparece el artículo.La aplicación, a desarrollar en Java, gestionará una base de datos con laspublicaciones de cada autor, así como los enlaces encontrados a las mismas, ypermitirá la presentación de dicha información en la web vía formularios oportunos.Dichos formularios permitirán la presentación ordenada de los artículos en variosformatos, como por fecha, nombre de la revista, autores, etc. Finalmente, la aplicaciónpermitirá el filtrado de los enlaces encontrados por parte del propio autor con objetode mejorar la calidad de los resultados de la búsqueda automática realizada.1.2 Contenido de la memoriaEn esta memoria se ha intentado reflejar la mayor parte de lo que ha supuestoencarar el proyecto. Partiendo de unos objetivos muy concretos, ha habido varioscambios en el problema, que ha tenido que irse adaptando a las nuevas exigencias.Esta evolución en los contenidos la he querido plasmar en la memoria, al igual que losresultados finales del mismo que han sido satisfactorios, y que han resuelto losproblemas iniciales.En lo que al contenido de la memoria se refiere, en el siguiente capítulo seintroduce lo que es un web crawler o robot de búsqueda (spider). Al aclarar lo que es,veremos que nuestro proyecto se basa en su filosofía para hacer una búsqueda en lared, usando diferentes buscadores adaptándolos concretamente a nuestras exigencias.Observaremos que el estudio de los web crawlers es una de las disciplinas másseguidas ahora mismo por quienes necesitan una forma de acceso a la informacióncon técnicas cada vez más depuradas, y a ello (la creación de dichas técnicas) se estádedicando cada vez más tiempo.En el tercer capítulo, mostraremos las herramientas escogidas para realizar elproblema a implementar. Justificaremos su uso, y veremos además la forma en que lashemos usados.Antonio Mariano Borja PérezPágina 2

El siguiente capítulo se dedica al núcleo del problema: su análisis, diseño eimplementación. Procuraremos ser lo más gráfico y sencillo posible en la exposiciónde este apartado.En el quinto capítulo se dan los resultados de la aplicación al usarlo en unejemplo concreto.En el sexto capítulo, se exponen una serie de conclusiones, con un resumen delo hecho y los problemas encontrados, así como las líneas futuras de mejoras yactualizaciones.Para concluir esta memoria se han incluido dos apéndices. En el primerovendrá un manual de usuario, con todo lo necesario para la instalación y ejecución delprograma. En el segundo se describe el contenido del CD adjunto a la memoria.Por último, se incluye la bibliografía referenciada en esta memoria.Antonio Mariano Borja PérezPágina 3

Antonio Mariano Borja PérezPágina 4

2 WEB CRAWLERS2.1 Definición de un Web CrawlerLa mayoría de la información que se obtiene de sitios como Lycos, Infoseek oGoogle fue compilada con la ayuda de un robot, también llamado spider, webcrawler, web-worm o wanderer [1]. En realidad son programas diseñados para hacerprincipalmente una cosa: recuperar información que está almacenada en Internet. Sumodo principal de funcionamiento es recorriendo automáticamente la estructura dehipertexto de un documento Web, pasando recursivamente por todos los documentosque son referenciados en esta página. Hay que aclarar que al decir “recursivamente”no nos limitamos a la aplicación de un algoritmo de búsqueda transversal, de hecho siaplicamos algún criterio de selección heurístico a la selección y ordenación de páginasa visitar, seguimos hablando de robots.Al dar nuestra definición de Web Crawler, podría pensarse que un Webbrowser (como Internet Explorer) es un robot, ya que recupera información de la red,pero no es así, ya que esta información no la obtiene automáticamente, sino arequerimiento de una persona. Mientras que con la búsqueda de información de unusuario, éste debe parar y buscar la información que se desea, un web crawler puedetrabajar mucho más rápido, cogiendo lo que desea, almacenándolo en un fichero, ycontinúa buscando. Puede incluso tener varios procesos ejecutando al mismo tiempo,así que puede obtener información de muchos sitios a la vez.La velocidad de un web crawler puede ser beneficioso para la persona uorganización que lo usa. Por ejemplo, una organización quiere encontrar informaciónde sitios que venden equipamiento para conectarse a la red. Se puede aplicar un robotque busque información sobre routers, modems, proveedores, y todo lo que necesite laorganización para la conexión. El web crawler puede acceder a cada sitio en su path yrecoger esa información. Después, todo lo encontrado lo transforma en una base dedatos que puede ser usada por varios motores de búsqueda.Antonio Mariano Borja PérezPágina 5

Un motor de búsqueda, o search engine, es un programa que busca en unconjunto de datos. En el contexto de Internet, lo más usual es que se use comoformulario de búsqueda que usan bases de datos de documentos HTML, acumuladospor web crawlers.2.2 Clases de Web CrawlersLos web crawlers pueden ser usados para múltiples propósitos:1. Indexación de información.2. Validación HTML (para comprobar si ha habido cambios en la estructura yel contenido en la página web).3. Validación de Links (para comprobar que es correcta la estructura y susintaxis).4. Monitorización de What’s New (sección dentro de la página web queinforma de las novedades de la página).5. Mirroring (para mantener mirror sites a sitios web determinados).Vamos a detenernos un poco más en el indexado, que es el principal uso de losweb crawlers. Lo primero que se nos ocurre es cómo un robot decide dóndeencaminarse en su búsqueda: depende del robot, ya que cada uno usa diferentesestrategias. En general se empieza a partir de una lista de URL, preferiblemente quelleven a documentos con muchos links.Y otra pregunta que nos surge es qué indexa el robot exactamente en las páginasweb: Pues depende también del robot. Algunos indexan los títulos HTML, o losprimeros párrafos o “parsea” todo el HTML e indexa todas las palabras. Otros sólobuscan algunas etiquetas especiales, etc.Antonio Mariano Borja PérezPágina 6

2.3 Exclusión de RobotsEl Robots Exclusion Protocol [1, 2, 9, 10] es un método que permite a losadministradores de sitios Web indicar a los robots que visiten sus páginas qué partesde sus sitios no deberían ser visitados por éste. Es una manera de proteger a losservidores de accesos indeseados. Hay que tener en cuenta que un robot enfuncionamiento puede consumir tiempo de acceso y memoria, que puede ser vital paraotras cosas.En Junio de 1994, Martjin Koster, Jonathon Fletcher y Lee McLoghlin, con ungrupo de autores y entusiastas de los robots, crearon un documento llamado “AStandard for Robot Exclusion". Este documento provee de una vía en la cual unadministrador de servidores Web podía controlar a qué robots se le permitían elacceso al servidor, y a qué sitios de dicho servidor podían acceder los robots o webcrawlers.Este documento sólo era una propuesta. Es más, hoy aún no ha llegado a ser unestándar oficial. De todas formas, al ser algo bastante extendido, muchos autores derobots lo están incorporando a sus especificaciones.ElStandard for Robot Exclusion simplemente establece que un robot loprimero que va a mirar en el root del servidor es un fichero llamado robots.txt. Siencuentra el fichero el robot lo lee y actúa de acuerdo a las limitaciones impuestas endicho fichero.Una forma de saber si algo o alguien ha accedido a un servidor Web es ver losWeb Server error logs, y allí ver quién ha intentado acceder al fichero robots.txt.El nombre del fichero robots.txt fue elegido porque la mayoría de sistemasoperativos podían usarlo, y además no requería configuraciones diferentes por partedel administrador, ya que la extensión *.txt lo permiten la mayoría de servidores.Además el nombre es fácil de recordar, y fácil de reconocer.Antonio Mariano Borja PérezPágina 7

Así como un browser o explorador envía una variable USER AGENT a unservidor HTTP, la mayoría de los robots están diseñados para hacer lo mismo. Dehecho, como ya hemos dicho más arriba, un robot se puede considerar de modogeneral un browser donde el usuario no interviene. Por ejemplo, la variableUSER AGENT para el browser Netscape's 2.0 browser usando Linux en un 486 es:Mozilla/2.0b3 (X11; I; Linux 1.2.13 i486)Esto da información al servidor de quién está usando las páginas que maneja.Normalmente la línea contiene al menos el software y su número de versión.Lo mismo ocurre con los robots. Un robot usado por Lycos envía la variableUSER AGENT, de ésta manera:Lycos/0.9Cada registro en el fichero robots.txt consiste en dos partes. La primera esla línea del User-agent, el cual es seguido por el nombre del robot al cual se quierelimitar. Por ejemplo, la siguiente línea establece que se está poniendo una limitaciónen el robot Lycos versión 0.9:User-agent: Lycos/0.9Si se quiere mantener todos los robots fuera del servidor, hay que poner unasterisco en la línea de user-agent:User-agent: *La segunda parte del registro en el robots.txt es la línea Disallow, el cualnos deja definir las zonas del servidor que están fuera del acceso del robot. Se puedendefinir tantas líneas de Disallow como se necesiten, pero al menos el archivo debecontener una. Por ejemplo:Disallow: /privateAntonio Mariano Borja PérezPágina 8

Esta línea dice al robot visitante que cualquier directorio con la palabra private estáfuera de acceso. Tampoco permite entrar a archivos que comiencen con private. Sisólo queremos que sean los directorios, entonces:Disallow: /private/Para que no se acceda a ningún sitio del servidor, hay que usar el / en la líneade Disallow de esta forma:User-agent: wobot/1.0Disallow: /Y si no está uno interesado en que ningún robot visite nada del servidor:User-agent: *Disallow: /# robots.txt file for myhost.com# User-agent : option Disallow : option User-agent: wobot/1.0 # No dejamos que acceda este robotDisallow: /User-agent: Lycos/0.9 # Lycos síDisallow: /private/ # No queremos que vaya a esta parteDisallow: /test # Ni tampoco a éstaUser-agent: ArchitextSpiderDisallow: /gifs-Figura 1. Ejemplo de fichero robots.txt-Antonio Mariano Borja PérezPágina 9

En la figura 1 se ve un ejemplo de un archivo robots.txt, donde entre cadaregistro hay que dejar una línea en blanco.Hay veces en que no podemos hacer un robots.txt porque noadministramos el servidor entero. Para ello, existe un estándar que permite medianteMETA TAGS mantener a los robots fuera de los documentos.La idea básica es incluir un tag en el documento HTML como META NAME ”ROBOTS” CONTENT ”NOINDEX” si no queremos que sea indexada la página, o bien incluir META NAME ”ROBOTS” CONTENT ”NOFOLLOW” si no queremos que el documento sea parseado por el robot.Hoy en día a casi nadie le conviene negar el acceso a todos los robots, ya queéstos sirven a un propósito: conseguir información y difundirla a otros sitios. De todasformas hay veces que es útil el fichero robots.txt:- cuando se tienen problemas con un robot en particular;- cuando se quiere optimizar recursos y no dar paso a muchos web crawlers.2.4 Otros aspectos de los web crawlers2.4.1 Obtención de web crawlersLos web crawlers o robots están disponibles para hacer cualquier cosa, desdeverificar links a recorrer la Web para buscar información y construir una base de datospara su uso en motores de búsqueda. Martijn Koster provee una excelente lista dedichos robots [1]. Un ejemplo de dicha lista, que está en continua actualización, sería:Antonio Mariano Borja PérezPágina 10

1.2.3.4.5.6.7.8.9.ABCdatos BotLinkAcme.SpiderAhoy! The Homepage FinderAlkalineAnthillWalhello appieArachnophiliaAraleAraneo botWebLogMonitorw3mirWebStolpererThe Web WombatThe World Wide Web WordWWWC Ver 0.2.5WebZingerXGETNederland.zoekPara ver detenidamente cada robot, hay en la página un enlace a cada uno deellos. Hay que tener en cuenta que muchos de ellos aún están en proceso de testeo.Vamos a centrarnos en uno de ellos, concretamente en el MOMspider.Se trata de un robot verificador, el cual chequea y verifica links contenidos enun fichero. Este tipo de robots son muy útiles para comprobar si los links existentesestán invalidados o no. Esta capacidad se ve bien cuando el número de links es muyalto.Podemos encontrar este robot o Mariano Borja PérezPágina 11

MOMspiderMulti-owner Maintenance Spider- Figura 2. MOMspider -Está escrito en Perl para UNIX. Lo que hace es recorrer las páginas web que sele indiquen y devuelve un fichero con los problemas encontrados. Lógicamente estaforma de corrección es más rápida y eficiente que si nos ponemos manualmente a ellocon un explorador normal, y vamos buscando link por link. Una descripción de dichorobot, lo podemos encontrar en [1], en el enlace correspondiente a éste.MOMspiderNameMOMspiderCover ls PageOperationalStatusactiveDescriptionto validate links, and generate statistics. It's usually run fromanywhereRobotPurposemaintenance, IXSoftwareLanguageperl 4AvailabilitysourceOwner'sRoy T. FieldingAntonio Mariano Borja PérezPágina 12

NameOwner'sHome nProtocolyesExclusion TagSupportsNOINDEXnoRobot Host*HTTP FromyesHTTPAgentMOMspider/1.00 libwww-perl/0.40User-HistoryOriginated as a research project at the University of California,Irvine, in 1993. Presented at the First International WWWConference in Geneva, 1994.EnvironmentIdentifiermomspiderUpdatedSat May 6 08:11:58 1995Update Byfielding@ics.uci.eduExisten robots que están disponibles para uso público. Dichos robots son unrecurso importante que al final las grandes empresas van comprando. Un ejemplo deello es WebCrawler, creado en la Universidad de Washington y que ahora pertenecea America Online. Se puede acceder en la siguiente dirección:http://www.webcrawler.comAntonio Mariano Borja PérezPágina 13

- Figura 3. Logotipo de WebCrawler -Este web crawler lo que hace es usar otras máquinas de búsqueda tales comoGoogle, Yahoo, MSNSearch y Ask Jeeves para crear un índice de los resultadosencontrados y dejarlo disponible para el usuario. Digamos que es una especie de“metabuscador”. Es otra utilidad de los robots: además de ser usados por un buscador,los web crawlers pueden usar a su vez otros buscadores para su propósito. Veremosque algo muy parecido hemos hecho con nuestro proyecto.2.4.2 Pautas para la creación de un web crawlerMartijn Koster en 1993, creó un documento donde especificaba qué pautasdebían seguir los programadores de robots, a fin de aunar criterios [1, 10-11].Lo primero que se hace en este documento es hacer reconsiderar al programadorsi está seguro de necesitar un robot, ya que un robot es poner una entidad en la red queconsume recursos de todo el mundo. También previene de si el propósito del robot esnoble o no, y si lo es, avisar de que hay muchos web crawlers por la red, y quepodemos hacer uso de ellos sin necesidad de fabricar uno. Finalmente, advierte quelos resultados de la búsqueda pueden ser muchísimos, incluso puede dar soluciones noescalables. Por tanto, si se decide a hacer un robot, aconseja que no se intente recorrertoda la web, sólo unos niveles de profundidad.Ser AccesibleSi se decide a programar un robot, hay que estar seguro de que si sus accionescausan problemas, la gente pueda fácilmente contactar contigo y poderse comunicar.Antonio Mariano Borja PérezPágina 14

Identificar el Web CrawlerComo hemos contado más arriba HTTP soporta un campo User-agentpara identificar un explorador web. Como un robot es una clase de explorador,hay que usar este campo para nombrar el robot. Esto permite a losadministradores de servidor saber el tipo de crawler que lo está usando. Esrecomendable también ejecutar el robot en una máquina registrada en el DNS,lo cual hace más fácil la identificación e indicar a los usuarios la localizacióndel robot.Identifícar al usuarioHTTP también soporta un campo FROM para identificar al usuario queejecuta el explorador web Hay que usarlo para poner la dirección email. Estopermite al administrador del servidor contactar en caso de problemas.AnunciarseHay sitios en la web donde poner un mensaje antes de ejecutar un robotcomo en comp.infosystems.www.providers. Existe una lista de webcrawlers activos, como hemos mostrado más arriba. De esta forma la gentepuede conocer si un sitio lo puede haber recorrido un robot conocido o no.Anunciarse en el sitio que se va a visitarSi el robot solo va a un sitio en concreto o a unos pocos, contacte conel administrador e infórmele.InformarLos administradores con frecuencia se preguntan por qué su servidor es“atacado”. Si se usa el campo HTTP “REFERER”, se puede informar en él detodo lo relativo al robot.Antonio Mariano Borja PérezPágina 15

Seguir presenteNo deje ejecutando solo el robot durante un tiempo relativamentelargo. Si en su ausencia el web crawler hace cosas erróneas o prohibitivas,usted es el único que puede arreglarlo. Ejecute el robot sólo en su presencia.Notificar las intenciones que se tengaEs aconsejable contarle al administrador del sistema o al proveedor dered qué es lo que va uno a hacer. Así, si algo va mal, ellos te pueden preguntarqué es lo que se ha hecho con el web crawler.Testear localmenteNo ejecute repetidamente en servidores remotos, en lugar de ello testee unnúmero de servidores localmente y úselos para examinar su robot. Cuando ejecute porprimera vez, empiece por una página con servidores locales, después de una pasadacorta, analice los resultados y estime cómo serían con miles de documentos. Así sabrási su robot puede soportar o no una ejecución a gran escala.No acaparar recursosLos robots consumen muchos recursos. Para minimizar su impacto, mantega losiguiente en mente:Ir despacio, no correrEsté seguro que su robot ejecute de forma lenta: los robots puedentratar cientos de documentos por minuto, ésto supone un esfuerzo muy grandeal servidor, y es garantía para enfurecer al administrador. Para evitar éstopuede poner un retraso, o usar colas de forma alternativa entre diferentesservidores, en una especie de round-robin.Antonio Mariano Borja PérezPágina 16

Usar “if-modified-since” o bien “HEAD” donde sea posibleSi se puede usar el encabezamiento HTTP “If-modified-since” oel método HEAD para los propósitos del problema será mejor que usar GET’sPedir lo que uno quiereHTTP tiene un campo “Accept” en el cual un explorador (o un robot)puede especificar las clases de datos que puede obtener. Es bueno usarlo. Deesta manera, el servidor no da datos basura, que el robot no puede atender, yasí se consumen menos recursos.Chequear URL’sNo hay que asumir que todos los documentos HTML que uno va arecuperar son buenos. Por ejemplo, cuando estamos escaneando URLs hay quetener cuidado con algunas direcciones, ya que hay sitios que no admitendeterminados formatos.Chequear los resultadosHay que analizar lo que se devuelve. Puede ser que un servidordevuelva una fila de documentos, pero no como resultado, sino como rechazoporque no admite que un robot lo recorra.No hacer bucles o repetirRecordar todos los sitios visitados es fundamental, ya que así noharemos bucles. También es bueno comprobar si no hay direcciones URL queteniendo diferentes nombres, van al mismo sitio, ya que así evitaremostambién repeticiones.Antonio Mariano Borja PérezPágina 17

Ejecutar en el momento oportunoEn algunos sistemas hay tiempos predefinidos de acceso, cuando lamáquina tiene menos carga de trabajo. Si está planeando hacer muchosaccesos automáticos a un sitio particular, hay que preguntar al administradorcuándo empieza el tiempo preferente de acceso.No ejecutar el robot con frecuenciaLa frecuencia difiere pero lo más sensato es una vez cada dos meses, oalgo similar. También cuando lo está ejecutando, hay que hacer uso de losdatos previos, así se sabe cuáles urls están permitidos. Es bueno hacer unalista de links “volátiles” (como el “what’s new page”), y usarlo para haceraccesos a otros documentos y concentrarse así en los nuevos links.No hacer búsquedasAlgunos documentos web contienen formularios de búsqueda. Lomejor es no rellenarlos, porque es muy posible que no nos lleven a ningunaparte.Controlar el robotEs vital que se conozca lo que un robot está haciendo y que esté bajo controlen todo momento.EstadísticasHay que estar seguros de que incluimos y mantenemos ciertasestadísticas tales como el número de éxitos/fracasos, los hosts accedidosrecientemente, el tamaño medio de ficheros recientes, etc. Esto enlaza con lasección previa de no hacer bucles, ya que anotar todo ésto hace que haya unaAntonio Mariano Borja PérezPágina 18

prevención de las repeticiones. Por supuesto, para anotar las estadísticas hayque tener en cuenta el espacio disponible.Ser interactivoHay que ser capaz de manejar completamente el robot. Para ello, sedebe disponer de comandos que suspendan o cancelen el robot, o que salten aotro host en cualquier momento. También es bueno hacer puntos de controlpara no perder toda la información.Estar preparadoEl robot visitará cientos de sitios. Probablemente ésto afectará a muchagente, por tanto hay que estar preparado para responderles rápidamente ydecirles lo que estamos haciendo.Ser comprensivoSi el robot molesta a alguien, hay que enseñarle que no visite ese sitio oincluso el homepage. No hay que negociar con la persona de sus razones de noacceso, ni tampoco intentar otras vías de acceso a esos sitios. Hay que respetarante todo la voluntad de los técnicos de los servidores.Compartir resultadosYa que estamos usando los recursos de muchas personas, habrá que hacer algoa cambio.Guardar resultadosPuede sonar obvio, pero habrá que pensar qué es lo que se va a hacercon los documentos extraídos. Hay que intentar mantener tanta informacióncomo sea posible, ya que sólo así nos será útil.Antonio Mariano Borja PérezPágina 19

Resultados inicialesHay que poner disponibles los resultados iniciales, desde FTP, o elWeb, o de cualquier otra forma. Esto significa que otras personas puedanusarlos, y no necesiten utilizar sus propios servidores.Resultados finalesLa razón de usar un robot puede ser variada, o bien crear una base dedatos, o generar estadísticas. Si dichos resultados finales los ponemosdisponibles en la Web, ésto puede ser útil para muchas personas, e inclusomotivar a otros a usar robots.Antonio Mariano Borja PérezPágina 20

3 HERRAMIENTAS3.1 IntroducciónAl afrontar nuestro problema, construir un webcrawler, he tenido en cuenta queal tener, posiblemente, que utilizar muchos recursos de servidores, necesitaba utilizarherramientas que no complicaran el proceso de búsqueda. Es decir, intenté crear unwebcrawler muy sencillo usando el lenguaje de programación más genérico, y quemenos recursos pudiera utilizar. Por ello me decanté por JAVA. Este lenguaje, ademásde ser fácil de utlizar, y de visualizar su código, es portable a cualquier máquina, conlo que me permitía un gran arco de acción, ya que la intención última es utilizar elrobot para usos académicos en cualquier sistema.En segundo lug

UNIVERSIDAD DE MÁLAGA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA INGENIERO EN INFORMÁTICA Reunido el tribunal examinador en el día de la fecha, constituido por: Presidente Dº/Dª. Secretario Dº/Dª. Vocal Dº/Dª. para juzgar el proyecto Fin de Carrera titulado: Gestor Web de Currículos Vitae de Autores Científicos