TOKE: Eina de suport als processos de webmining basada en programari lliure

Page 1

TOKE: Eina de suport als processos de webmining basada en programari lliure Albert Nadal i Garriga <albert.nadal@estudiants.urv.es>

Universitat Rovira i Virgili Escola T`ecnica Superior d’Enginyeria Enginyeria Inform`atica

Projecte de fi de carrera agost de 2005


1 Fins on pot arribar el programari lliure? No hi ha l´ ımits, llevat quan lleis com els sistemes de patents prohibeixen el programari lliure en la seva totalitat. L’objectiu final ´ es oferir programari lliure capa¸ c de realitzar totes les tasques que els usuaris volen dur a terme, i per tant fer aix´ ı el programari propietari obsolet...


´Index 1 Introducci´ o

4

2 Exploraci´ o Web 2.1 Requeriments . . . . . . . . . . . . . . . . . . . . . . . 2.2 Disseny general del web crawler . . . . . . . . . . . . . 2.2.1 Arquitectura . . . . . . . . . . . . . . . . . . . 2.2.2 Estructures de dades . . . . . . . . . . . . . . . 2.2.3 Comunicaci´o entre el web crawler i un servidor 2.2.4 Extracci´o d’hipervincles . . . . . . . . . . . . . 2.2.5 Esquema general del web crawler . . . . . . . . 2.3 Anomalies que afecten a l’exploraci´o . . . . . . . . . . 2.3.1 Problemes derivats de la xarxa . . . . . . . . . 2.3.2 Resoluci´ o massiva de DNS . . . . . . . . . . . . 2.3.3 Implementacions HTTP . . . . . . . . . . . . . . 2.3.4 Codificaci´o HTML . . . . . . . . . . . . . . . . . 2.3.5 Caracter´ıstiques dels continguts web . . . . . . 2.3.6 P` agines web din`amiques . . . . . . . . . . . . . 2.4 Par`ametres i configuracions . . . . . . . . . . . . . . . 2.5 Estrat`egies d’exploraci´o . . . . . . . . . . . . . . . . . 2.5.1 Breadth-First . . . . . . . . . . . . . . . . . . . 2.5.2 Depth-First . . . . . . . . . . . . . . . . . . . . 2.5.3 Backlink-Count . . . . . . . . . . . . . . . . . . 2.5.4 Batch-Pagerank . . . . . . . . . . . . . . . . . . 2.5.5 Larger-sites-first . . . . . . . . . . . . . . . . . 2.6 Exploracions d’`arees restringides . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

6 9 10 12 16 21 22 24 25 25 27 27 29 30 31 32 35 36 36 39 39 39 40

3 Extracci´ o i indexaci´ o d’informaci´ o 42 3.1 Extracci´o d’informaci´o . . . . . . . . . . . . . . . . . . . . . . 42 3.2 Crear un ´ındex . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.3 Esquema general de l’indexador . . . . . . . . . . . . . . . . . 49

2


´INDEX

3

4 Diagrames de classe 51 4.1 Aplicaci´o exploradora . . . . . . . . . . . . . . . . . . . . . . 51 4.2 Aplicaci´o indexadora . . . . . . . . . . . . . . . . . . . . . . . 52 4.3 Aplicaci´o de cerca . . . . . . . . . . . . . . . . . . . . . . . . 61 5 Llibreries utilitzades 5.1 Lucene . . . . . . . 5.2 Jung . . . . . . . . 5.3 JTidy . . . . . . . 5.4 PDFBox . . . . . . 5.5 Jakarta POI . . . . 5.6 IR-Webutils . . . . 5.7 HTTPClient . . . . 5.8 JFreeChart . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

73 73 73 76 76 77 78 79 80

A Manual d’aplicaci´ o per a l’usuari A.1 Requeriments . . . . . . . . . . . . . . . . . . . . A.2 Instal·laci´ o . . . . . . . . . . . . . . . . . . . . . A.3 Explorar . . . . . . . . . . . . . . . . . . . . . . . A.3.1 Panells de control . . . . . . . . . . . . . A.3.2 Configuraci´ o de par`ametres d’exploraci´o . A.3.3 Panells de monitoritzaci´o i estad´ıstiques . A.3.4 Exploraci´o - Operacions b`asiques . . . . . A.3.5 Explorar una `area restringida . . . . . . . A.3.6 Visualitzaci´ o de grafs . . . . . . . . . . . A.4 Indexar . . . . . . . . . . . . . . . . . . . . . . . A.4.1 Configuraci´ o dels par`ametres d’indexaci´o A.4.2 Indexar - Operacions b`asiques . . . . . . . A.5 Cercar . . . . . . . . . . . . . . . . . . . . . . . . A.5.1 Cercar en un ´ındex local . . . . . . . . . . A.5.2 Cercar en un ´ındex remot . . . . . . . . . A.5.3 Montar un servidor de cerques . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

82 82 82 84 86 88 89 92 98 101 103 103 108 111 111 113 113

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

B Conclusi´ o i propostes per al futur

116

C Preguntes m´ es freq¨ uents

118


Cap´ıtol 1

Introducci´ o L’objectiu d’aquest projecte consisteix en dissenyar i elaborar una aplicaci´o multifuncional en Java, per a fer possible l’exploraci´o i indexaci´o de continguts web. Aix´ı doncs, s’han desenvolupat tres eines dedicades a realitzar tasques d’exploraci´o, indexaci´o de documents explorats, i recerca de continguts espec´ıfics en la xarxa. La idea d’aquest projecte sorgeix del boom d’Internet en els u ´ltims anys i la necessitat de disposar de mitjans per a organitzar la informaci´o i accedir a aquesta de forma r`apida. Actualment resulta dif´ıcil i complex classificar o categoritzar la informaci´o, ja que aquesta creix a un ritme accelerat, tenint en compte que els continguts informatius tenen tend`encia a generar-se sense seguir un model o patr´o concret. A causa de la gran quantitat d’informaci´o i la necessitat de localitzar aquesta en el menor temps possible, s’han desenvolupat sistemes per facilitar i flexibilitzar la tasca de cercar informaci´o sense haver de rec´orrer al r´ıgid procediment de categoritzar-la jer`arquicament en un proc´es previ. En aquest terreny cal parlar dels sistemes d’extracci´o i indexaci´o d’informaci´o (Information Retrieval), entre els quals cal destacar-ne un que pot considerar-se com uns dels protagonistes o elements principals d’aquest projecte. Es tracta de Lucene, una llibreria de codi obert per a Java, que afegeix funcionalitats d’indexaci´o i cerca a les aplicacions. L’element central d’aquest projecte de final de carrera, que s’hi ha dedicat m´es atenci´o, ´es l’eina d’exploraci´o. Es tracta d’una eina for¸ca completa que pot s´er utilitzada amb finalitats, que no nom´es es limiten a les mencionades en les l´ınies anteriors, sin´o que abarquen aspectes, no menys importants, com ara l’an`alisi i visualitzaci´o de xarxes de nodes web. En aquest sentit cal destacar la possibilitat de generar estad´ıstiques, detectar problemes, i fins i tot, representar gr`aficament, i en forma de graf, les exploracions realitzades. Seguint amb aquesta l´ınia, les eines d’indexaci´o i cerca s´on refor¸cades amb un conjunt de funcionalitats addicionals, com ara la

4


´ CAP´ITOL 1. INTRODUCCIO

5

generaci´o de fitxers de freq¨ u`encies de paraules que poden ser usats per a realitzar estudis de cl´ ustering d’informaci´o i, la possibilitat d’usar un servidor desenvolupat exclusivament per a realitzar cerques sobre ´ındexs d’informaci´o remots. Juntament amb el software implementat s’inclou aquesta documentaci´o o mem`oria del projecte, en la qual s’intenta explicar de manera general com s’han desenvolupat les diferents parts que composen l’aplicaci´o, aix´ı com el seu funcionament intern detallat. Es pret´en que la persona que ho llegeixi obtingui una idea clara del que s’ha fet, com s’ha fet i comprengui els beneficis que aporta usar una eina d’aquestes caracter´ıstiques. L’autor d’aquest projecte vol deixar const`ancia que tot el material desenvolupat, tant el codi font com aquest document, ´es gratu¨ıt i de codi obert, per tant, aix` o dona dret a que qualsevol persona pugui obtenir i utilitzar aquest material. Com que es tracta de codi obert, totes les distribucions d’aquesta aplicaci´o inclouen el seu corresponent codi font per tal que pugui ser estudiat, reciclat o modificat sense finalitats lucratives. Tot el material pot ser adquirit a trav´es de la web http://toke.sourceforge.net o b´e, a partir de la web del seu autor http://www.telefonica.net/web2/albertng


Cap´ıtol 2

Exploraci´ o Web Per tal de poder explorar i analitzar els documents emmagatzemats en els diferents servidors web que composen una xarxa local o una internet, fa falta disposar d’eines de cerca que duguin a terme la tasca d’explorar i rec´orrer documents web navegant a trav´es dels seus corresponents hipervincles(URLs). Aquesta tasca es du a terme mitjan¸cant aplicacions anomenades web crawlers, les quals s’encarreguen de travessar la Web seguint hipervincles i emmagatzemant al disc els documents explorats i descarregats, per tal que m´es tard, puguin s´er tractats per dur a terme determinades operacions d’an`alisis sobre els documents. Els web crawlers s´on principalment usats pels cercadors web, com ara, Google, Yahoo o Altavista, entre d’altres. Aquestes entitats proporcionen una potent eina de cerca pels usuaris d’Internet, els quals poden localitzar el document web que els interessa tant sols inserint un breu nombre de paraules clau relacionades amb la tem`atica que busquen. De cara a l’usuari, la principal tasca dels cercadors web es limita a proporcionar aquella informaci´ o concreta que l’usuari vol trobar, el m´es r`apid possible, realitzant la cerca a trav´es d’una base de dades adientment indexada. L’altra tasca dels cercadors web consisteix en explorar la Web per tal de proporcionar nova informaci´o que ser`a emmagatzemada o actualitzada a la base de dades. Una aplicaci´o de web crawling pot ser implementada amb tant sols unes poques l´ınies de codi en llenguatges de programaci´o de d’alt nivell com ara Java o Python. Tanmateix, existeixen un conjunt de problemes que en una exploraci´ o a petita escala serien m´ınims, per`o que en una exploraci´o a gran escala podrien resultar seriosament complicats. Un dels principals problemes ´es explorar documents emmagatzemats en servidors, que presenten comportaments que afecten al rendiment de la exploraci´ o. Per exemple, un servidor que accepta les connexions entrants, per`o que falla a l’hora de respondre, o simplement respon a una velocitat molt lenta.

6


´ WEB CAP´ITOL 2. EXPLORACIO

Figura 2.1: Web crawling - Algorisme general

7


´ WEB CAP´ITOL 2. EXPLORACIO

8

Figura 2.2: Funcionament intern de Google

Un altre tipus de trampa per a un web crawler ´es provar de descarregar documents que tenen un tamany excesivament elevat o explorar un servidor web que genera din`amicament les seves p`agines i els corresponents hipervincles, de manera que una exploraci´o sobre aquest servidor no finalitza mai. Una de les principals caracter´ıstiques d’un web crawler recau en el nombre de p`agines que ´es capa¸c d’explorar per unitat de temps. Per tal de descarregar un bili´o de p`agines en un any, un web crawler hauria de ser capa¸c de mantenir una taxa de desc`arrega de 32 p`agines per segon. Tanmateix, els motors de b´ usqueda emprats pels cercadors web m´es importants, no nom´es han de ser capa¸cos d’explorar nous documents, sin´o que a m´es a m´es, han de ser capa¸cos de detectar i descarregar aquells documents que ja han estat descarregats anteriorment i, que el seu contingut ha caducat o ha


´ WEB CAP´ITOL 2. EXPLORACIO

9

estat actualitzat. Aquest fet posa de manifest la import`ancia d’efectuar exploracions el m´es r`apid possible. El web crawler proposat en aquest projecte ha estat dissenyat per suportar exploracions de mitjana escala, ´es a dir, explorar un conjunt de dominis d’Internet o simplement explorar la web d’una xarxa local amb un elevat nombre de servidors interconnectats entre si mitjan¸cant hipervincles. Amb una bona configuraci´ o, pot descarregar grans quantitats de documents aprofitant l’ample de banda i generar resultats i estad´ıstiques a partir de la informaci´o d’estat acumulada durant l’exploraci´o. Es tracta d’un web crawler flexible que permet configurar cada exploraci´o modificant un gran nombre de par`ametres disponibles. Durant els pr`oxims apartats, es descriu el funcionament intern del web crawler implementat en aquest projecte. Concretament, es tractar`a d’explicar detalladament els aspectes m´es destacats que afecten a l’estructura, rendiment, fiabilitat i les diferents estrat`egies de crawling emprades, aix´ı com les estructures de dades que calen per tal que tot el conjunt funcioni correctament i de manera eficient.

2.1

Requeriments

A continuaci´o, s’expliquen els requeriments que ha de tenir un bon web crawler, i els procediments que cal seguir per a assolir-los: Flexibilitat Consisteix en que el sistema pugui ser utilitzat en diferents escenaris, aplicant el menor nombre de canvis possible. Baix cost i alt rendiment El sistema hauria de ser capa¸c de descarregar varis centenars de p`agines web per segon i centenars de milions de p`agines per exploraci´ o, i a m´es a m´es, hauria de funcionar amb el m´ınim cost possible ´ important destacar que l’´ en termes de hardware. Es us eficient dels accessos al disc ´es determinant per mantenir una alta velocitat, ja que en alguns casos la mem`oria principal de l’equip no ´es suficient per emmagatzemar les estructures de dades. Aquests casos nom´es succeeixen despr´es de descarregar varis milions de p`agines. Robustesa En aquest apartat hi ha diferents aspectes. Tot i que el sistema ha de ser capa¸c d’interactuar amb milions de servidors, a m´es a m´es, aquest ha de ser capa¸c de tolerar documents web mal formats, configuracions i comportaments estranys de servidors web, i moltes altres situacions an`omales. L’objectiu es basa en explorar amb precauci´o, i si es necessari,


´ WEB CAP´ITOL 2. EXPLORACIO

10

ignorar p`agines i servidors web sencers amb comportaments no desitjats, i per tant, descarregar nom´es subconjunts de p`agines. A m´es a m´es, cal tenir en compte que una exploraci´o pot durar semanes o mesos, i per tant, el sistema ha de ser capa¸c de tolerar fallides i interrupcions de la xarxa, intentant perdre la menor quantitat d’informaci´o possible. Aix´ı doncs, l’estat del sistema ha de s´er guardat al disc. Una bona estrat`egia consisteix en sincronitzar peri`odicament les estructures principals al disc, i reexplorar un nombre limitat de p`agines despr´es d’una fallida del sistema. ´ molt important seguir les convencions est`andars Control de velocitat Es d’exclusi´o de robots web (robots.txt i els meta tags de les p`agines web). A m´es a m´es, cal controlar la velocitat d’acc´es en diferents aspectes. Cal evitar saturar els servidors web mitjan¸cant desc`arregues massives. ´es molt recomanable controlar la velocitat de desc`arrega en un determinat nivell de domini(subdomini), amb l’objectiu de no generar denegacions de servei a petits servidors web de manera involunt`aria. Finalment, si el web crawler s’executa dins d’un entorn tancat, com ara, un campus universitari on la connexi´ o ´es compartida amb la resta d’usuaris de la xarxa, cal controlar detalladament la taxa de desc`arrega del crawler. En particular, cal explorar a un ritme baix durant les hores de m´es activitat de la xarxa, i a un ritme elevat durant la nit que ´es quan el tr`afic de la xarxa ´es m´ınim. Manejabilitat i reconfigurabilitat Una apropiada interf´ıcie ´es necess` aria per monitoritzar l’exploraci´ o incloent la velocitat d’aquesta, estad´ıstiques sobre els hosts i les p`agines, i els tamanys de les estructures principals. L’administrador ha de ser capa¸c d’ajustar la velocitat, afegir i treure components, aturar el sistema, for¸car una pausa, o simplement afegir hosts i dominis a una llista negra d’URLs que el web crawler haur`a d’evitar descarregar. Despr´es d’una fallida o aturada de la xarxa, el software del sistema pot s´er modificat per arreglar els problemes i per tant, poder continuar l’exploraci´o utilitzant una configuraci´ o diferent. Els resultats d’una llarga exploraci´o acostumen a ser notablement diferents dels que hi havia al principi.

2.2

Disseny general del web crawler

Abans d’explicar l’esquema general, cal tenir clar que les quatre parts m´es importants d’un web crawler s´on les que s’expliquen a continuaci´o: • Estructura de dades que cont´e les URLs pendents d’explorar. • Estructura de dades que cont´e les URLs ja explorades. • Sistema de resoluci´ o de DNS. • Sistema de desc`arrega de documents.


´ WEB CAP´ITOL 2. EXPLORACIO

11

El web crawler ha de disposar d’una estructura de dades que emmagatzemi totes les URLs que resten pendents de ser explorades. Aquesta estructura s’ha d’interpretar com una llista d’elements, de manera que la seg¨ uent URL en ser explorada ser`a la primera de la llista. En funci´o de l’estrat`egia d’exploraci´o que s’utilitzi, les noves URLs s’inseriran al principi, al final o en alguna posici´o concreta de la llista. L’estructura de dades que cont´e les URLs ja explorades t´e un p´es molt important dins de l’aplicaci´o. La seva tasca elemental es basa en memoritzar les URLs que han estat explorades i permetre saber si una URL ja ha estat explorada anteriorment, per tal d’evitar descarregar p`agines que ja ho estan. En el web crawler implementat, aquesta estructura proporciona una seguit de funcionalitats addicionals que s’explicaran m´es endavant. Ja que la prioritat principal ´es la velocitat d’exploraci´o, ´es a dir, el nombre de p`agines explorades per unitat de temps, ´es molt important que les dos estructures de dades mencionades ofereixin temps de resposta m´ınims. La resoluci´o de DNS o resoluci´o de nom de domini s’empra per tal que el web crawler pugui obtenir l’adre¸ca IP associada al nom de domini d’una determinada url. En UNIX s’acostuma a utilitzar la crida gethostbyname(), mentre que Java ja disposa d’un sistema de resoluci´o de DNS juntament amb la llibreria de classes dedicada al desenvolupament d’aplicacions de xarxa. La fase de resoluci´ o de DNS s’acostuma a implementar seguint el mateix sistema que s’utilitza per les desc`arregues de documents. M´ ultiples peticions de resoluci´o de DNS s’efectuen en paral·lel de manera ass´ıncrona o mitjan¸cant timeouts. En Java, la resoluci´ o de DNS ´es moderadament efectiva, perqu´e que la interf´ıcie de la API dedicada a aquesta tasca ´es del tipus synchronized, ´es a dir, m´ ultiples peticions de DNS simult`anies s’encuen i s´on tractades de manera seq¨ uencial. La soluci´o a aquest petit problema no ha estat implementada durant el desenvolupament d’aquest web crawler realitzat en Java, tanmateix; la implementaci´ o d’un sistema de resoluci´o de DNS propi basat en m´ ultiples fils d’execuci´ o concurrents ho solucionaria. ´ important destacar que, a difer`encia de les persones, una aplicaci´o de Es web crawling que treballa amb una connexi´o d’alta velocitat (ATM o Gigabit Ethernet), es limita b`asicament a provar de descarregar centenars de p`agines per minut, generant un tr`afic i un nombre de peticions de desc`arrega molt elevats en poc temps. Aix`o pot provocar problemes de denegaci´o de servei a petits servidors web amb recursos limitats, activar el mode d’alarma en sistemes de detecci´o d’intrusions o fins i tot; acaparar tot l’ample de banda de la connexi´ o suposant que es posi en funcionament dins d’una petita xarxa local. Queda clar que cal configurar adientment el web crawler abans


´ WEB CAP´ITOL 2. EXPLORACIO

12

Figura 2.3: Interacci´o entre l’aplicaci´o de crawling i el gestor de desc`arregues de posar-lo en marxa.

2.2.1

Arquitectura

Existeixen diferents possibilitats alhora de desenvolupar un web crawler. Per una banda, hi ha models basats en entorns distribu¨ıts, ´es a dir; estacions de treball que funcionen coordinadament a trav´es d’una xarxa. Per l’altra, hi ha models totalment centralitzats, com ´es el cas que s’ha desenvolupat en aquest projecte. En aquest model s’efectuen totes les operacions sobre una u ´nica m`aquina, mentre que en el model distribu¨ıt fa falta que existeixi almenys una estaci´o de treball que planifiqui i reparteixi totes les tasques que han de realitzar la resta d’equips connectats. El model centralitzat desenvolupat, es divideix en dos parts clarament diferenciades: l’aplicaci´o de crawling i el gestor de desc`arregues. Ambd´os parts interactuen entre si durant tot el proc´es d’exploraci´o. L’aplicaci´o de crawling s’encarrega de generar estad´ıstiques, escriure dades al disc i generar la informaci´o d’estat, per`o la seva tasca principal ´es extreure els hipervincles de les p`agines descarregades i proporcionar les URLs al gestor de desc`arregues. En canvi, la tasca del gestor de desc`arregues consisteix en mantenir i gestionar les estructures de dades de les URLs pendents i de les URLs ja descarregades, a m´es a m´es, de planificar les desc`arregues HTTP i proporcionar els documents descarregats a l’aplicaci´o de crawling.


´ WEB CAP´ITOL 2. EXPLORACIO

13

Figura 2.4: Esquema general del nucli La interacci´o entre ambd´os parts o m`oduls es basa en un comportament del tipus productor i consumidor en circu¨ıt tancat, ´es a dir, les entrades d’un s´on les sortides de l’altre, i viceversa. El control de l’exploraci´o el du a terme l’aplicaci´o de crawling, ja que ´es aquest qui en gran mesura s’encarrega de controlar que es compleixin els par`ametres de configuraci´ o que afecten a la durada o dimensi´ o de la exploraci´o: profunditat m`axima, nombre l´ımit de p`agines a explorar o perm´ıs per explorar enlla¸cos externs. L’aplicaci´o de crawling i el gestor de desc`arregues constitueixen el nucli de l’aplicaci´o. El nucli ´es totalment transparent a l’usuari, ´es a dir, l’usuari nom´es pot interactuar amb els resultats generats pel nucli en temps d’exploraci´o, configurar-ne el seu comportament abans d’iniciar el proc´es, o en tot cas, aturar-lo. La comunicaci´o entre l’usuari i el nucli passa a trav´es de la interf´ıcie d’usuari (GUI) i el controlador de l’aplicaci´o respectivament mitjan¸cant les classes InterficieGrafica i WebCrawler del projecte.

Aplicaci´ o de crawling L’aplicaci´o de crawling ´es implementada mitjan¸cant la classe Aranya del projecte. Es tracta d’un m`odul molt flexible en el sentit que pot s´er utilitzat aplicant diferents combinacions de configuracions mitjan¸cant els par`ametres del seu constructor. Una de les principals caracter´ıstiques ´es la possibilitat


´ WEB CAP´ITOL 2. EXPLORACIO

14

de poder ser utilitzat en altres aplicacions de crawling sense necessitat de modificar el seu codi, o si m´es no, modificant-ne una petita part si resulta necessari. El m`odul gestor de desc`arregues es pot considerar la segona part cr´ıtica del nucli del web crawler, ja que ha estat creat exclusivament per q¨ uestions de disseny. D’aquesta manera, a trav´es del gestor de descarregues, queda encapsulat tot un conjunt d’elements que d’alguna manera tenen una forta depend`encia entre si, com ara, les estructures de dades de nodes visitats i nodes pendents, el logger d’errors o els fils d’execuci´o de desc`arregues HTTP. Tal i com s’ha dit anteriorment, la tasca principal de l’aplicaci´o de crawling consisteix en extreure les URLs dels hipervincles dels documents HTML descarregats. L’aplicaci´o determina, mitjan¸cant l’extensi´o del document, si es tracta d’un document HTML o no. El proc´es d’extracci´o d’hipervincles s’explica en detall en els pr`oxims apartats. De cada document s’obt´e el tamany, el domini i el tipus d’extensi´o. El tamany el proporciona el propi gestor de desc`arregues, mentre que els altres dos atributs s’obtenen analitzant la URL del document. L’extracci´o dels hipervincles es du a terme mitjan¸cant l’´ us de la classe FiltreHTML del projecte. Totes les URLs extretes s´on proporcionades, una a una, al gestor de desc`arregues. L’entrega de cada URL es fa indicant-ne la prioritat, el tipus d’operaci´o que cal realitzar per a descarregar-la, la profunditat i l’identificador de la URL d’on s’ha extret. La prioritat determina si haur`a d’anar a la cua de nodes prioritaris pendents de descarregar, o b´e si anir`a a la cua de nodes secundaris pendents de descarregar. Una URL ´es priorit`aria si el seu host ´es el mateix que el de la URL inicial, i a m´es a m´es, hi ha activat el par`ametre de prioritats. Els tipus d’operaci´o de desc` arrega s´on tres: GET simple, GET amb cookies i POST amb cookies. El tipus d’operaci´o escollit dependr`a de si es fa una exploraci´o en una regi´o p´ ublica, en una de restringida, o b´e si es fa una operaci´o d’auto-completar formulari respectivament. Mitjan¸cant la URL i el tamany dels documents proporcionats pel gestor de desc`arregues, s’obtenen les dades necess`aries per actualitzar les estad´ıstiques i la informaci´o d’estat de l’exploraci´o. D’aquesta manera es mantenen actualitzats els histogrames de tamany, extensi´o i domini. Cada document descarregat es guarda en una Intranet al disc. La gesti´o de la Intranet es fa mitjan¸cant l’´ us de la classe GestorIntranet del projecte, mitjan¸cant la qual es crea al disc una representaci´o quasi exacta del sistema de fitxers dels servidors web explorats. Gestor de desc` arregues El gestor de desc`arregues constitueix la part m´es important del nucli, i per tant, del web crawler. Aquest encapsula les estructures de dades que conte-


´ WEB CAP´ITOL 2. EXPLORACIO

15

Figura 2.5: Exemple d’arbre de fitxers ´ dins nen informaci´o sobre els nodes pendents i els nodes ja descarregats. Es del propi gestor de desc`arregues on es genera la major activitat de l’aplicaci´ o durant una exploraci´ o, entenent per activitat, totes aquelles operacions que produeixen accessos continus a mem`oria, invocacions a m`etodes, creaci´o de processos o entrades i sortides via sockets. Tal i com s’ha comentat en l´ınies anteriors, el gestor de desc`arregues ´es l’encarregat de decidir quins documents web seran explorats i quins cal descarregar en cada moment, ´ aplicant sempre els par`ametres de configuraci´o assignats per l’usuari. Es aquest l’´ unic m`odul del conjunt que t´e acc´es a les estructures de dades i tamb´e el que marca el ritme de tota l’exploraci´o. Els inputs o entrades que alimenten el gestor de desc`arregues s´on les URLs proporcionades per l’aplicaci´o de crawling. L’aplicaci´o de crawling proporciona un flux constant de URLs mentre no s’assoleixen els l´ımits establerts de l’exploraci´ o. Cada nova URL ´es memoritzada, i per tant s’afegeix al magatzem de URLs(estructura de nodes explorats) amb estat pendent i no descarregat, a m´es a m´es, s’insereix a la cua de nodes pendents(estructura de nodes pendents). El gestor de desc`arregues no es preocupa de com ha d’inserir o extreure elements a la cua de nodes pendents, ja que aquesta cua t´e un comportament o un altre, en funci´o de l’estrat`egia d’exploraci´o escollida per l’usuari, gr`acies a l’´ us del polimorfisme de classes que ofereix Java. Les URLs que ja han estat explorades o n’estan pendents, ´es a dir, es troben al magatzem de URLs i tenen l’estat de pendent o descarregat, s´on ignorades i nom´es es t´e en compte el vincle entre aquesta i la p`agina d’origen de la qual s’ha extret, ja que aquesta u ´ltima informaci´o ´es necess`aria per a la composici´o del graf de nodes web. La desc`arrega de cada document web es fa per mitj`a de diferents fils d’execuci´ o de desc` arrega que s’executen concurrentment. Els fils d’execuci´o


´ WEB CAP´ITOL 2. EXPLORACIO

16

Figura 2.6: Agrupaci´o de threads s´on implementats heredant el comportament de la classe Thread de Java. El nombre de desc`arregues simult`anies l’assigna el propi usuari, i ´es tamb´e aquest qui determina el nombre m`axim de desc`arregues simult`anies que es fan sobre un mateix host. Aquests dos factors s´on molt importants, ja que determinaran el ritme o velocitat d’exploraci´o del web crawler, encara que depenen exclusivament dels recursos de l’equip on s’executa i de l’ample de banda de la connexi´ o utilitzada. El gestor de desc`arregues no nom´es ha de ser capa¸c de generar processos de desc`arrega de continguts web, sin´o que a m´es a m´es, ha de ser capa¸c de gestionar-los. Aquesta tasca implica con`eixer el nombre de fils d’execuci´o actius i el nombre de fils d’execuci´o actius assignats a cada host en cada moment. Per poder dur a terme aquest control, s’identifica cada fil d’execuci´ o mitjan¸cant un identificador, de manera que si l’usuari nom´es vol un m`axim de cinc desc`arregues simult`anies, s’assignaran identificadors amb valors compresos entre zero i quatre. L’avantatge d’indentificar cada proc´es mitjan¸cant un identificador permet saber en tot moment si el fil n encara resta actiu o b´e ha finalitzat. De la mateixa manera, permet saber si hi ha fils d’execuci´o que s’han quedat penjats o no. El control dels fils d’execuci´o assignats a cada host, es fa mitjan¸cant l’´ us d’una taula de dispersi´o o taula de hash, mitjan¸cant la qual es possible saber quants processos actius t´e assignat un host determinat. Quan ja no s’efectuen m´es desc`arregues sobre un host, aquest s’elimina de la taula de hash fins que es tornin a produir desc`arregues sobre aquest.

2.2.2

Estructures de dades

Les estructures de dades implementades han estat dissenyades per oferir temps de resposta molt baixos i un consum m´ınim d’espai en mem`oria.


´ WEB CAP´ITOL 2. EXPLORACIO

17

Totes les operacions de consulta i insersi´o s’han implementat aplicant algorismes amb costos computacionalment acceptables, ja que aquest tipus d’operacions succeeixen durant tot el transcurs d’una exploraci´o de manera quasi ininterrumpuda. L’aplicaci´o consta de nombroses estructures de dades, algunes de m´es complexes i d’altres de m´es simples, com ara, la taula de hash utilitzada pel control dels fils d’execuci´o. Durant les pr`oximes l´ınies, s’explicaran, en detall les dos estructures de dades m´es importants d’aquesta aplicaci´o: l’estructura de nodes(URLs) explorats i l’estructura de nodes pendents d’explorar. Estructura de nodes explorats Aquesta ´es l’estructura de dades m´es important de tot el web crawler. No nom´es serveix per memoritzar aquelles URLs que s’han descarregat, sin´o que cont´e informaci´o detallada de qualsevol document web descobert durant el transcurs del proc´es, com ara, el tipus de document, la profunditat, l’identificador, el seu estat, les URLs de sortida o les URLs d’entrada. D’aquesta manera, el gestor de desc`arregues pot obtenir la informaci´o que necessita de qualsevol url. L’estructura consisteix en un arbre Trie(Arbre Digital de Cerca), el qual proporciona uns costos d’insersi´o i consulta d’ordre O (n) i un cost en termes d’espai molt bo. La ra´o d’utilitzar aquest model d’estructura ´es deguda a que la URL de la gran majoria de documents web que s’exploren, tenen el mateix prefix. Aix`o succeix u ´nicament en aquells documents que pertanyen a un mateix host, o pertanyen a un mateix host i tenen la mateixa ruta dins d’aquest. El gran avantatge que aporta aquesta estructura ´es que aprofita molt b´e la mem`oria RAM disponible del sistema. En termes de velocitat tamb´e ofereix molt bons resultats, encara que dep`en en gran mesura de la composici´o i organitzaci´o dels sistemes de fitxers dels servidors web on s’explora. Un servidor web ideal seria aquell que t´e pocs documents web per directori i una dist`ancia m`axima entre l’arrel i el subdirectori m´es lluny`a de pocs nivells. Aquesta situaci´o oferiria, a la pr`actica, uns temps d’acc´es i d’insersi´o amb un cost d’ordre O (1). Tanmateix, la situaci´o real ´es que els servidors web presenten sistemes de fitxers amb una estructura arb`oria de molta amplada, per`o de poca fond` aria. Cada node de l’arbre representa un directori o fitxer, de manera que l’arbre es modela a partir de les URLs proporcionades per l’aplicaci´o de crawling. La conclusi´o que s’extreu d’aqu´ı ´es que s’acaba simulant en mem`oria una r`eplica exacta del sistema de fitxers de la Intranet que es crea al disc, amb la difer`encia que al disc s’hi guarda u ´nicament el contingut dels documents web descarregats.


´ WEB CAP´ITOL 2. EXPLORACIO

18

Figura 2.7: Arbre d’URLs Tal i com s’ha comentat en l´ınies anteriors, per a cada URL inserida a l’arbre s’emmagatzema informaci´o seva. Concretament, s’emmagatzema el seu identificador de node(url), el nom del node(per exemple, el nom de www.domini.net/info/info.txt seria info.txt), el tipus(extensi´o), la profunditat, una llista d’identificadors de nodes de sortida i d’entrada, i l’estat. L’estat determina b`asicament si aquell node cal descarregar-lo, si s’ha descarregat o si est`a pendent de s´er descarregat. Tota aquesta informaci´o s’emmagatzema al moment d’inserir el node a l’arbre i s’actualitza en aquelles situacions en qu`e l’estat del node canvia o b´e es detecten nous enlla¸cos d’entrada que cal enregistrar per generar el graf. Totes les URLs inserides s´on identificades per un identificador num`eric. Aquesta desici´o es causada per motius d’efici`encia, ja que no seria una bona soluci´o utilitzar llistes de nodes de sortida i d’entrada que emmagatzemin URLs senceres enlloc d’idendificadors d’URL que ocupen molt menys espai. L’´ us d’identificadors implica la necessitat de realitzar consultes sobre l’arbre, ja sigui mitjan¸cant la URL o l’identificador de node com a claus. Els identificadors de node s´on assignats de manera incremental, ´es a dir, la en`essima URL que s’insereix a l’arbre se li assigna l’identificador amb valor n. La tasca d’obtenir informaci´o d’un node per mitj`a del seu identificador no es pot realitzar eficientment mitjan¸cant l’estructura d’arbre que s’ha explicat. Per resoldre aquest cas, s’utilitza una segona estructura que complementa les funcionalitats de l’arbre. Es tracta d’utilitzar una llista ordenada de parelles d’identificador i apuntador a node de l’arbre, de manera que les insersions a la llista es fan ordenadament. Aix´ı doncs, el gestor de desc`arregues pot obtenir informaci´o d’una determinada URL mitjan¸cant la pr`opia URL o b´e mitjan¸cant un identificador de URL. Les consultes es fan aplicant un algorisme de cerca dicot`omica sobre la llista, amb la qual cosa, ´ important res’obtenen els resultats amb un cost d’ordre O (n ∗ log n). Es


´ WEB CAP´ITOL 2. EXPLORACIO

19

Figura 2.8: Estructura d’URLs explorades per host marcar que les consultes per mitj`a dels identificadors de node s’utilitzen principalment per accel·lerar la creaci´o del graf de nodes i per recuperar exploracions guardades al disc. S’observa que l’´ us d’un vector seria molt m´es adient que el d’una llista, ja que si les insersions es fan seq¨ uencialment i les assignacions d’identificador es fan ascendentment incrementant cada vegada en una unitat el valor anterior, resulta que cada n´ umero de posici´o del vector coincidiria amb l’identificador de URL inserit en aquella posici´o. Aix`o vol dir que amb un cost d’ordre O (1) es podria obtenir la informaci´o desitjada mitjan¸cant l’identificador de la URL. Tanmateix, aix` o nom´es ´es cert amb les condicions anteriors i suposant que l’assignaci´o d’identificador es faci de la manera mencionada, per`o no serviria si en un futur es desitja canviar el procediment d’assignaci´o per un altre de diferent. ´es per aquest motiu que es fan les insersions ordenadament sobre una llista. La soluci´o explicada fins ara ´es v`alida nom´es en el cas que l’exploraci´o es faci u ´nicament sobre els documents web d’un mateix host o domini. Per`o sempre hi ha hipervincles que fan refer`encia a p`agines web que es troben en altres servidors web. Per tal que m´ ultiples hosts es puguin tenir en compte s’usa una taula de hash que emmagatzema parelles de host i arbre de nodes, de manera que hi ha un arbre per a cada host, i una u ´nica llista de parelles d’identificador i apuntador a node d’arbre. Estructura de nodes pendents La tasca d’aquesta estructura ´es mantenir, seguint un ordre determinat, totes les URLs que han de ser explorades. Es tracta b`asicament de dos llistes d’URLs: una llista d’URLs priorit`aries i una llista d’URLs secund`aries. Les operacions m´es importants que efectua el gestor de desc`arregues s´on afegir noves URLs i extreure la seg¨ uent URL de les llistes. La pres`encia de dos


´ WEB CAP´ITOL 2. EXPLORACIO

20

Figura 2.9: Estructura d’URLs explorades llistes amb prioritats diferents es degut al fet que l’usuari pot decidir si vol donar prioritat a les URLs que tenen el mateix host o subhost, que el host de la URL d’inici d’exploraci´o. D’aquesta manera, a la llista priorit`aria s’hi afegeixen les URLs que pertanyen al host o domini d’inici, i a la llista sencund`aria s’hi afegeixen les URLs que pertanyen a altres hosts. El gestor de desc`arregues interactua amb les llistes a partir de la interf´ıcie definida per la classe abstracta ContenidorDescarregues del projecte, d’aquesta manera es poden crear i utilitzar llistes amb comportaments diferents, ´es a dir, llistes que tenen implementacions diferents dels mateixos m`etodes. Aix´ı doncs, en funci´o de l’estrat`egia de d’exploraci´o que l’usuari determini, el gestor de desc`arregues crear`a inst`ancies de llistes FIFO(ContenidorDescarreguesFIFO), llistes LIFO(ContenidorDescarreguesLIFO ), o d’altres tipus. Quan l’aplicaci´o de crawling proporciona una nova URL al gestor de desc`arregues, aquest primer comprova que la URL no hagi estat enregistrada, si no ho est`a aleshores, l’afegeix tant al magatzem de nodes explorats(amb estat pendent i no descarregat) i a la corresponent llista de nodes pendents, en funci´ o de si es tracta d’una URL priorit`aria o no. Quan finalitza una desc`arrega, es a dir, quan finalitza un fil d’execuci´o de desc` arrega, aleshores el gestor extreu la seg¨ uent URL de la llista priorit`aria i inicialitza la desc`arrega. Quan a la llista priorit` aria ja no queden elements, aleshores s’extreu de la llista secund`aria. Sempre que finalitza una desc`arrega, cal canviar l’estat del node descarregat ja que aleshores el seu estat passa a ser de descarregat.


´ WEB CAP´ITOL 2. EXPLORACIO

21

´ important explicar que passa quan s’ha assolit el nombre m`axim de Es descarregues simult`anies admeses d’un host. En aquest cas pot passar que en les pr`oximes URLs de les llistes no hi hagi cap URL amb aquell host, o b´e que n’hi hagi una o m´es d’una. En aquest u ´ltim cas, l’operaci´o d’extracci´o de les llistes ha de proporcionar la seg¨ uent URL que t´e diferent host, i a m´es a m´es, es segueixin satisfent les condicions de m`axim nombre de desc`arregues simult`anies per host en el host de la URL a extreure. Aquesta situaci´o provoca una operaci´o for¸ca costosa, ja que cal rec`orrer a la llista fins trobar la URL ideal, i en el pitjor dels casos pot passar que cap URL satisfaci les condicions o b´e que aquesta es trobi al final de la llista. La soluci´o a aquest problema seria implementar i usar llistes i iteradors de llista capa¸cos de fer recorreguts per grup dins d’aquesta, amb uns costos computacionalment acceptables. La mec`anica d’aquesta estructura es for¸ca simple, tot i que resulta determinant alhora de generar exploracions de qualitat. Les insersions que es fan a les llistes s´on molt importants, ja que l’exploraci´o no ser`a la mateixa si s’afegeixen les URLs al final de la llista, al principi o seguint una estrat`egia determinada. De fet, si el nostre objectiu ´es descarregar tots els documents web d’un host, un conjunt de hosts, o d’una regi´o concreta, aleshores no t´e molta import`ancia la manera d’explorar. Per`o si el nostre inter´es ´es realitzar una exploraci´ o massiva d’una regi´o que desconeixem, aleshores pot ser interessant usar un m`etode o un altre, ja que si en algun moment cal aturar l’exploraci´ o manualment, aleshores disposarem al disc dels nodes que m´es ens interessen. No nom´es ´es important en aquest sentit, sin´o que tamb´e ´es important saber que hi ha estrat`egies que no s´on gaire bones, per`o que en canvi consumeixen menys recursos, com es el cas d’una exploraci´o per fond` aria que requereix menys quantitat de mem`oria que una exploraci´o per amplada.

2.2.3

Comunicaci´ o entre el web crawler i un servidor

Les desc`arregues de fitxers dels servidors web es fan a trav`es dels fils d’execuci´o de desc`arrega. En funci´o del m`etode que cal emprar s’utilitza un procediment de desc` arrega o un altre, ´es per aix`o que s’han implementat tres tipus diferents de fils d’execuci´o: ThreadDescarregadorUrl, ThreadDescarregadorUrlPost i ThreadDescarregadorUrlAmbCookies. Els fitxers es descarreguen seguint el protocol HTTP convencional, tanmateix l’´ us d’aquest protocol varia si cal explorar una `area p´ ublica o una de privada. Les desc` arregues en `arees p´ ubliques es fan utilitzant els procediments convencionals de desc`arrega de Java del paquet java.net. En aquest cas es solicita el contingut del fitxer a descarregar utilitzant el m`etode GET


´ WEB CAP´ITOL 2. EXPLORACIO

22

a la cap¸calera HTTP de solicitud. Les desc`arregues de fitxers en `arees privades o restringides cal fer-les d’una altra manera. El primer fitxer que cal descarregar ´es el que correspon a la URL on cal enviar el formulari d’identificaci´o (formulari d’acc´es), aquesta URL ´es la URL d’acci´o. Per a aquest primer fitxer cal utilitzar el m`etode POST a la cap¸calera HTTP de solicitud i, a m´es a m´es, en aquesta cap¸calera s’hi inclouen les dades del formulari d’acc´es, on hi ha el login i la contrasenya. El servidor respon enviant el codi HTML de la p`agina web d’inici de l’` area restringida. A partir d’aquest punt, la resta de fitxers es descarreguen aplicant el m`etode GET. Tots aquests passos es fan tenint en compte l’´ us de les cookies, i s’implementen utilitzant la llibreria HTTPClient. Un altre aspecte a tenir en compte ´es la possibilitat de produir-se errors o situacions an`omales. En aquest sentit cal mencionar el fet que el fitxer a descarregar no existeixi al servidor, el servidor estigui saturat i no respongui, o que la connexi´ o establerta es perdi, entre molts altres casos. Tots aquests casos son notificats, en Java, en forma d’excepcions, de manera que cada incid`encia est`a associada a un tipus d’excepci´o concret. Quan es produeix una excepci´ o en un fil d’execuci´ o de desc`arrega aquesta es captura i es notifica al Logger o gestor de d’incid`endies de l’aplicaci´o. El logger est`a implementat amb la classe Logger (Logger.java) del projecte, i s’encarrega principalment de generar informaci´o estad´ıstica.

2.2.4

Extracci´ o d’hipervincles

Els hipervincles s’extreuen u ´nicament d’aquells documents que tenen contingut hipertextual, ´es a dir, documents amb format HTML, ja siguin est`atics o generats din`amicament pels servidors web. El salt d’un document a un altre es fa per mitj` a dels hipervincles dels documents origen, que contenen les direccions dels documents dest´ı. Existeixen altres tipus de documents que disposen de formats amb caracter´ıstiques similars als documents purament hipertextuals, com ara, documents PDF o documents de Microsoft Word que, a m´es a m´es, de presentar refer`encies creuades dins del propi document, poden tenir refer`encies a altres documents de la xarxa per mitj`a d’adreces URL. El web crawler implementat nom´es extreu els hipervincles dels documents amb contingut HTML. Els hipervincles s´on representats usant adreces URL, per mitj`a de les quals els clients web saben com i on han d’establir una connexi´o abans d’iniciar una desc` arrega d’un document. Les adreces URL constitueixen la unitat natural de treball del web crawler i s´on representades per una cadena de car`acters dividida en diferents parts. No totes les parts d’una URL s’han


´ WEB CAP´ITOL 2. EXPLORACIO

23

Figura 2.10: Parts d’una URL d’indicar necess`ariament, ja que per exemple, tot protocol reconegut segons els est`andars, t´e associat almenys un port per defecte, i per tant, no fa falta indicar el port, si no ´es que sigui estrictament necessari. • Protocol: Es troba a l’inici de l’adre¸ca URL i determina el protocol de nivell d’aplicaci´o que caldr`a usar per descarregar el fitxer web. Ha de ser un protocol de l’Internet Official Protocol Standards. • Usuari: Determina el nom d’usuari suposant que l’acc´es al fitxer requereixi una autoritzaci´o pr`evia. Es basa en el mecanisme est`andard d’autentificaci´o en el qual s’envia un nom d’usuari(login) i una contrasenya. • Contrasenya: Determina la contrasenya d’acc´es si s’ha inserit un nom d’usuari a la URL. • Host(domini): Especifica el nom de la m`aquina on hi ha emmagatzemat el fitxer. Aquesta part ´es usada per identificar el tipus de m`aquina i on est`a localitzada a Internet. Per a cada nom de host desconegut cal realitzar el proc´es de resoluci´o de DNS, d’aquesta manera s’obt´e primer l’adre¸ca IP de la m`aquina i despr´es s’estableix la connexi´o mitjan¸cant aquesta adre¸ca. • Port: Determina el port remot on s’efectuar`a la connexi´o. Normalment el port ve determinat pel tipus de protocol que s’utilitzi, de manera que cada protocol t´e associat almenys un port. Aquesta part de la URL no ´es necess` aria si no ´es estrictament necess`aria. • Ruta: Especifica la ruta i el nom de fitxer que es pret´en obtenir del ´ exactament igual que especificar la ruta i el nom de fitxer en host. Es el sistema de fitxers d’una unitat de disc. • Consulta: S’utilitza per realitzar consultes determinades en el servi´ el procediment alternatiu dor web a trav´es de la p`agina indicada. Es


´ WEB CAP´ITOL 2. EXPLORACIO

24

a l’´ us dels formularis web. Les consultes per mitj`a de la URL s’acostumen a utilitzar en servidors amb comportaments din`amics. Normalment les consultes s´on composades a la URL de forma autom`atica per mitja dels clients web. Els hipervincles no tenen efecte visual sobre els documents, ´es a dir, no formen part del text en pla. Tanmateix, un fragment visible del document pot tenir associat un hipervincle que cont´e la URL d’un altre document del mateix host o d’un altre de diferent. Es tracta de processar el codi HTML de cada document, de manera que s’extreuen les URLs emmarcades per les marques href="..." i src="...". Cal tenir en compte que hi ha p`agines web que poden tenir algun sistema de redireccionament autom`atic, com ´es el cas d’algunes p`agines web que han estat mogudes cap a altres llocs de la Web. Per resoldre aquests casos, cal comprovar sempre la pres`encia del meta-tag de redireccionament <meta http-equiv="refresh"...> a cada p`agina web, i extreure’n la URL de dest´ı en cas que existeixi redireccionament. L’extracci´o d’hipervincles ´es una de les tasques m´es lentes, ja que cal rec´orrer tot el codi per a cada document HTML descarregat i aplicar les corresponents t`ecniques de filtratge. Cal tenir en compte que la validesa del codi de cada document ´es totalment imprevisible, la qual cosa comporta dos possibles alternatives: Intentar arreglar el codi HTML del document i despr´es extreure’n els hipervincles, o b´e simplement extreure els hipervincles fins que es detecti un possible error en el codi. Com que la primera opci´o ´es molt costosa computacionalment i els interessos principals s´on descarregar el major nombre de documents en el menor temps possible, el web crawler proposat es decanta per la segona alternativa. El proc´es d’extracci´ o dels hipervincles dels documents es fa utilitzant les eines proporcionades per les llibreries de classes JTidy i IR-Webutils. El primer ´es utilitzat per al processat de les cap¸caleres de meta-tags mitjan¸cant una an`alisi l`exica i sint` actica del document HTML, i el segon filtra el cos del codi HTML per tal de generar la llista d’hipervincles. Cal tenir en compte que un hipervincle no nom´es pot ser un enlla¸c cap a un altre document, sin´o que tamb´e pot ser un enlla¸c cap a una part concreta del mateix document.

2.2.5

Esquema general del web crawler

La figura 2.11 mostra l’esquema general del web crawler. Representa gr`aficament el transcurs normal que segueix una exploraci´o, des de que es passa la URL inicial, fins que s’extreuen els hipervincles dels documents HTML descarregats i s’encuen a la cua de nodes pendents de descarregar. Es tracta d’una repre-


´ WEB CAP´ITOL 2. EXPLORACIO

25

sentaci´ o molt general del funcionament del programa, ja que no reflexa, per exemple, el tema dels fils d’execuci´o explicats en detall en apartats anteriors.

2.3

Anomalies que afecten a l’exploraci´ o

En aquest apartat, es pret`en explicar breument els problemes m´es habituals amb que acostuma a trobar-se una aplicaci´o de web crawling mentre efectua una exploraci´ o web. S´on situacions an`omales que cal tenir en compte i, per tant, preveure durant l’exploraci´o, ja que poden perjudicar els resultats o el rendiment de l’aplicaci´o. Els aspectes m´es destacats s´on problemes derivats del mal funcionament de la xarxa, u ´s massiu del protocol de resoluci´ o de noms DNS, implementacions defectuoses del protocol HTTP, males codificacions de codi HTML, i problemes derivats dels continguts de les p`agines web.

2.3.1

Problemes derivats de la xarxa

Un dels reptes m´es importants de la exploraci´o web recau en com descarregar p`agines web des de m´ ultiples fluxos d’informaci´o, de la manera m´es uniforme possible, considerant que els temps de resposta dels servidors web s´on notablement variables. No es pot predir el temps de vida d’un servidor web ja que habitualment, es poden trobar servidors que resten inactius durant llargs per´ıodes de temps i m´es tard tornen a ser reactivats. Un web crawler comprensiu hauria de considerar que aquelles p`agines que en un determinat moment no estan disponibles, en un futur pot ser que si ho estiguin. Una recomanaci´o per aquest problema seria que el web crawler reintenti explorar cada p`agina web un determinat nombre de vegades, mentre la p`agina resta fora de servei. Aquest int`erval de temps acostuma a ser de 13 hores en un m`axim de 3 intents. Els web crawlers normalment generen falses alarmes als administradors de p`agines web, aix` o es degut al gran ample de banda que utilitzen quan exploren un servidor web. Accessos reiterats a una p`agina web sovint activen falses alarmes en el servidor. Algunes guies recomanen que els web crawlers s’identifiquin davant dels servidors web, mitjan¸cant la cap¸calera User-Agent HTTP, proporcionant almenys una adre¸ca de correu de contacte. Tamb´e es recomana que entre acc´es i acc´es a un servidor web, el web crawler s’esperi un temps. Un altre problema relacionat amb la xarxa es produeix quan el sevidor web amb el qual s’ha establert connexi´o TCP a trav´es del port 80, no respon. ´ a dir, l’operaci´o connect() i send() conclouen amb `exit, per`o en canvi el Es servidor no envia informaci´o de resposta. Aquesta classe de problemes s´on producte d’un firewall mal configurat que bloqueja el tr`afic de sortida en el host remot. La conclusi´ o que s’extreu d’aqu´ı ´es que totes les operacions


´ WEB CAP´ITOL 2. EXPLORACIO

Figura 2.11: Esquema general del web crawler

26


´ WEB CAP´ITOL 2. EXPLORACIO

27

han de tenir un timeout. El web crawler ha d’estar preparat per ser capa¸c d’avortar qualsevol operaci´o de xarxa en qualsevol moment, ja que cada desc`arrega activa pot deixar de rebre informaci´o sense previ av´ıs del servidor web.

2.3.2

Resoluci´ o massiva de DNS

La resoluci´o massiva de DNS acostuma a desencadenar problemes en els servidors locals de DNS de la xarxa on es troba el web crawler. Els servidors de DNS local encuen o deneguen connexions provocades per intents de resoluci´o massiu de DNS. Aquest problema provoca que no es pugui resoldre la IP d’alguns servidors web i arribar a la falsa conclusi´o que el servidor est`a fora de servei o simplement no existeix. Una soluci´o consisteix en testejar els servidors de DNS davant de jocs de proves cr´ıtics. Sovint el problema no ´es degut al servidor de DNS local, sin´o que es causat per problemes amb el servidor de DNS remot. Alguns administradors acostumen a instal·lar en una mateixa m`aquina f´ısica, tant el servidor de p`agines web, com el servidor de DNS. En aquests casos, quan el servidor de DNS falla, el problema no es soluciona durant un llarg per´ıode de temps. Un altre cas curi´os que cal tenir en compte ´es l’´ us del prefix www a la part del host de les URLs. En moltes p`agines web, tant www.domini.net com domini.net, resolen la mateixa adre¸ca IP, i per tant, tenen els mateixos continguts. Alguns administradors de p`agines web posen el prefix en els hipervincles de les p`agines web, mentre que n’hi ha d’altres que no ho fan. L’´ unica soluci´o a aquest problema ´es considerar que tant www.domini.net com domini.net s´on la mateixa URL, o b´e realitzant una comprovaci´o individual per comprovar que ambd´os p`agines web s´on duplicats o no.

2.3.3

Implementacions HTTP

En alguns casos, ´es impossible con`eixer el tipus de document web a partir de l’extensi´ o de fitxer de la URL. Algunes URLs no tenen extensi´o i algunes altres tenen extensions ambig¨ ues. Per exemple, alguns fitxers que acaben en .exe en realitat s´on pagines web amb contingut HTML, ja que s´on p`agines creades din`amicament pel servidor. Alguns clients o agents web, com es el cas de web browsers o web crawlers, treballen u ´nicament amb alguns formats de document web concrets. El web crawler implementat nom´es treballa amb documents HTML, PDF, TXT, DOC, RTF i alguns documents HTML creats din`amicament pels servidors. La cap¸calera del protocol HTTP proporciona un camp per indicar el tipus de contingut del document web a descarregar: GET /pagina.html HTTP/1.1 Accept: text/plain, text/html


´ WEB CAP´ITOL 2. EXPLORACIO

28

Aix`o indica que el web crawler u ´nicament pot tractar amb text pla o documents HTML. Les cap¸caleres de resposta HTTP dels servidors web tamb´e proporcionen el camp Content-type que indica el tipus de document que s’est`a procedint a descarregar, tanmateix aquest camp no ´es obligatori, i per tant no existeix un cam´ı del tot fiable per esbrinar amb anticipaci´o el tipus de contingut dels documents web que es descarreguen. Acordant a l’especificaci´o HTTP, el servidor hauria d’enviar un codi de resposta 406(no acceptable) quan un document web del tipus especificat en l’operaci´o GET no est`a present en el servidor de la URL donada. Alguns web browsers simplement omplen la cap¸calera amb el contingut Accept: */*, per tant, alguns servidors web ni tan sols comproven la pres`encia del camp Accept. Aquest fet, d’alguna manera ha perdut import`ancia amb el temps, i per tant, ara mateix qualsevol servidor web pot enviar un document web de qualsevol tipus. Per assegurar una bona cobertura de la Web, cal limitar la quantitat d’informaci´o que es descarrega durant una desc`arrega desde qualsevol servidor web. Aix`o es pot aconseguir limitant el tamany m`axim de la p`agina, i el n´ umero de p`agines web que s´on descarregades des de un servidor. Normalment, es limita el tamany m`axim d’un document web entre 300 i 400KB, encara que el tamany m`axim a descarregar en el web crawler implementat es de 5MB. Es considera que aquests tamanys s´on suficients per capturar les paraules claus necess` aries per indexar el document. Per informar el servidor web del tamany l´ımit cal usar el camp HTTP Range de la cap¸calera HTTP al moment de fer el GET. GET /pagina.html HTTP/1.1 Range: 0-400000 En alguns casos, els servidors web retornen el codi de resposta 416 (error de rang). Aquesta resposta succeeix quan els documents web tenen un tamany inferior al que s’ha indicat en el rang. Aquest tipus de resposta no ´es correcta ja que l’especificaci´o del protocol indica que si el segon valor es major o igual al tamany del document, aleshores simplement es descarrega el document fins al seu tamany. Es tracta d’un mal u ´s del protocol HTTP en els servidors web. En el cas que sorgeixin errors de rang en les respostes, cal realitzar un segon intent de desc`arrega, per`o en aquest cas no s’ha d’usar el camp Range a la cap¸calera. En tot cas, un servidor pot ignorar el camp de rang, per tant el web crawler ha d’estar preparat per desconnectar-se del servidor, o descartar part dels continguts del document web si el servidor envia m´es informaci´o de l’admesa. Aquests casos explicats posen de manifest la pres`encia de p`agines web amb cap¸caleres HTTP de retorn ambig¨ ues o incorrectes. Per`o existeixen casos en qu`e els servidors web envien documents web sense la corresponent


´ WEB CAP´ITOL 2. EXPLORACIO

29

cap¸calera HTTP. Alguns clients web toleren aquesta classe de comportaments, mentre que d’altres no, i ho indiquen mitjan¸cant missatges d’error. Aquests casos puntuals normalment s´on conseq¨ u`encia de software o firewalls mal configurats. El web crawler ha d’estar preparat per rebre contingut sense cap¸caleres. Un cas similar es produeix quan s’envien documents amb cap¸caleres incomplertes, com ara, una resposta indicant un redireccionament cap a una altra URL, per`o la URL no est`a indicada. No hi ha una soluci´o concreta per aquest problema, i per tant, la millor soluci´o ´es no descarregar el document i tancar la connexi´o. ´ dif´ıcil constru¨ır un lloc web sense hipervincles interns trencats, ´es a Es dir, que contenen URLs amb destinacions inexistents. El codi de retorn d’un document web que no existeix dins d’un servidor web ´es el 404, mitjan¸cant el qual els clients web saben que aquell document no existeix. Tanmateix, els administradors web tenen tend`encia a fer que enlloc de retornar un missatge amb codi 404, es retorni una p`agina web concreta del servidor quan no existeix el document sol·licitat. El problema recau quan el web crawler considera que aquella p`agina ´es v`alida, encara que en realitat la p`agina no existeix. Una soluci´o a aquest problema consisteix en que els administradors de servidors web indiquin d’alguna manera o altra els codis de resposta reals, indicant exactament els motius de l’error. Una part important dels ordinadors s´on configurats amb una data, hora o zona hor`aria incorrecta. En aquests casos, no ´es possible esbrinar les dates reals de modificaci´ o o per´ıodes d’actualitzaci´o de les p` agines web, tanmateix, no totes les dates han de s´er descartades. Si un servidor web respon amb una marca de temps futura, per`o amb pocs minuts o hores de difer`encia respecte l’hora real, es pot considerar que el rellotge del servidor probablement est`a desfa¸cat, per exemple, t´e la zona hor`aria incorrecta o est`a mal configurada. Es pot considerar que si l’´ ultima data de modificaci´o d’una p`agina web ´es anterior a l’any 1993, aleshores aquella data ´es incorrecta. Per dates futures, una possible heur´ıstica consisteix en veure si no supera les 24 hores de difer`encia respecte l’hora actual, en aquest cas s’ha de canviar a la data actual. Si la data ´es superior a 24 hores, aleshores cal ignorar-la.

2.3.4

Codificaci´ o HTML

La tend`encia natural dels programadors de p`agines web ´es donar per v`alida una p`agina web quan aquesta es visualitza correctament en un client web. Tot i que una p`agina web es visualitzi correctament en un browser, no significa que el codi HTML de la p`agina sigui tamb´e correcte. Existeixen nombrosos errors de codificaci´o en moltes p`agines web, i en alguns casos perjudiquen el web crawler. Alguns d’aquests errors s´on els que es mostren a continuaci´o:


´ WEB CAP´ITOL 2. EXPLORACIO

30

Figura 2.12: Mapa de temps • Combinar l’´ us de les doble cometes, cometes simples, o sense cometes. Per exemple: <IMG ALT="Text de la imatge"SRC=’imatge.jpg’ border=3> • Combinar marques en la forma HTML i en la forma XHTML. Per exemple: <BR> i <BR/> • Creuar entorns. Per exemple: <SMALL><B>Text</SMALL></B> • Combinar l’´ us de maj´ uscules i min´ uscules en les marques. Per exemple: <IMG src="text". En HTML, les marques s’han de posar en maj´ uscules, mentre que en XHTML en min´ uscula. • Cadenes sense final. Per exemple: <IMG ALT="...>. Aquesta situaci´o ´es molt problem` atica ja que pot causar un desbordament de buffer si l’analitzador no es capa¸c de tractar-ho. Una manera de resoldre aquests casos es utilitzar un analitzador HTML orientat a events, ja que en molts casos no seria possible mapejar la p`agina ´ necessari que els administradors web utilitzin eines web en forma d’arbre. Es de correcci´o de codi HTML en les seves p`agines web.

2.3.5

Caracter´ıstiques dels continguts web

L’exist`encia de r`epliques exactes de documents web ´es elevada a Internet. Detectar-ho no ´es f` acil, almenys abans de descarregar el document ja que cal verificar que el contingut descarregat coincideixi amb algun altre descarregat anteriorment. Detectar r`epliques pot resultar important, ja que d’aquesta manera no cal indexar documents id`entics. Una manera de detectar r`epliques consisteix en guardar el resultat d’aplicar una funci´ o de hash sobre cada document web descarregat, de manera que dos documents amb resums de hash id`entics s´on documents iguals. La funci´o de hash cal aplicar-la just despr´es d’aplicar el filtratge de continguts


´ WEB CAP´ITOL 2. EXPLORACIO

31

HTML, de manera que dos documents amb estils difer`ents, per`o amb continguts iguals es consideraran r`epliques. Aquest m`etode evita emmagatzemar pagines iguals al disc, per`o no evita haver-les de descarregar. Un altre aspecte important a tenir en compte s´on les llistes de blogs, llistes de correu o f` orums de debat. Es tracta de grans repositoris d’informaci´o, formats per petites aportacions d’individus. Aquests poden ser una font u ´til d’informaci´o quan el tema que tracten no es pot trobar en cap altre lloc de la Web. Un t´ıpic exemple s´on els missatges de suport t`ecnic, que normalment descriuen solucions a problemes amb condicions i configuracions espec´ıfiques de software o hardware. Tanmateix, sovint les aportacions que es fan no s´on avaluables en comparaci´o a altres p`agines, ja que tenen un contingut molt curt o b´e s´on poc clars. El problema recau amb la granularitat de la informaci´o, per exemple, una petita aportaci´o cont´e poca informaci´o, per`o en canvi, la conversa completa pot ser avaluable. A m´es a m´es, recentment els spammers estan comen¸cant a utilitzar els blogs per penjar hipervincles cap a les seves p`agines web de manera autom`atica. Una soluci´o a aquest problema ´es afegir el tag rel="nofollow", per tal d’indicar als web crawlers que el link no s’ha d’explorar.

2.3.6

P` agines web din` amiques

Alguns servidors web tenen comportament din`amic, mitjan¸cant el qual generen p`agines web amb continguts espec´ıfics sota demanda. Una manera de tractar amb els diferents usuaris que es connecten al servidor ´es generar i afegir identificadors a les URLs, per exemple www.domini.net/web/index.html?jsessid=34E67235. Aquests identificadors, m´es tard, s´on usats per detectar sessions. Des del punt de vista d’un web crawler, l’´ us d’identificadors de sessi´o suposa retrobarse amb el problema de continguts duplicats. Els noms t´ıpics de variables utilitzades per a emmagatzemar identificadors de sessi´o s´on: CFID, CFTOKEN, PHPSESSID, JSESSIONID, etc. Aquestes variables s´on sovint utilitzades pels servidors web din`amics i dos documents web que nom´es difereixen en l’identificador de sessi´ o tenen tota la pinta de r`epliques. Una manera per evitar aix`o ´es composar i utilitzar una llista d’identificadors de variable coneguts de forma manual, de manera que quan el web crawler detecti un d’aquests identificadors en posi el valor a null. Un error habitual al moment de codificar els hipervincles es oblidar-se de posar el directori arrel, per exemple: a/b/c quan en realitat es vol fer refer`encia a /a/b/c. Tamb´e ´es habitual trobar URLs amb subdirectoris que es repeteixen v`aries vegades, com ara a/b/c/c/c/c/. Aix`o ´es degut a les p`agines din`amiques en les quals l’autor, per error, n’ha creat un enlla¸c relatiu quan en realitat hauria de s´er l’enlla¸c absolut.


´ WEB CAP´ITOL 2. EXPLORACIO

32

Les p`agines web generades din`amicament s´on, en general, lentes de transferir en comparaci´ o amb les p`agines web est`atiques, concretament acostumen a ser m´es lentes en un factor de 10 o 100, en funci´o de les implementacions i dels sistemes de cach´e emprats en el servidor web. En alguns casos, aix` o ´es degut a que la construcci´ o de la p`agina web requereix consultar diferents fonts d’informaci´o, i en altres casos aix`o pot ser degut a errors de programaci´o. Una p`agina lenta pot malgastar recursos del web crawler for¸cant a aquest a mantenir connexions actives durant un llarg periode de temps. Es per aquest motiu que cal utilitzar sempre l’´ us de timeouts, o redu¨ır l’ample de banda destinat a aquestes connexions.

2.4

Par` ametres i configuracions

En aquest apartat s’expliquen els par`ametres de l’aplicaci´o que es poden modificar per tal de configurar adientment les exploracions. El transcurs d’una exploraci´ o pot variar en funci´o dels seus par`ametres inicials. En aquest sentit hi intervenen aspectes importants com s´on la profunditat d’exploraci´o, el nombre m`axim de desc`arregues simult`anies, els tipus d’extensions dels fitxers que volem explorar, quins dominis explorar i quins no, si volem, o no, explorar els hipervincles amb destinacions externes al host inicial, etc. Exploraci´ o d’una ` area p´ ublica Consisteix en explorar els nodes web d’una regi´o p´ ublica d’una internet o LAN, en aquest sentit cal determinar una URL inicial dins d’aquesta `area p´ ublica on s’efectuar`a l’exploraci´o. Exploraci´ o d’una ` area restringida Consisteix en explorar els nodes web d’una regi´o restringida d’una internet o LAN, en aquest sentit cal indicar un formulari d’acc´es omplert pr`eviament de forma manual mitjan¸cant l’eina d’Auto-LogIn de l’aplicaci´o. En aquest formulari emmagatzemat al disc i consta, a part dels correponents camps del formulari i els seus valors, la URL on cal enviar el formulari mitjan¸cant el procediment POST, i que per tant ser`a la URL d’inici de l’exploraci´o restringida. Cal emprar aquest tipus d’exploraci´o si es desitja, per exemple, explorar un compte de webmail privat. Profunditat d’exploraci´ o Determina el l´ımit de l’exploraci´o en termes de fond` aria, ´es a dir, els nodes que es troben a una fond`aria superior al l´ımit no s’exploren (no es posen a la cua de nodes pendents d’explorar). La fond` aria es mesura num`ericament, de manera que la fond`aria d’un node ´es la dist`ancia en enlla¸cos desde el node inicial fins a aquest, es a dir, ´es el nombre d’enlla¸cos que cal rec`orrer des de el node inicial fins a arribar al node. El node inicial sempre es troba a la fond`aria zero, per tant, una exploraci´o


´ WEB CAP´ITOL 2. EXPLORACIO

33

limitada a una fond` aria zero nom´es exploraria el node inicial. Aquest par`ametre cal usar-lo amb un cert grau de precauci´o, ja que si habilitem la possibilitat d’explorar hosts externs i, a m´es a m´es, indiquem un profunditat l´ımit molt elevada, ens podrem trobar que en determinats moments de l’exploraci´ o s’exploren nodes que no s´on del nostre inter`es. Desc` arregues simult` anies Determina el nombre m`axim de desc`arregues simult`anies que efectuar` a l’aplicaci´o en cada moment durant el transcurs de l’exploraci´ o. Tal i com s’ha explicat en apartats anteriors, cada desc`arrega ´ important saber s’efectua mitjan¸cant fils d’execuci´o concurrents de Java. Es aplicar correctament aquest par`ametre, ja que ´es molt important aprofitar tot l’ample de banda que ens ofereix la nostra connexi´o. Tanmateix, tamb´e cal recordar els problemes de xarxa explicats a l’apartat d’anomalies i tot el que comporta efectuar m´ ultiples desc`arregues massives. Desc` arregues simult` anies per host Determina el nombre m`axim de desc`arregues que s’efectuaran simult`aniament sobre un mateix host o sub´ a dir, limita el nombre de connexi´ons que host (domini o subdomini). Es s’estableixen sobre cada host de manera simult`ania. Aquest aspecte tamb´e ´es molt important, i pot determinar, en part, l’`exit d’una exploraci´o. Limitar el nombre de connexions sobre un servidor web t´e un seguit de justificacions. El primer motiu ´es evitar saturar les connexions dels servidors web, ja que el nostre ample de banda i el nostre equipament poden soportar-ho, per`o els servidors web remots no. El segon motiu es evitar que els servidors web ens deneguin les connexions, ja que poden considerar que les desc`arregues del nostre web crawler s´on un intent d’atac. La tend`encia natural dels servidors web ´es admetre poques connexions procedents d’una mateixa adre¸ca IP d’origen. Si s’usa un valor elevat es refusaran moltes connexions, i per tant, fallaran moltes desc`arregues durant ´ important remarcar que el seu valor no pot ser superior al l’exploraci´ o. Es nombre de desc`arregues simult`anies explicat al par`agraf anterior. Explorar enlla¸ cos externs Determina si s’exploraran aquells nodes que tenen el host diferent del host del node inicial. En aquest sentit, les URLs que tenen per host subhosts(subdominis) del host inicial tamb´e es consideren externes. Aquest par`ametre ´es u ´til si volem explorar u ´nicament nodes que pertanyen exclusivament al host inicial. Explorar hosts del domini Aquest par`ametre complementa l’explicat en el par`agraf anterior. Aquest par`ametre nom´es es t´e en compte si no es desitja explorar enlla¸cos externs. Activant aquest par`ametre s’exploraran


´ WEB CAP´ITOL 2. EXPLORACIO

34

subhosts(subdominis) que tenen per arrel el host(domini) del node inicial, de manera que far` a possible una exploraci´o de tot un domini i els seus corresponents subdominis, si en t´e. Donar prioritat al host inicial Aquest par`ametre tamb´e complementa el par`ametre d’explorar enlla¸cos externs, per`o en aquest cas nom´es es t´e en compte si es desitja explorar enlla¸cos externs. Si es desitja explorar enlla¸cos externs ens podem trobar que a vegades s’exploren primer nodes que pertanyen a hosts molt allunyats(poc relacionats) del host del node inicial. En la majoria de casos aix`o no interessa, ja que ens sol interessar principalment els nodes que pertanyen al host inicial a difer`encia de la resta. Si s’activa aquest par`ametre, aleshores entra en funcionament el sistema de prioritats explicat anteriorment, de manera que els nodes que pertanyen al host o subhosts del host del node inicial, s’afegeixen a la cua de prioritaris, mentre que la resta s’afegeixen a la cua de secundaris. Sempre explorar el seg¨ uent disponible Aquest par`ametre es podria obviar ja que sempre hauria d’estar activat, tanmateix pot resultar interessant tenir-lo desactivat en alguns casos molt puntuals. Si limitem el nombre de desc`arregues simult`anies per host, ens trobarem que s’efectuen desc`arregies simult`anies sobre hosts diferents, ja que el web crawler sempre intentar`a efectuar tantes desc`arregues com les que s’hagin indicat. Per tant, quan sobre un host ja s’assoleix el l´ımit de desc`arregues, cal localitzar dins de la cua de desc`arregues pendents un altre node(URL) amb un host o subhost diferent per iniciar-ne la desc`arrega. Aquest u ´ltim proc´es nom´es s’efectuar`a si tenim activat el par`ametre d’explorar el seg¨ uent disponible. Tenir desactivat aquest par`ametre pot ser u ´til si volem prioritat absoluta en descarregar primer els nodes que pert`anyen al host inicial, ja que mai es provar`a de descarregar un node d’un altre host fins que no en quedin del host inicial. Cerca Breadth-First Determina que s’emprar`a una exploraci´o amb estrat`egia Breadth-First. Consisteix en fer un u ´s FIFO de la cua de nodes pendents de descarregar. Aquesta estrat`egia s’explica en detall, a l’apartat d’estrat`egies d’exploraci´o. Cerca Depth-First Determina que s’emprar`a una exploraci´o amb estrat`egia Depth-First. Consisteix en fer un u ´s LIFO de la cua de nodes pendents de descarregar. Aquesta estrat`egia s’explica en detall, a l’apartat d’estrat`egies d’exploraci´o. Dominis explorables Representa el conjunt de dominis base d’Internet (.net, .org, .edu, etc.) que seran explorats si apareixen hipervincles cap


´ WEB CAP´ITOL 2. EXPLORACIO

35

a hosts allotjats en aquests dominis. Per tant, les URLs allotjades en els dominis que no pertanyen al grup no seran explorades. Extensions explorables Representa el conjunt d’extensions de document que seran explorades. En aquest sentit, els documents amb extensions no escollides no seran explorats. Els documents amb extensions no reconegudes(i per tant, ”v`alides”) s´on sempre explorats. Els documents amb extensions no v`alides s´on aquells que tenen alguna de les seg¨ uents extensions: .gif, .jpg, .ppt, .bmp, .png, .zip, .gz , .ps, .rar, .ace, .mid, .wav, .mp3, .mp2, .exe, .tar, .avi, .mpg, .mpeg, .mov, .swf, .bin i .ram. Es tracta d’extensions de fitxers que apar`eixen freq¨ uentment a les p`agines web d’Internet i que han de ser descartades ja que no tenen contingut textual u ´til. Les extensions reconegudes, i que per tant tenen contingut textual que pot ser extret i indexat s´on les seg¨ uents: .asp, .cfm, .htm, .html, .jsp, .php, .php3, .phml, .pl, .shml, .pml, .chtml, .aspx, .js, .pdf, .doc, .txt i .rtf. Les extensions sense contingut HTML s´on les seg¨ uents: .pdf, .doc, .rtf i .txt.

2.5

Estrat` egies d’exploraci´ o

En aquest apartat, s’expliquen les diferents estrat`egies d’exploraci´o que es poden utilitzar en aquest web crawler. Una estrat`egia d’exploraci´o ve determinada b`asicament per la manera en qu`e s’insereixen les URLs a la llista de nodes pendents d’explorar. Aix´ı doncs, ens pot interessar explorar primer un determinat tipus de documents, i deixar pel final aquells que no ens interessen tant. Les estrat`egies nom´es tenen sentit quan cal fer exploracions massives a gran escala, ja que si nom´es volem descarregar un conjunt concret de p`agines web, aleshores no importa l’ordre en qu`e ho fem. La problem`atica que tenen les exploracions a gran escala, com les que fan els grans motor de cerca d’Internet, ´es que cal explorar una enorme quantitat de documents web. Aquestes exploracions no acaben mai, ja que no tenen uns l´ımits establerts i a m´es a m´es, han de reexplorar documents que s’actualitzen peri`odicament. En aquests casos, cal explorar sempre els nodes m´es importants i descartar o deixar pel final la resta. Cada motor de cerca utilitza una s`erie de criteris per determinar si una p`agina ´es m´es bona que una altra i en aquest sentit, hi tenen molt a veure les estrat`egies d’exploraci´o que s’utilitzin. En el web crawler implementat d’aquest projecte, s’han desenvolupat v`aries estrat`egies d’exploraci´o, algunes de les quals s´on les seg¨ uents: estrat`egia Breadth-First, Depth-First, Backlink-Count, Batch-Pagerank i Largersites-first. Cada estrat`egia d’exploraci´o t´e una s`erie de caracter´ıstiques que la fan diferent de les altres, ja que per exemple, algunes utilitzen un menor


´ WEB CAP´ITOL 2. EXPLORACIO

36

consum dels recursos, per`o en canvi exploren amb igual prefer`encia els nodes ´ important deixar clar en aquest punt, menys profunds i els m´es profunds. Es que la fond` aria d’un node ´es el nombre d’enlla¸cos que cal rec`orrer per arribar fins a ell des de el node inicial. Abans d’iniciar una exploraci´o cal configurar-la en funci´ o de les nostres necessitats.

2.5.1

Breadth-First

´ el tipus d’exploraci´o que utilitzen pr`acticament la gran majoria de motors Es de cerca d’Internet. Consisteix en que l’estructura de nodes pendents d’explorar ´es una cua, ´es a dir, ´es una estructura de dades amb una estrat`egia de moviments FIFO (el primer que entra ´es el primer que surt). En una cua, l’operaci´o d’inserir consisteix en afegir un element a la fi d’aquest, mentre que la d’eliminar es fa sobre el primer element present a la cua (el que va ser inserit fa m´es temps). La cua modela un arbre, i quan es van inserint URLs, tendeix a cr`eixer en amplada i no en fond` aria, de manera que cada nivell de l’arbre representa un nivell de profunditat de l’exploraci´o. Quan tots els nodes d’un nivell s´on explorats, es procedeix a l’eploraci´o del seg¨ uent nivell i per tant, augmenta en una unitat la fond` aria de l’arbre. L’avantatge d’aquest sistema ´es que en cada moment sempre s’exploren els nodes menys profunds, ´es a dir, els nodes m´es pr`oxims al node inicial, deixant pel final aquells que s´on m´es profunds, i per tant, tenen menys valor. Es tracta d’una exploraci´ o completa ja que la profunditat ´es finita. T´e la peculiaritat que els primers nodes s´on sempre els primers en ser explorats, la qual cosa vol dir que els nodes repetits sempre es detecten en profunditats m´es elevades. Aquesta caracter´ıstica no te cap rellev`ancia amb el funcionament de l’algorisme Breadth-First, tanmateix la seva mancan¸ca ´es un problema en l’algorisme Depth-First tal i com s’explicar`a en el seg¨ uent ´ important destacar el cost espaial de l’exploraci´o Breadth-First, apartat. Es ja que t´e un cost molt elevat d’ordre O bd , on b ´es l’amplada i d la profunditat. Aix`o ´es degut a que mant´e en mem`oria cada node de cada nivell de l’exploraci´ o. Per tant, cal disposar d’una gran quantitat de mem`oria si es pret`en realitzar una exploraci´o de gran escala.

2.5.2

Depth-First

L’exploraci´o Depth-First o, exploraci´o en profunditat, consisteix en que l’estructura de nodes pendents d’explorar ´es una pila, ´es a dir, ´es una estructura de dades amb una estrat`egia de moviments LIFO (el darrer que entra ´es el primer que surt). Intu¨ıtivament, ens la podem imaginar com una pila de valors en la qual per treure’n un del mig, cal haver tret tots els que t´e al


´ WEB CAP´ITOL 2. EXPLORACIO

37

Figura 2.13: Exemple FIFO damunt. La pila modela un arbre, tal que a mesura que es van inserint URLs, tendeix a cr`eixer en profunditat i no en amplada. L’algorisme explora l’arbre de branca en branca, de manera que en cada moment, sempre explora un node d’una branca fins a arribar al final d’aquesta. Quan arriba al final d’una branca, explora la seg¨ uent branca m´es pr`oxima. L’avantatge d’aquest sistema ´es que, en comparaci´o amb l’exploraci´o Breadth-First o exploraci´o en amplada, consumeix molts menys recursos en termes d’espai. De manera similar al Breadth-First, el Depth-First tamb´e ´es complet, per`o t´e dos inconvenients que no el fan gaire u ´til a l’hora d’explorar. El primer d’aquests inconvenients ´es que no t´e en compte la necessitat d’explorar primer els nodes menys profunds, amb una clara tend`encia a donar prioritat als nodes m´es allunyats del node inicial, ja que les primeres subbranques en ser explorades sempre s´on les m´es pr`oximes a les fulles de l’arbre. El segon inconvenient fa refer`encia al tema dels nodes repetits que s’havia comentat a l’apartat anterior. Consisteix en que l’algorisme no pot esbrinar mai si el node que est`a explorant en cada moment s’el trobar` a m´es endavant en una profunditat menor. Aix`o no passa amb el Breadth-First, ja que aquest sempre sap que cada node que explora es troba en la profunditat menor possible.


´ WEB CAP´ITOL 2. EXPLORACIO

38

Figura 2.14: Exemple LIFO

Les conseq¨ u`encies d’aix` o perjudiquen seriosament l’exploraci´o, ja que poden haver-hi molts nodes que caldrien ser explorats i al final no s’exploren. Suposem que cal explorar en profunditat una p`agina web, i que la profunditat l´ımit imposada per la configuraci´o ´es de 5 nivells. Durant el transcurs de l’exploraci´ o s’arriba a un node del nivell 5 que t´e molts hipervincles, els quals no s’afegeixen a la pila perqu`e no es troben dins del l´ımit perm`es ja que tenen fond` aria 5+1. M´es endavant, l’algorisme d’exploraci´o detecta un hipervincle a aquest mateix node que ara es troba a una fond`aria de 3 nivells, aquest node ara ´es autom`aticament descartat ja que ja s’havia explorat amb anterioritat. S’observa que si l’algorisme hagu´es descobert primer aquest node en la fond` aria 3, s’hagu´es explorat tot el subarbre que arrelava aquest node. Per resoldre aquest problema, cal realitzar uns petits canvis en el funcionament de l’algorisme. Cada vegada que l’aplicaci´o de crawling proporciona al gestor de desc`arregues una URL, cal comprovar si aquesta ja ha estat explorada, i per tant descarregada anteriorment, o b´e si es troba a la cua de desc`arregues pendents (aix`o es f`acilment comprovable consultant, a l’estructura de nodes explorats, si aquell node es troba en estat pendent). En el cas que ja hagi estat explorada, cal consultar la seva profunditat. Si la profunditat quan es va descarregar ´es superior a l’actual, caldr`a explorar tots els seus hipervincles i canviar la seva antiga profunditat per la nova. En el cas que es trobi a la cua de desc`arregues pendents, caldr`a localitzar el node dins de la pila i fer la mateixa comprovaci´o, ´es a dir, si l’anterior


´ WEB CAP´ITOL 2. EXPLORACIO

39

profunditat ´es superior, caldr`a actualitzar-la per la nova.

2.5.3

Backlink-Count

Aquesta ´es una estrat`egia d’exploraci´o basada en les caracter´ıstiques de les p`agines web, concretament amb el nombre d’hipervincles. Consisteix en explorar primer, aquelles p`agines web tals que existeix un elevat nombre d’hipervincles que apunten cap a elles. Aix´ı doncs, la seg¨ uent p`agina a explorar ´es la m´es enlla¸cada des de les p`agines web anteriorment explorades. En aquest tipus d’exploraci´o, es considera que les millors p`agines s´on sempre les m´es referenciades per les altres. Aquesta estrat`egia d’exploraci´o no ha estat implementada en el web crawler desenvolupat.

2.5.4

Batch-Pagerank

Es basa en generar un valor de Pagerank a partir de p`agines explorades. El concepte de Pagerank es pot considerar com un indicador de la qualitat d’una p`agina web, vindria a s´er all`o que en programaci´o gen`etica es coneix per fitness. En aquest sentit, interessa tenir en compte u ´nicament aquelles p`agines que tenen un bon Pagerank. Aquesta estrat`egia calcula una estimaci´o de Pagerank, a partir de les p`agines explorades recentment, concretament aix`o es realitza cada K p`agines descarregades. Les seg¨ uents K p`agines web a descarregar s´on aquelles que tenen un Pagerank estimat m´es gran. Aquesta estrat`egia es considera millor que l’estrat`egia Backlink-count. Una variant del Batch-Pagerank ´es el Partial-Pagerank. Aquest ´es similar al mencionat anteriorment, per`o amb la difer`encia que entre rec`alculs de Pagerank, s’assigna un Pagerank temporal a les noves p`agines web, a partir de la suma dels Pagerank de les p`agines que tenen hipervincles que apunten cap a ella, dividit pel nombre d’hipervincles de sortida d’aquestes p`agines. Ambd´os estrat`egies no han estat implementades en el web crawler desenvolupat.

2.5.5

Larger-sites-first

Tal i com el seu nom indica, l’objectiu d’aquesta estrat`egia ´es evitar tenir massa p`agines d’un lloc web pendents de descarregar. Amb aix`o es pret`en evitar haver de deixar pel final grans llocs web, de manera que ´es millor anar-los descarregant de mica en mica que de cop. El web crawler utilitza el nombre de p`agines sense explorar d’un mateix lloc web com a indicador de prioritat, i per tant, comen¸ca primer per aquells que tenen major nombre de p`agines pendents. Es considera que ´es millor que l’estrat`egia Breadth-First. Aquesta estrat`egia d’exploraci´o no ha estat implementada en el web crawler desenvolupat.


´ WEB CAP´ITOL 2. EXPLORACIO

2.6

40

Exploracions d’` arees restringides

Una exploraci´ o en una ` area restringida consisteix en explorar un conjunt de nodes web, el contingut dels quals nom´es est`a disponible si pr`eviament s’ha efectuat amb `exit un proc´es d’autoritzaci´o mitjan¸cant la completaci´o i enviament d’un formulari web. Quan un servidor web no accepta (d´ona per v`alides) les dades enviades en el formulari, l’acc´es a la zona restringida continua essent restringit, tot i que no hi ha una forma concreta d’averiguar-ho. Existeixen diferents formes d’autentificar-se davant d’un servidor web, entre aquestes hi ha el m`etode convencional implementat en el protocol HTTP, en el qual s’insereix u ´nicament un login i una contrasenya. Tanmateix, la pres`encia de formularis web amb m´ ultiples camps addicionals, generats i omplerts autom` aticament mitjan¸cant el comportament din`amic d’alguns servidors, fa necessari emprar la metodologia POST per enviar els formularis al servidor. La idea que cal extreure de tot aix`o ´es que primer cal obtenir un formulari, omplir-lo amb unes dades d’autentificaci´o v` alides i finalment enviar-lo al servidor. Els dos primers passos d’obtenci´o i completaci´o de formularis es fan mitjan¸cant l’eina d’Auto-LogIn implementada i adjunta al web crawler proposat. L’´ ultim pas del proc´es es fa just abans de descarregar la URL d’acc´es, que en aquests casos sempre ser`a la URL d’acci´o. Per a l’obtenci´o d’un formulari web, l’usuari ha d’indicar la URL on hi ha el formulari. L’aplicaci´o descarrega, aplicant el proc´es habitual de desc`arrega HTTP, el contingut HTML de la URL especificada. Com que els formularis d’autentificaci´o no segueixen un patr´o concret i en una mateixa p`agina web hi poden haver varis formularis, s’extreuen tots els formularis del document. Aquest proc´es s’efectua aplicant una an`alisi l`exica i sint`actica del document HTML, que es realitza emprant la classe FiltreHTML (implementada a la vegada utilitzant la llibreria JTidy). De cada formulari s’extreu la URL d’acci´o i els seus camps i correspo´ important remarcar que hi ha camps que no tenen efecte nents valors. Es visual en els clients web ja que s´on de tipus hidden. Els camps hidden acostumen a ser camps omplerts autom`aticament pel propi servidor web i s´on utilitzats en llocs web din`amics per emmagatzemar identificadors de sessi´ o i altra informaci´o utilitzada per al correcte funcionament de la p`agina web. Aquests camps cal deixar-los intactes. La URL d’acci´o determina l’adre¸ca on s’ha de fer el POST del formulari. Com que en una p`agina web hi poden haver m´ ultiples formularis, l’aplicaci´o es limita a llistar tots els formularis per pantalla, per tal que sigui el propi usuari el qui esculli quin ser`a el formulari que caldr`a usar. Un cop l’usuari escull el formulari, l’aplicaci´o mostra en una taula els


´ WEB CAP´ITOL 2. EXPLORACIO

41

camps del formulari juntament amb els respectius valors, si es que ja en tenen. Per a cada camp es mostra tamb´e el seu nom, normalment els desenvolupadors de p`agines web posen noms adequats als camps, de manera que no ha de suposar cap problema per a l’usuari identificar en quin camp cal posar el login i en quin la contrasenya. Un cop finalitzada l’edici´o d’un formulari, aquest s’emmagatzema al disc per al seu posterior u ´s, de manera que un formulari emmagatzemat al disc pot ser utilitzar en futures exploracions. La difer`encia entre una exploraci´o normal i una que es fa en una `area restringida, ´es que en la primera es descarreguen els nodes web seguint el procediment convencional de desc`arrega, mentre que en el segon, el primer node que es descarrega ´es la resposta del servidor web despr´es de fer el posting del formulari d’autentificaci´o, i tots els nodes de l’exploraci´o s’exploren tenint en compte les cookies. Per tenir en compte les cookies s’ha utilitzat la llibreria HTTPClient, que entre d’altres coses ofereix classes per a la composici´o i enviament de formularis web.


Cap´ıtol 3

Extracci´ o i indexaci´ o d’informaci´ o Aquesta part s’encarrega d’extreure la informaci´o u ´til dels documents descarregats mitjan¸cant l’eina d’exploraci´o web. Amb tota la informaci´o que s’extreu, es crea un ´ındex que permetr`a localitzar de forma r`apida en quins documents existeix una major freq¨ u`encia de les paraules que volguem cercar. Per a la creaci´o dels ´ındexs s’usa la llibreria Lucene per a Java. Lucene ´es el que es coneix per Information Retrievaler, una llibreria escalable i d’alt rendiment per a recollir i analitzar informaci´o.

3.1

Extracci´ o d’informaci´ o

De cada document descarregat i emmagatzemat a la Intranet durant el proc´es d’exploraci´o, cal extreure’n la informaci´o u ´til. La informaci´o u ´til ´es el text en pla dels documents, de manera que cal filtrar tot all`o que s´on marques de format, del que ´es text. Els tipus de documents dels quals s’extreu informaci´o s´on els que tenen format HTML, PDF, RTF, TXT i DOC. D’aquests s’obt´e meta-informaci´o addicional, com s´on el t´ıtol del document, el nom del seu autor, la seva descripci´ o o resum, i les paraules clau. La meta-informaci´o que s’extreu es tracta d’informaci´o que contenen tots els tipus de documents indicats, excepte en el cas dels fitxers TXT que no tenen cap meta de meta-informaci´o. Per a extreure aquesta informaci´o s’han utilitzat paquets i llibreries espec´ıfiques per al tractament d’aquests formats: JTidy per als documents HTML, PDFBox per als documents PDF, javax.swing.text.rtf per als documents RTF, POI per als documents de Microsoft Word, i per als documents TXT s’utilitzen els procediments convencionals de Java per a la lectura de fixers de text. S’han implementat un conjunt de filtres per a cada format. Aix´ı doncs, 42


´ I INDEXACIO ´ D’INFORMACIO ´ CAP´ITOL 3. EXTRACCIO

43

s’ha utilitzat el polimorfisme que ofereix Java per a filtrar els documents mitjan¸cant les classes FiltreHTML, FiltrePDF, FiltreRTF, FiltreDOC i FiltreTXT, totes elles s´on subclasses de la classe Filtre. L’elecci´o d’un filtre o un altre dep`en u ´nicament de l’extensi´o del document que cal filtrar en cada moment. No sempre es pot extreure la informaci´o dels documents, ja que es freq¨ uent trobar documents mal formats. Les llibreries mencionades anteriorment proporcionen classes per corregir documents, tot i que no s’han utilitzat ja que exigeixen un cost addicional. Mirar la figura 3.1. Juntament amb la meta-informaci´o de cada document, s’extreu el seu cos. Cal dir que la meta-informaci´o s´on camps d’informaci´o opcionals, de manera que la informaci´o important ´es la que cont´e el propi cos del document. En els documents HTML el cos es troba dins de les marques <body> i </body>, per tant, si extraiem la informaci´o del seg¨ uent document, obtindrem el text que es mostra al final: <html> <head> <title>MP3.com - the source for digital music!</title> <meta name="author"> content="MP3.com"> <meta name="keywords"> content="mp3.com, mp3, music, Robert Walter"> </head> <body> <dl><dd><div style="text-align: center"><div class="pad-5-bottom"> <a href="http://www.mp3.com/robert-walter/artists/194751/reviews.html&amp"> <dd><img src="http://image.com.com/mp3/images/artist/p24047pupb6.jpg" width="50" alt=" Robert Walter"></a> </dd> </div><dd><br/><a href="http://www.mp3.com/robert-walter/reviews.html"> <strong>Robert Walter</strong></a> <br/> <img style="padding-top:5px;"src="http://www.mp3.com/style/stars_5.0.gif"/> </dd></div><p class="f-small"><br/>Robert Walter Is unfortunatly in that class of musicans that is so good, that most people will probably never be lucky enough to stumble across. He’s a keyboarder from NewYork, one of the little..." <br/><span class="f-grey">Reviewed by</span> <a href="http://www.mp3.com/users/magookie/review.php"><strong>magookie</strong> </a></p></dd></dl> </body> </html>

T´ıtol MP3.com - the source for digital music! Autor MP3.com Keywords mp3.com, mp3, music, Robert Walter Resum Cos Robert Walter "Robert Walter Is unfortunatly in that class of


´ I INDEXACIO ´ D’INFORMACIO ´ CAP´ITOL 3. EXTRACCIO

Figura 3.1: Filtres implementats

44


´ I INDEXACIO ´ D’INFORMACIO ´ CAP´ITOL 3. EXTRACCIO

45

musicans that is so good, that most people will probably never be lucky enough to stumble across. He’s a keyboarder from NewYork, one of the little..." Reviewed by magookie El seg¨ uent exemple mostra un simple document RTF i la seva corresponent informaci´o extreta. S’observa que ´es f`acil extreure la meta-informaci´o ja que aquesta est`a emmarcada clarament: {\rtf1\ansi\ansicpg1252\deff0\deflang3082{\fonttbl {\f0\froman\fcharset0 Times New Roman;}{\f1\fswiss\fcharset0 Arial;}} {\info {\title What is Artificial Life?}{\author Chris G. Langton}} \viewkind4\uc1\pard\sb100\sa100\f0\fs24 In order to derive general theories about life, we need an ensemble of instances to generalize over. Since it is quite unlikely that alien lifeforms will present themselves to us for study in the near future, our only option is to try to create alternative life-forms ourselves - Artificial Life literally ‘‘life made by Man rather than by Nature.’’\par \pard\f1\fs20\par}

T´ıtol What is Artificial Life? Autor Chris G. Langton Keywords Resum Cos In order to derive general theories about life, we need an ensemble of instances to generalize over. Since it is quite unlikely that alien lifeforms will present themselves to us for study in the near future, our only option is to try to create alternative life-forms ourselves - Artificial Life - literally ‘‘life made by Man rather than by Nature.’’ La informaci´o que s’extreu ´es la informaci´o u ´til que interessa als usuaris. No es f`acil classificar aquest tipus d’informaci´o ja que no satisf`a cap patr´o concret mitjan¸cant el qual es puguin realitzar cerques amb `exit. En els pr`oxims apartats s’explica com crear ´ındexs generats amb Lucene, mitjan¸cant els quals es poden realitzar cerques r`apides de continguts.

3.2

Crear un ´ındex

La creaci´o d’´ındexs es realitza amb Lucene, la qual proporciona classes espec´ıfiques per crear ´ındexs d’informaci´o textual, sense tenir en compte el seu origen, el seu format, i el seu idioma. Aix`o significa que es pot usar Lucene per indexar i cercar informaci´o emmagatzemada en fitxers: p`agines web de servidors web, documents emmagatzemats en sistemes de fitxers locals, fitxers de text, documents de Microsoft Word, documents HTML o PDF,


´ I INDEXACIO ´ D’INFORMACIO ´ CAP´ITOL 3. EXTRACCIO

46

o qualsevol altre format d’on es pugui extreure informaci´o textual. En aquest sentit, a m´es a m´es, es poden indexar i cercar correus electr`onics, llistes de correu, conversacions d’aplicacions de missatgeria instant`ania, etc. En aquesta aplicaci´o, s’ha utilitzat Lucene per indexar la informaci´o extreta dels documents explorats i descarregats mitjan¸cant l’aplicaci´o d’exploraci´o descrita a l’apartat 2 sobre l’exploraci´o web. Al nucli dels motors de cerca existeix el concepte d’indexar. Consisteix en processar la informaci´o original dels documents per generar vistes molt eficients de refer`encies creuades, amb l’objectiu de facilitar la cerca d’informaci´o. Suposem que cal realitzar una cerca sobre un gran nombre de documents, i que volem trobar aquells documents que contenen determinades paraules o frases. Una forma molt convencional seria realitzar una cerca seq¨ uencial sobre cada fitxer per tal de localitzar la paraula o frase desitjada. Aquest sistema presenta molts problemes, ja que per una banda podem tenir molts documents i per l’altra, aquests documents poden ser molt grans. ´ en aquest punt on entra en joc el concepte d’indexar. Per cercar Es grans quantitats de text r`apidament, primer cal indexar el text extret de cada document i convertir-lo en un format que permeti realitzar-hi cerques eficientment, evitant el lent i ineficient proc´es d’escaneig seq¨ uencial. Aquest proc´es de conversi´ o s’anomena indexaci´ o i la seva sortida o resultat s’anomena ´ındex. Un ´ındex es pot interpretar com una estructura que permet accessos aleat` oris r`apids a paraules emmagatzemades en aquesta. En el cas de Lucene, un ´ındex ´es una estructura de dades especialment dissenyada, t´ıpicament emmagatzemada al sistema de fitxers en forma d’un conjunt de fitxers. Entendre el funcionament de l’aplicaci´o d’indexaci´o implica entendre la separaci´o o barrera que hi ha entre l’aplicaci´o desenvolupada i Lucene, aix´ı com les tasques que realitza cadascuna d’aquestes dos parts. Aquesta separaci´o queda reflexada clarament mitjan¸cant la figura 3.2. Es recorren, un a un, els documents de l’exploraci´o que cal indexar. Es tracta de documents descarregats mitjan¸cant l’eina d’exploraci´o, i emmagatzemats a la Intranet del disc. Aquesta tasca es du a terme recorrent les URLs del fitxer d’exploraci´o seleccionat per l’usuari, per a cada URL s’obt´e la corresponent adre¸ca del fitxer al disc. De cada document s’extreu la seva informaci´o textual aplicant el corresponent filtre en funci´o de la seva extensi´o. El text extret ´es el que s’utilitza per a crear l’´ındex. Les classes de Lucene que cal destacar s´on les seg¨ uents: IndexWriter ´es el component central del proc´es d’indexaci´o. Aquesta classe crea un nou ´ındex i afegeix documents a ´ındexs ja existents. Es pot interpretar


´ I INDEXACIO ´ D’INFORMACIO ´ CAP´ITOL 3. EXTRACCIO

47

Figura 3.2: Separaci´o entre Lucene i el nivell d’aplicaci´ o la classe IndexWriter com un objecte que ofereix acc´es d’escriptura a l’´ındex, per`o no ofereix operacions de lectura ni de cerca. Directory Aquesta classe representa la localitzaci´o f´ısica d’un ´ındex de Lucene. Podem preferir mantenir un ´ındex en mem`oria, o b´e al disc. Per ´ tracta d’una mantenir un ´ındex al disc hi ha la classe FSDirectory. Es subclasse de la classe Directory que mant´e una llista de fitxers reals al sistema de fitxers del disc. L’altra implementaci´o de la classe Directory ´es RAMDirectory. Aquesta proporciona una interf´ıcie id`entica a la de la classe FSDirectory, per`o en aquest cas l’´ındex s’emmagatzema en mem`oria. RAMDirectory ´es u ´til quan cal crear ´ındexs petits que poden ser emmagatzemats completament en mem`oria i poden ser eliminats al finalitzar l’aplicaci´o. L’´ us d’´ındexs en mem`oria proporciona una major velocitat d’acc´es que els ´ındexs emmagatzemats al disc. La tend`encia natural ´es utilitzar ´ındexs en mem`oria i guardar-los a disc quan es supera un tamany o l´ımit concret. Analyzer Abans que el text sigui indexat, aquest passa per objecte de la classe Analyzer. La classe Analyzer extreu tokens de sortida del text que ha de ser indexat. Si el contingut que ha de ser indexat no ´es text pla, aquest ha de ser filtrat. Document La classe Document representa una colecci´o de camps. Podem interpretarho com un bloc d’informaci´o, com ara una p`agina web, un missatge de correu electr`onic o un fitxer de text. Els camps d’un document rep-


´ I INDEXACIO ´ D’INFORMACIO ´ CAP´ITOL 3. EXTRACCIO

48

resenten la meta-informaci´o associada a aquest document. L’origen de la informaci´o ´es completament irrellevant per Lucene. La metainformaci´o com l’autor, el t´ıtol, el resum, la data, entre d’altres, s´on indexats i emmagatzemats per separat com a camps del document. Field Cada objecte de la classe Document en un ´ındex cont´e un o m´es camps, encap¸culats en objectes de la classe Field. Cada camp correspon a una part d’informaci´o que pot ser consultada a trav´es de l’´ındex durant un proc´es de cerca. Lucene ofereix quatre tipus diferents de camps que poden ser utilitzats. Tots els camps consisteixen en una parella de nom i valor. El tipus de camp que cal usar dep`en de l’´ us que se’n vulgui fer. Els tipus de camps difereixen entre ells per les seves caracter´ıstiques. Alguns s´on analitzats, per`o d’altres no; alguns s´on indexats mentre que d’altres s´on emmagatzemats completament. Els tipus de camps que ofereix Lucene s´on els que s’expliquen a continuaci´o: Keyword No ´es analitzat, per`o ´es indexat i emmagatzemat literalment a l’´ındex. Aquest tipus s’acostuma a usar en aquells valors que han de ser preservats, aix´ı com URLs, rutes de sistemes de fitxers, dates, noms propis, n´ umeros de tel`efon, etc. ´ analitzat i no indexat, per`o el seu valor ´es emmagatzemat literalUnIndexed Es ment a l’´ındex. Aquest tipus s’acostuma a usar en aquells valors que han de ser visualitzats al mostrar els resultats de les cerques, com ara URLs o claus prim` aries, per`o en canvi els seus valors no poden ser cercats directament. No s’ha d’usar per emmagatzemar valors molt grans, ja que poden fer incrementar excesivament el tamany de l’´ındex. ´ el contrari del tipus UnIndexed. Aquest tipus de camp ´es analitzat i UnStored Es indexat, per`o no ´es emmagatzemat a l’´ındex. Aquest tipus s’acostuma a usar per indexar una gran quantitat de text que no necessita ser proporcionada en la seva forma original, aix´ı com el cos de p`agines web, o el cost de qualsevol tipus de document de text. ´ analitzat i indexat. Aix`o implica que els camps d’aquest tipus Text Es poden ser cercats, per`o cal vigilar amb el seu tamany. Si la informaci´ o a indexar ´es una cadena de car`acters, aleshores s’emmagatzema, per`o si la informaci´o prov´e d’un flux de dades qualsevol, aleshores no s’emmagatzema. A l’´ındex s’han tingut en compte els camps anterioment mencionats: t´ıtol, autor, keywords, resum i cos. Aquests s´on els camps que contenen meta-informaci´o extreta dels documents web descarregats. A m´es a m´es


´ I INDEXACIO ´ D’INFORMACIO ´ CAP´ITOL 3. EXTRACCIO

49

d’aquests cinc camps, cal tenir en compte tres camps per proporcionar informaci´ o funcional addicional dels documents a indexar: la URL del document, la ruta del document al sistema de fitxers i el tamany del document. En total, cada document que cal indexar contempla vuit camps. Els resultats d’una cerca entreguen la url, el t´ıtol, l’autor, el resum i el tamany dels documents trobats. doc.add(Field.UnStored("cos",filtre.obtenirCos())); doc.add(Field.Keyword("keywords",filtre.obtenirKeywords())); doc.add(Field.UnIndexed("url",url)); doc.add(Field.UnIndexed("autor",filtre.obtenirAutor())); doc.add(Field.UnIndexed("cache",ruta)); doc.add(Field.UnIndexed("tamany",(new Long(tamany)).toString())); doc.add(Field.Text("resum",filtre.obtenirDescripcio())); doc.add(Field.Text("titol",filtre.obtenirTitol())); Despr´es que el text entrant dels documents hagi estat analitzat, aquest est`a llest per ser afegit a l’´ındex. Lucene emmagatzema les entrades en una estructura de dades coneguda com ´ındex invertit. Aquesta estructura fa un u ´s eficient de l’espai del disc mentre permet realitzar cerques r`apides. El que fa que aquesta estructura sigui invertida ´es que utilitza els tokens extrets de les entrades dels documents com si fossin claus de cerca, enlloc d’utilitzar els documents com si fossin entitats centrals. En altres paraules, no pret´en localitzar quines paraules hi ha en un determinat document, sin´o quins documents contenen determinades paraules.

3.3

Esquema general de l’indexador

El funcionament de l’eina d’indexaci´o ´es for¸ca simple. S’usa una combinaci´o d’´ındexs RAMDirectory i FSDirectory, de manera que es pret´en aprofitar els beneficis que aporta cadascun dels dos. Es realitzen m´ ultiples processos d’indexaci´o simultanis mitjan¸cant l’´ us de fils d’execuci´o, d’aquesta manera s’aconsegueix accelerar notablement la velocitat de la indexaci´o total, ja que aix´ı les indexacions fallides no entorpeixen les indexacions exitoses. S’ent´en per indexaci´ o fallida d’un document, aquella que, per exemple, no s’ha pogut extreure el text pla del document. Els fils d’execuci´ o concurrents treballen u ´nicament amb ´ındexs RAMDirectory, ´es a dir, amb ´ındexs emmagatzemats temporalment en mem`oria. Quan la indexaci´ o individual d’un document finalitza, aquest ´ındex s’afegeix a l’´ındex final emmagatzemat al disc mitjan¸cant la classe FSDirectory. El fet que cada fil d’execuci´ o treballi amb un ´ındex propi emmagatzemat en mem`oria evita que hi puguin haver problemes de bloqueig entre fils d’execuci´o diferents en el cas d’usar un ´ındex compartit. A m´es a m´es, s’evita


´ I INDEXACIO ´ D’INFORMACIO ´ CAP´ITOL 3. EXTRACCIO

50

Figura 3.3: Esquema general de l’indexador realitzar accessos continuats al disc, ja que l’´ındex final nom´es s’amplia quan finalitza la indexaci´ o realitzada per alguns dels fils d’execuci´ o. Mirar figura 3.3.


Cap´ıtol 4

Diagrames de classe 4.1

Aplicaci´ o exploradora

A continuaci´o es mostren els diagrames de cada classe implementada a l’aplicaci´ o d’exploraci´o. La seg¨ uent llista detalla cadascuna d’aquestes classes: • AplicacioPrincipal : Constitueix la classe principal de l’aplicaci´o. Carrega el men´ u d’inici r`apid. • AplicacionsDeCerca : S’encarrega de visualitzar el men´ u d’eines de cerca. ´ la classe base del web crawler. Carrega la interf´ıcie • WebCrawler : Es i executa l’aplicaci´o de crawling. ´ la classe que implementa l’aplicaci´o de crawling explicada • Aranya : Es en apartats anteriors. ´ la classe que implementa el gestor de de• GestorDescarregues: Es sc`arregues explicat en apartats anteriors. • GestorIntranet: La seva tasca ´es mantenir i gestionar els fitxers i directoris de la intranet del disc. • GestorArbresWeb: Classe que implementa el manteniment de les estructures de nodes explorats dels hosts. • ArbreWeb: Classe que implementa l’estructura de nodes explorats d’un host. • NodeWeb: Implementa l’estructura node utilitzada per la classe ArbreWeb. • ContenidorDescarregues: Classe abstracta que modela els m`etodes de l’estructura de nodes pendents. 51


CAP´ITOL 4. DIAGRAMES DE CLASSE

52

• ContenidorDescarreguesFIFO: Implementaci´o FIFO de l’estructura de nodes pendents. • ContenidorDescarreguesLIFO: Implementaci´o LIFO de l’estructura de nodes pendents. • ThreadDescarregadorUrl : Implementaci´o del fil d’execuci´o de desc`arregues simples via HTTP. • ThreadDescarregadorUrlPost: Implementaci´o del fil d’execuci´o de desc`arregues HTTP amb POST previ. • ThreadDescarregadorUrlAmbCookies: Implementaci´o del fil d’execuci´o de desc`arregues HTTP amb u ´s de cookies. • Logger : Classe que implementa l’an`alisi d’incid`encies produ¨ıdes durant les desc` arregues HTTP. • ExtractorFormularisWeb: S’encarrega de descarregar i extreure formularis web de les p`agines web. • FormulariWeb: Classe que emmagatzema informaci´o relativa a un formulari web. • ContenidorFormularisWeb: Classe contenidor que emmagatzema formularis web. • GraficEstadistic: Implementaci´o del gr`afic de velocitats de desc`arrega. • InterficieGrafica : Implementaci´o de la interf´ıcie d’usuari de l’eina d’exploraci´o. • GeneradorGrafs: Classe que s’encarrega de generar grafs a partir de l’estructura de nodes explorats. • InterficieGraficaMapaNodes: Implementaci´o de la interf´ıcie d’usuari de l’eina visualitzadora de grafs web.

4.2

Aplicaci´ o indexadora

A continuaci´o es mostren els diagrames de cada classe implementada a l’aplicaci´ o d’indexaci´o. La seg¨ uent llista detalla cadascuna d’aquestes classes: ´ la classe que executa l’aplicaci´o d’indexaci´o. • AplicacioIndexadora : Es Permet la interacci´o entre la interf´ıcie d’usuari i l’indexador. • IndexadorExploracions: Implementa el nucli del proc´es d’indexaci´o.


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.1: AplicacioPrincipal.java

Figura 4.2: AplicacionsDeCerca.java

53


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.3: WebCrawler.java

54


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.4: Aranya.java

55


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.5: GestorDescarregues.java

56


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.6: GestorIntranet.java

57


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.7: GestorArbresWeb.java

58


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.8: ArbreWeb.java

59


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.9: NodeWeb.java

60


CAP´ITOL 4. DIAGRAMES DE CLASSE

61

Figura 4.10: ContenidorDescarregues.java ContenidorDescarreguesFIFO.java ContenidorDescarreguesLIFO.java • EstatIndexadorExploracions: Classe que cont´e informaci´o relativa a l’estat de l’indexaci´ o en cada moment. • HistogramaFrequenciaParaules: Classe que implementa els procediments per generar i processar histogrames de freq¨ u`encia de paraules. • GestorHistogramesFrequenciaParaules: Classe contenidor que emmagatzema histogrames de freq¨ u`encia de paraules. Genera el fitxer de freq¨ u`encies de paraules. • InterficieGraficaIndexador : Implementaci´o de la interf´ıcie d’usuari de l’eina d’indexaci´o.

4.3

Aplicaci´ o de cerca

A continuaci´o es mostren els diagrames de cada classe implementada a l’aplicaci´ o de cerca. La seg¨ uent llista detalla cadascuna d’aquestes classes: ´ la classe que executa l’aplicaci´o per re• AplicacioCercadora : Es alitzar cerques. Permet la interacci´o entre la interf´ıcie d’usuari i el cercador.


CAP´ITOL 4. DIAGRAMES DE CLASSE

62

Figura 4.11: ThreadDescarregadorUrl.java ThreadDescarregadorUrlPost.java ThreadDescarregadorUrlAmbCookies.java


CAP´ITOL 4. DIAGRAMES DE CLASSE

63

Figura 4.12: Logger.java ´ la classe que executa l’aplicaci´o servi• AplicacioServidorCerques: Es dora de cerques. • Cercador : Implementa el nucli del proc´es que realitza cerques. • MissatgeCercaRemota : Classe utilitzada per definir els missatges de cerca. • MissatgeRespostaCercaRemota : Classe utilitzada per definir els missatges de resposta de cerca. • CercaRemota : Classe utilitzada per indicar els par`ametres de cerca remota. • ResultatCerca : Classe utilitzada per emmagatzemar els resultats de la cerca. • InterficieGraficaCercador : Implementaci´o de la interf´ıcie d’usuari de l’eina de cerca. • InterficieGraficaServidorCerques: Implementaci´o de la interf´ıcie d’usuari del servidor de cerques.


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.13: ExtractorFormularisWeb.java

Figura 4.14: ContenidorFormularisWeb.java

64


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.15: FormulariWeb.java

Figura 4.16: GraficEstadistic.java

65


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.17: InterficieGrafica.java

66


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.18: InterficieGraficaMapaNodes.java

Figura 4.19: AplicacioIndexadora.java

67


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.20: IndexadorExploracions.java

68


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.21: EstatIndexadorExploracions.java

Figura 4.22: HistogramaFrequenciaParaules.java

Figura 4.23: GestorHistogramesFrequenciaParaules.java

69


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.24: InterficieGraficaIndexador.java

70


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.25: AplicacioCercadora.java

Figura 4.26: AplicacioServidorCerques.java

71


CAP´ITOL 4. DIAGRAMES DE CLASSE

Figura 4.27: Cercador.java

Figura 4.28: MissatgeCercaRemota.java

Figura 4.29: MissatgeRespostaCercaRemota.java

72


Cap´ıtol 5

Llibreries utilitzades Per al desenvolupament d’aquest projecte s’han utilitzat llibreries conegudes per a Java. Es tracta de llibreries gratu¨ıtes i de codi obert, que proporcionen classes per a realitzar tasques concretes de filtratge de documents, extracci´o d’hipervincles, desc`arrega de continguts web emprant cookies, indexaci´o de text, creaci´o de grafs, etc. En els pr`oxims apartats s’expliquen les llibreries utilitzades m´es destacades d’aquest projecte.

5.1

Lucene

Jakarta Lucene ´es un motor de cerca implementat en Java. Va ser creat per Doug Cutting al 1997 i distribu¨ıt com a software lliure a l’any 2000. Pot ser utilitzat en qualsevol aplicaci´o que requereixi realitzar cerques de text, des de cerques en p`agines web fins a gestors de correu. L’´ ultima versi´o ha estat arreglada i aporta millores, com ara un filtre sobre el qu`e es realitzen les cerques o una API m´es oberta que permet a l’usuari crear el seu propi sistema de puntuaci´o de documents. Per a m´es informaci´o es recomana consultar l’apartat 3 sobre extracci´o i indexaci´o d’informaci´o.

5.2

Jung

Jung ´es una llibreria que ens proporciona un llenguatge com´ u i est´es per a la modelaci´o, an`alisi i visualitzaci´o de dades que poden ser representades en forma de grafs o en forma de xarxa. Jung est`a desenvolupat en Java. L’arquitectura de Jung est`a designada per soportar una gran varietat de representacions d’entitats i les seves relacions com els grafs directes i indirectes, els grafs mutimodals, grafs amb camins paral·lels i els hipergrafs. Aix`o proporciona un mecanisme d’anotaci´o de grafs, entitats i relacions amb meta-informaci´o. Aix`o facilita la creaci´o d’eines anal´ıtiques de dades complexes que poden examinar les relacions entre les entitats tan b´e com les 73


CAP´ITOL 5. LLIBRERIES UTILITZADES

74

dades adjuntes per cada entitat i relaci´o. La distribuci´o actual de Jung inclou les implementacions d’un gran nombre d’algorismes de la teoria de grafs, exploraci´ o de dades, an`alisi de la xarxa, com les rutines per al cl´ ustering, la descomposici´o, l’optimitzaci´o, la generaci´o de grafs aleatoris, l’an`alisi estad´ıstic, el c` alcul de dist`ancies entre nodes d’una xarxa, fluxos, i mesures importants (centralitat, PageRank, HITS, etc.). Jung proporciona un framework visual que fa f`acil la tasca de desenvolupar eines per a l’exploraci´ o interactiva d’informaci´o en forma de xarxa. Els usuaris poden usar alguns dels algorismes de representaci´ o proporcionats, o utilitzar el framework per crear les seves pr`opies representacions. A m´es a m´es, ofereix mecanismes de filtratge que permeten centrar l’atenci´o, o l’´ us d’algorismes en parts espec´ıfiques dels grafs. Tractant-se d’una llibreria de codi obert, Jung proporciona un framework per a l’an`alisi i visualitzaci´ o de grafs i xarxes. Jung facilita el desenvolupament d’aplicacions que treballen amb informaci´o relacional, ja que permet la reutilitzaci´o de codi ja existent i evitar aix´ı implementar codi ja existent. Les operacions b`asiques que es poden realitzar sobre els grafs es mostren a continuaci´o: • newInstance(): Retorna un graf del mateix tipus que el graf en el que s’ha invocat el m`etode. • addVertex(v): Afegeix el v`ertex v al graf i retorna una refer`encia al v`ertex afegit. • addEdge(e): Afegeix l’aresta e al graf i retorna una refer`encia a l’aresta afegida. • getVertices(): Retorna el conjunt de v`ertexs del graf. • getEdges(): Retorna el conjunt d’arestes del graf. • numVertices(): Retorna el n´ umero de v`ertexs del graf. • numEdges(): Retorna el n´ umero d’arestes del graf. • removeVertex(v): Elimina el v`ertex v del graf. • removeEdge(e): Elimina l’aresta e del graf. • removeVertices(s): Elimina els v`ertexs s del graf. • removeEdges(s): Elimina les arestes s del graf. • removeAllEdges(): Elimina totes les arestes del graf, deixant els v`ertexs intactes.


CAP´ITOL 5. LLIBRERIES UTILITZADES

75

• removeAllVertices(): Elimina tots els v`ertexs del graf i arestes del graf. • copy(): Realitza una c` opia exacta del graf i de tots els seus continguts. Les operacions b`asiques que es poden realitzar sobre els v`ertexs es mostren a continuaci´o: • getGraph(): Retorna una refer`encia del graf que cont´e aquest v`ertex. • getNeighbors(): Retorna el conjunt de v`ertexs que estan connectats cap aquest v`ertex. • getIncidentEdges(): Retorna el conjunt d’arestes que incideixen cap aquest v`ertex. • degree(): Retorna el n´ umero d’arestes incidents cap aquest v`ertex. • getEquivalentVertex(g): Retorna el v`ertex del graf g, o qualsevol que sigui equivalent. • isNeighbor(v): Retorna cert si el v`ertex v i aquest v`ertex s´on incidents en almenys una aresta, retorna fals altrament. • isIncident(e): Retorna cert si l’aresta e i aquest v`ertex s´on incidents, retorna fals altrament. • removeAllIncidentEdges(): Elimina totes les arestes que s´on incidents cap aquest v`ertex. • copy(g): Realitza una c`opia d’aquest v`ertex en el graf g. Les operacions b`asiques que es poden realitzar sobre les arestes es mostren a continuaci´o: • getGraph(): Retorna una refer`encia del graf que cont´e aquesta aresta. • getIncidentVertices(): Retorna el conjunt de v`ertexs que s´on incidents cap aquesta aresta. • getEquivalentEdge(g): Retorna l’aresta del graf g, o qualsevol que sigui aquivalent. • numVertices(): Retorna el n´ umero de v`ertexs que s´on incidents cap aquesta aresta. • isIncident(v): Retorna cert si el v`ertex v ´es incident cap aquesta aresta, retorna fals altrament.


CAP´ITOL 5. LLIBRERIES UTILITZADES

76

• copy(g): Realitza una c`opia d’aquesta aresta en el graf g. El paquet de visualitzaci´ o de Jung ofereix mecanismes per renderitzar i superposar grafs. Les implementacions actuals del renderitzador utilitzen l’API Swing de Java per mostrar grafs, per`o els renderitzadors han de ser implementats utilitzant altres eines. En general, una visualitzaci´o es complementa amb els seg¨ uents components: • Una capa(Layout) que cont´e un graf i determina la posici´o de cada v`ertex que ha de ser pintat. • Un component(Swing) on la informaci´o ´es renderitzada. Les implementacions actuals utilitzen el component VisualizationViewer, es tracta d’una extensi´ o de la classe JPanel de Swing. • Un renderitzador(Renderer ) que obt´e la informaci´o proporcionada per la capa que cont´e el graf i pinta els v`ertexs i arestes sobre el component.

5.3

JTidy

JTidy ´es l’adaptaci´o per a Java de l’aplicaci´o HTML Tidy, un analitzador sint` actic del llenguatge HTML. JTidy pot ser utilitzat com una eina per corregir documents HTML mal implementats. A m´es a m´es, JTidy proporciona una interf´ıcie de tipus DOM per al tractament dels documents HTML, el qual permet permet utilitzar JTidy tal i com si es tract´es d’un parser DOM.

5.4

PDFBox

PDFBox ´es una llibreria per a Java per treballar amb documents PDF. Permet la creaci´o de nous documents PDF, la manipulaci´o de documents existents i la capacitat per extreure contingut dels documents, a m´es a m´es, PDFBox tamb´e inclou algunes utilitats a trab´es de la l´ınia de comandes. • Extracci´o de text dels documents PDF. • Combinar documents PDF. • Xifratge i desxifratge de documents PDF. • Permet una f` acil integraci´o amb Lucene. • Creaci´o de documents PDF a partir de fitxers de text. • Creaci´o d’imatges a partir de documents PDF.


CAP´ITOL 5. LLIBRERIES UTILITZADES

77

Una de les principals caracter´ıstiques de PDFBox ´es la capacitat d’extreure text de grans varietats de documents PDF. Aquesta funci´o la trobem al paquet org.pdfbox.util.PDFTextStripper i pot ser f`acilment executada amb l’eina org.pdfbox.ExtractText. Els documents PDF poden tenir meta-informaci´o XML associada amb prop`osits concrets amb un document PDF. Per exemple, el PD Model t´e la capacitat per contenir aquesta meta-informaci´o: • PDDocumentCatalog • PDPage • PDXObject • PDICCBased • PDStream Aquesta meta-informaci´o s’emmagatzema en objectes PDF, i compleix les especificacions XML. Actualment no hi ha cap API d’alt nivell que manegui a meta-informaci´o XML, PDFBox utilitza els procediments InputStream / OutputStream de Java per recuperar o emmagatzemar la meta-informaci´o XML. PDFBox tamb´e permet afegir fitxers adjunts als documents PDF.

5.5

Jakarta POI

El projecte POI ´es el projecte principal per al desenvolupament d’adaptacions en Java pur dels formats de fitxer basats en el Format de Document Compost OLE 2 de Microsoft. El format de Documents Compost OLE 2 l’utilitzen els documents d’Office de Microsoft, aix´ı com els programes que utilitzen conjunts de propietats MFC per serialitzar els seus objectes de tipus document. El projecte POI consisteix en APIs per manipular varis formats de fitxer basats en el format de Document Compost OLE 2 de Microsoft, utilitzant Java pur. Concretament, es poden llegir i escriure fitxers Microsoft Excel utilitzant Java. Aviat es podr`a llegir i escriure fitxers Word utilitzant Java Word. En qualsevol cas, hi ha una API completa per portar altres formats de Document Compost OLE 2. Entre els fitxers basats en OLE 2 de Microsoft, s’inclouen la major part dels fitxers de Microsoft Office tals com XLS i DOC, aix´ı com formats de fitxer basats en l’API de serialitzaci´o MFC.


CAP´ITOL 5. LLIBRERIES UTILITZADES

78

´ l’adaptaci´o POIFS ´es la part m´es antiquada i m´es estable del projecte. Es del Format de Document Compost OLE 2 a Java pur. Suporta funcionalitat de lectura i escriptura. Tots els components es serveixen d’ell per definici´o. HSSF ´es l’adaptaci´o del format de fitxer de Microsoft Excel 97(-2002) (BIFF8) a Java pur. Soporta lectura i escriptura. HWPF es l’adaptaci´o del format de fitxer de Microsoft Word 97 a Java pur. Suporta lectura i escriptura. HPSF ´es l’adaptaci´o del format de conjunt de propietats OLE 2 a Java pur. Els conjunts de propietats s’utilitzen principalment per emmagatzemar les propietats d’un document (t´ıtol, autor, data de l’´ ultima modificaci´o, etc.), per`o tamb´e poden ser utilitzats per a prop`osits espec´ıfics d’una aplicaci´o. Actualment HPSF suporta nom´es la funcionalitat de lectura.)

5.6

IR-Webutils

Es tracta d’una llibreria formada per un conjunt de classes per descarregar documents HTML dels servidors web, i extreure els seus hipervincles de sortida. A continuaci´o es mostra un resum de les seves classes: • DirectorySpider : Es tracta d’un web crawler que explora a trav´es dels subdirectoris de l’ordinador. • Graph : Estructura per generar grafs. ´ una representaci´o d’informaci´o sobre una p`agina • HTMLPage: Es web. • HTMLPageRetriever : Permet als clients descarregar p`agines web a partir d’URLs. • HTMLParserMaker : Permet als clients carregar una inst`ancia de HTMLEditorKit.Parser. ´ una classe que cont´e una URL. • Link : Es • LinkExtractor : Extreu els enlla¸cos de sortida d’una p`agina web donada. • Node: Es tracta d’una estructura node per a la generaci´o de grafs. • RobotExclusionSet: Proporciona funcionalitats per complir el protocol d’exclusi´o Robots Exclusion Protocol. • RobotsMetaTagParser : Extreu meta-informaci´o dels documents HTML.


CAP´ITOL 5. LLIBRERIES UTILITZADES

79

• SafeHTMLPage: Proporciona informaci´o relativa al contingut que cal indexar, o no, d’un document web. • SafeHTMLPageRetriever : Classe per respectar el protocol d’exclusi´o. • SiteSpider : Classe simple per a explorar llocs web. • Spider : Framework per elaborar web crawlers. • URLChecker : Classe per validar adreces URL. • WebPage: Classe est`atica que proporciona operacions per descarregar p`agines web. • WebPageViewer : Classe que cont´e utilitats per descarregar i mostrar p`agines HTML.

5.7

HTTPClient

Aquest paquet proporciona eines per desenvolupar i utilitzar clients HTTP. Implementa el protocol HTTP/1.0 i HTTP/1.1, incloent els m`etodes HEAD, GET, POST i PUT. Manega autom`aticament autoritzacions, redireccions, i cookies. A m´es a m´es, inclou c`odecs per codificar i decodificar en base 64, manegar formularis web, etc. Totes aquestes funcionalitats s´on lliures i estan regides per una llic`encia GNU Lesser General Public License (LGPL). Si un servidor requereix autoritzaci´o b`asica, el client HTTP mostra una caixa de di`aleg demanant la informaci´o desitjada (normalment un nom d’usuari i un password), tal i com ho fan els clients web convencionals. Aquesta informaci´o inserida per l’usuari ´es emmagatzemada en una cach´e i utilitzada m´es endavant de manera autom`atica. Si com a programadors coneixem el nom d’usuari i la contrasenya per avan¸cat, podem configurar les aplicacions per tal que utilitzin aquestes dades mitjan¸cant els m`etodes addBasicAuthorization() i addDigestAuthorization de la classe HTTPConnection, o mitjan¸cant els corresponents m`etodes de la classe AuthorizationInfo. Les redireccions (amb codis de retorn 301, 302, 303, 305 i 307) s´on manegades autom`aticament quan s’utilitzen els m`etodes GET i HEAD. Les cookies s´on manegades autom`aticament. Quan una resposta cont´e el missatges Set-Cookie o Set-Cookie2 a la cap¸calera, les cookies s´on filtrades i emmagatzemades; quan una petici´o ´es enviada, aquesta ´es escanejada per comprovar si cal aplicar l’´ us de les cookies.


CAP´ITOL 5. LLIBRERIES UTILITZADES

80

A causa de q¨ uestions de privacitat amb l’´ us de les cookies, s’utilitza una pol´ıtica de privacitat per permetre a l’usuari acceptar o refusar l’enviament de cookies. Per defecte, quan un servidor solicita una cookie s’obre una caixa de di`aleg per preguntar a l’usuari si vol acceptar-la o no. La classe Util ofereix un conjunt de m`etodes per manegar els camps de les cap¸caleres HTTP. Aix`o ´es possible amb l’´ us del m`etode parseHeader(), que s’encarrega d’analitzar la sintaxi del protocol. Cal remarcar que aquest analitzador no manega l’autentificaci´o de les cap¸caleres WWW-Authenticate o Proxy-Authenticate.

5.8

JFreeChart

JFreeChart ´es una llibreria lliure per a Java per generar gr`afics de dades, que inclou les seg¨ uents funcionalitats: • Pie Charts (2D i 3D). • Gr`afics de barres (regulars i empilats, amb efecte 3D opcional). • Gr`afics de l´ınia i d’`area. • Scatter Plots i gr`afics de bombolla. • S`eries de temps i gr`afiques Candle Stick. • Gr`afiques combinades. • Gr`afiques de Pareto. • Diagrames de Gantt. • Gr`afics de vent i gr`afiques de s´ımbols. • Gr`afiques Wafer Map. JFreeChart pot ser utilitzat en aplicacions Java, applets, servlets i JSP.


Bibliografia [1] Otis Gospodnetic i Erik Hatcher. Lucene in action (A guide to the Java search engine). Manning Publications Co. 2005. [2] Vladislav Shkapenyuk i Torsen Suel. Design and Implementation of a High-Performance Distributed Web Crawler. Polytechnic University of Brooklyn, 2001. [3] Dustin Boswell. Distributed High-performance Web Crawlers: A Survey of the State of the Art. 2003. [4] Marc Najork i Janet L. Wiener. Breadth-First Search Crawling Yelds High-Quality Pages. Compaq Systems Research Center, 2001. [5] Joan Gimbert, Ramiro Moreno, Josep Maria Rib´o i Magda Valls. Apropament a la teoria de grafs i als seus algorismes. Universitat de Lleida, 1998. [6] HTML 4.01 Specification W3C Recommendation 24 desember 1999. [7] Carlos Castillo i Ricardo Baeza-Yates. Practical Issues of Crawling Large Web Collections. Center for Web Research, University of Chile, 2005. [8] Carlos Castillo. Effective Web Crawling. University of Chile, 2004.

81


Ap` endix A

Manual d’aplicaci´ o per a l’usuari A.1

Requeriments

L’aplicaci´o ha estat compilada i executada amb `exit utilitzant la versi´o de Java(TM) 2 JDK1.5.0 01, tot i que amb la versi´o 1.4 tamb´e s’ha pogut provar que funciona correctament. Es pot comprovar la versi´o de Java del nostre sistema executant la seg¨ uent comanda desde la l´ınia de comandes: java -version La seva execuci´ o hauria de mostrar una cosa com la seg¨ uent: java version "1.5.0_01" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08) Java HotSpot(TM) Client VM (build 1.5.0_01-b08, mixed mode) Els requeriments m´ınims de hardware depenen en gran part de l’´ us que es faci de l’aplicaci´o, tot i que es recomana disposar d’un equip amb processador Pentium 3 800MHz amb 128MBytes de mem`oria RAM com a m´ınim.

A.2

Instal·laci´ o

El programa disposa d’un sistema d’instal·laci´o t´ıpic per a Windows, mitjan¸cant el qual s’instal·la autom`aticament tota l’aplicaci´o a trav´es d’un assistent. L’instal·lador ofereix la possibilitat d’afegir un acc´es directe a l’escriptori o a la barra d’inici si l’usuari ho desitja, de la mateixa manera tamb´e proporciona un sistema de desinstal·laci´o de tot el conjunt. Un cop instal·lada l’aplicaci´o, tindrem acc´es a tres opcions: editar el fitxer rutes.cfg, restaurar i recompilar tota l’aplicaci´o, i executar l’aplicaci´ o.

82


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

83

Tots els fitxers descarregats durant les exploracions s’emmagatzemen en un directori de l’ordinador, per defecte aquest directori ´es \intranet. De la mateixa manera, tots els ´ındexs generats per l’aplicaci´o d’indexaci´o s’emmagatzemen tamb´e en un directori, per defecte aquest directori ´es \indexs. Aquests dos directoris s´on creats autom`aticament al moment d’executar l’aplicaci´o, per`o hi ha la possibilitat de canviar-los. Per fer-ho, cal editar el fitxer rutes.cfg que es troba al mateix directori de l’aplicaci´o i substitu¨ır les configuracions per les desitjades: ### Fitxer de rutes ### ## Ruta de la Intranet ## c:\\intranet\\ ## Ruta de la carpeta d’indexs ## c:\\indexs\\ Si es desitja, es pot efectuar una instal·laci´o manual de l’aplicaci´o, ja que per exemple, pot resultar necessari executar l’aplicaci´o en un sistema Linux. En aquest cas, cal utilitzar la distribuci´o que ve empaquetada en un simple fitxer comprimit i descomprimir-ho en un directori de l’ordinador. L’aplicaci´o sempre ve acompanyada de dos fitxers de processament per lots (fitxers .bat). El fitxer build.bat s’encarrega de restaurar i recompilar tot el conjunt deixant l’aplicaci´o en el seu estat inicial, tot i que aquesta operaci´o no ´es estrictament necess` aria ja que l’aplicaci´o ja es distribueix compilada. El fitxer Toke.bat simplement executa l’aplicaci´o. Per a Linux aquests dos fitxers no serveixen, tot i que de moment, tampoc s’han elaborat els corresponents scripts, per tant cal fer-ho manualment a trav´es d’un int`erpret de comandes o shell. La corresponent compilaci´o es fa seguint el seg¨ uent exemple des de el directori on s’ha descomprimit la distribuci´o simple: "javac.exe" -O -classpath "src\;lib\ir.jar;lib\lucene-1.4.3.jar; lib\Multivalent.jar;lib\commons-collections-3.1.jar;lib\jung-1.6.0.jar; lib\PDFBox-0.7.1.jar;lib\Tidy.jar;lib\jcommon-1.0.0-rc1.jar; lib\jfreechart-1.0.0-rc1.jar;lib\jfreechart-1.0.0-rc1.zip; lib\log4j-1.2.9.jar;lib\xercesImpl.jar;lib\poi-2.5.1-final-20040804.jar; lib\poi-scratchpad-2.5.1-final-20040804.jar;lib\HTTPClient.zip" -d "classes" "src\AplicacioPrincipal.java" Aquest procediment de compilaci´o no s’ha provat en Linux, tanmateix el resultat tamb´e hauria de concloure amb `exit. Un cop finalitzada la compilaci´ o, cal crear el contenidor Toke.jar que acompanya l’aplicaci´o i contindr`a els fitxers .class generats durant la compilaci´o i un fitxer amb el classpath necessari per executar el conjunt. cd classes jar cmf ..\manifest.txt ..\Toke.jar *.class


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

84

Figura A.1: Sel·lecci´o de l’eina d’exploraci´o Arribats a aquest punt, tindrem l’aplicaci´o recompilada i llesta per executar, per`o ´es important remarcar que totes les distribucions de l’aplicaci´o ja venen compilades i preparades per funcionar. L’execuci´ o manual de l’aplicaci´ o es fa seguint el seg¨ uent exemple, des de el directori on s’ha descomprimit la distribuci´ o simple (si seguim l’exemple anterior, caldria fer cd .. per tornar al directori inicial): java -jar Toke.jar Amb aix`o ´es suficient per executar-ho, per`o els qui siguin m´es puristes tamb´e poden executar l’aplicaci´o de la seg¨ uent manera, encara que no es la manera m´es elegant: "java.exe" -classpath "classes\;lib\ir.jar;lib\lucene-1.4.3.jar; lib\Multivalent.jar;lib\commons-collections-3.1.jar;lib\jung-1.6.0.jar; lib\PDFBox-0.7.1.jar;lib\Tidy.jar;lib\jcommon-1.0.0-rc1.jar; lib\jfreechart-1.0.0-rc1.jar;lib\jfreechart-1.0.0-rc1.zip; lib\log4j-1.2.9.jar;lib\xercesImpl.jar;lib\poi-2.5.1-final-20040804.jar; lib\poi-scratchpad-2.5.1-final-20040804.jar;lib\HTTPClient.zip" AplicacioPrincipal

A.3

Explorar

L’execuci´o del web crawler o eina d’exploraci´o es fa clicant sobre el bot´o Explorar del men´ u d’inici r`apid. Aquesta eina ens ofereix un ampli ventall de funcionalitats per explorar grans quantitats de documents web, emmagatzemarlos al disc, realtizar estad´ıstiques, visualitar p`agines web en forma de graf, ´ important mencionar que es tracta d’una eina desenvolupada exetc. Es clusivament per a l’exploraci´ o de nodes i per al seu posterior tractament i indexaci´ o.


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.2: Interf´ıcie gr`afica de l’eina d’exploraci´o

85


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

86

Figura A.3: Panells de control

A.3.1

Panells de control

L’eina d’exploraci´o disposa d’una barra de control a la part superior de la pantalla. En aquesta barra podrem realitzar les seg¨ uents tasques: crear una nova exploraci´ o, carregar una exploraci´o emmagatzemada, desar l’exploraci´o actual, iniciar l’exploraci´ o, pausar l’exploraci´o, aturar l’exploraci´o i sortir de l’aplicaci´o. Els fitxers d’exploraci´o s’emmagatzemen autom`aticament al directori de la intranet, i tenen extensi´ o .exp. Es tracta de fitxers amb contingut ASCII de manera que poden ser editats amb qualsevol editor de text convencional. Per recuperar una exploraci´ o, cal clicar sobre el bot´o Obrir, el qual mostra tots els fitxers d’exploraci´o generats en anteriors ocasions. Finalment cal clicar sobre el fitxer .exp desitjat. Per iniciar una exploraci´ o, pr`eviament caldr`a configurar-la mitjan¸cant el panell de configuraci´ o, i despr´es cal clicar al bot´o Iniciar. Aquesta operaci´o t´e un comportament diferent amb les exploracions que s’han recuperat des de el disc, ja que en aquests casos l’exploraci´o continuar` a des de l’´ ultim punt on es va deixar, a no ser que ja hagu´es finalitzat. Per pausar o aturar una exploraci´ o caldr`a clicar sobre els botons Pausar i Aturar respectivament. El bot´ o Tancar tanca i surt l’aplicaci´o. L’eina d’exploraci´o proporciona sis panells amb diferents funcionalitats, des de panells de configuraci´o fins a panells de monitoritzaci´o i generaci´o d’estad´ıstiques: Panell de configuraci´ o de l’exploraci´ o Es tracta d’un panell per configurar les exploracions. En aquest s’especifiquen aspectes tan importants com el nom de l’exploraci´ o, la URL inicial, la profunditat m`axima d’ex-


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

87

Figura A.4: Indicadors d’estat d’exploraci´o ploraci´o, el nombre de desc`arregues simult`anies, nombre de desc`arregues simult`anies per host, l’estrat`egia d’exploraci´o, etc. Panell de resultats Aquest panell cont´e un subconjunt de panells dedicats a monitoritzar dades generades durant l’exploraci´o en temps real. Per exemple, velocitats de desc`arrega de cada fil d’execuci´o, tamanys de fitxer m´es freq¨ uents, errors de desc`arrega, tipus de fitxers m´es freq¨ uents, etc. Panell de l’arbre de nodes Mostra tots els fitxers descarregats realitzant una representaci´ o exacta del sistema de fitxers de cada host explorat. Amb aquesta eina es pot obtenir informaci´o immediata de cada document web explorat o pendent de ser explorat, navegant a trav´es de l’arbre de fitxers. Panell de la cua de pendents Mostra totes les URLs pendents d’explorar. La visualitzaci´ o es fa mostrant en una banda les URLs priorit`aries i en l’altra les secund`aries. Panell de graf d’enlla¸ cos Es tracta d’una eina per generar, visualitzar i tractar el graf composat pels hipervincles dels nodes explorats. Permet visualitzar nom´es els nodes que satisfan determinades condicions, per exemple, visualitzar els nodes d’un determinat host o d’un determinat tipus. Panell d’Auto-LogIn Ofereix una eina per a obtenir i completar formularis web d’autentificaci´o que ofereixen acc´es a zones restringides. Els formularis s´on emmagatzemats a disc i poden ser usats m´es endavant per a realitzar exploracions. A la part inferior de l’aplicaci´o d’exploraci´o es troben els indicadors d’estat d’exploraci´o. Es tracta d’un conjunt d’indicadors que s’actualitzen cada 500ms durant el transcurs d’una exploraci´o, mostren informaci´o en temps real de l’exploraci´ o, aix´ı com el nombre de threads actius (desc`arregues actives), p`agines web explorades (nombre de documents web descarregats i tractats exitosament), tamany total descarregat (tamany en bytes dels documents web descarregats exitosament), desc`arregues fallides (nombre d’intents de desc`arrega fallits), elements a la cua (nombre total d’URLs pendents de descarregar), hosts trobats (nombre de hosts descoverts fins al moment),


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

88

Figura A.5: Panell de configuraci´o ample de banda actual (l’ample de banda en kilobytes per segon usat en aquell instant), l’ample de banda m`axim(m`axim ample de banda assolit desde l’inici de l’exploraci´ o en kilobytes per segon) i l’´ ultim node explorat (´ ultima URL descarregada exitosament quan s’ha realitzat l’´ ultima comprovaci´ o).

A.3.2

Configuraci´ o de par` ametres d’exploraci´ o

El panell de configuraci´ o permet establir els par`ametres inicial d’exploraci´o. El panell es divideix en quatre `arees: web inicial, configuraci´o exploraci´o, dominis i extensions. A l’` area de web inicial, cal sel·leccionar el tipus d’exploraci´o que es vol fer. Si s’escull explorar una `area p´ ublica, cal indicar la URL inicial a la part de la dreta. Si s’escull explorar una `area restringida cal indicar quin formulari usar. Els formularis es creen mitjan¸cant l’eina d’Auto-LogIn. A l’` area de configuraci´ o d’exploraci´o cal indicar tots aquells par`ametres que afecten al comportament de l’exploraci´o. Primerament cal posar un nom a l’exploraci´ o. Aquest ser`a el nom que tindr`a el fitxer d’exploraci´o que s’emmagatzemar`a al disc i tamb´e ser`a el nom del directori on s’emmagatzemaran els fitxers descarregats a la Intranet. A continuaci´o, cal indicar el nombre m`axim de documents a descarregar, el nombre m`axim de desc`arregues si-


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

89

mult`anies, el nombre de desc`arregues simult`anies per host (que ha de ser menor o igual que el nombre m`axim de desc`arregues simult`anies) i la profunditat m`axima d’exploraci´o (el nombre m`axim d’enlla¸cos que hi pot haver entre el node inicial i qualsevol altre node a explorar). Despr´es, cal indicar els aspectes que afecten a l’estrat`egia d’exploraci´o. En aquest sentit, cal indicar si volem realitzar una exploraci´o en amplada o una en profunditat. Caldr` a decidir si volem explorar els enlla¸cos externs o no. En cas afirmatiu, haurem d’indicar si volem donar prioritat a les desc`arregues de fitxers que pertanyen al host inicial; en l’altre cas, haurem de decidir si volem explorar subdominis del mateix host inicial o no. De totes maneres, s’ha de decidir si sempre s’haur`a de provar de descarregar el seg¨ uent node disponible o no. Per a m´es informaci´o cal consultar l’apartat 2.4. Hi ha la possibilitat d’actualitzar i visualitzar els gr`afics estad´ıstics en temps real, simplement activant l’opci´o Actualitzaci´ o autom` atica d’estad´ıstiques. Tamb´e existeix la possibilitat de realitzar operacions d’auto-guardar exploracions de manera autom`atica. Aix`o es du a terme amb l’opci´o de Desar dades peri` odicament, on cal indicar-ne la periodicitat en minuts. Aquesta funcionalitat resulta especialment u ´til quan cal realitzar grans exploracions de llarga durada. Cal destacar finalment, la possibilitat d’utilitzar llistes de URLs prohibides, ´es a dir, URLs que no seran explorades. Aquestes llistes s’han de guardar al directori on hi ha la Intranet en format .txt. Aquests fitxers es poden composar amb qualsevol editor de text, de manera que cada l´ınia del fitxer ha de contenir una adre¸ca url. Prohibir l’exploraci´o d’URLs pot resultar u ´til, per exemple, per evitar explorar p`agines web amb continguts que no ens interessen. A l’` area de dominis s’escullen els dominis que volem que s’explorin. En aquest sentit, s’exploren u ´nicament aquelles URLs tals que el seu domini base no pertany al grup de dominis no seleccionats. El mateix passa a l’`area d’extensions, on nom´es s’exploren aquelles URLs tals que la seva extensi´o no pertany al grup d’extensions no seleccionades.

A.3.3

Panells de monitoritzaci´ o i estad´ıstiques

Els panells de monitoritzaci´o tenen per objectiu mostrar gr`aficament les estad´ıstiques acumulades de l’exploraci´o. Es divideixen en sis panells diferents. Si hi ha activada l’opci´ o d’actualitzar autom`aticament les estad´ıstiques, aleshores les visualitzacions de les gr`afiques s’actualitzen cada 500ms, altrament caldr`a clicar sobre el bot´o Actualitzar de cada panell per a actualitzar


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

90

Figura A.6: Indicadors gr`afics de les velocitats de desc`arrega els gr`afics. Threads Mostra els fitxers que descarreguen cada thread. De cada thread es visualitza gr`aficament la seva velocitat de desc`arrega, la URL del fitxer que est`a descarregat i la icona associada a l’extensi´o del fitxer que descarrega. Tamanys Mostra un histograma de tamanys. Es tracta d’un histograma creat a partir dels tamanys dels documents web descarregats amb `exit. Incid` encies Mostra un gr`afic de roda indicant els percentatges de cada tipus d’error detectat. El percentatge es basa sobre tots aquells fitxers que han fallat al descarregar-los. A la taula de la dreta, es mostra el nombre exacte de fallides de cada tipus, la suma de tots els valors ´es igual al nombre de desc`arregues fallides. Dominis Mostra un gr`afica de roda indicant els percentatges de pres`encia de fitxers de cada domini. El percentatge es basa sobre tots aquells fitxers que han estat descarregats amb `exit. A la taula de la dreta, es mostra el nombre exacte de fitxers explorats de cada domini. La suma de tots els valors ´es igual al nombre de desc`arregues exitoses. Extensions Mostra una gr`afica de roda indicant els percentatges de pres`encia de fitxers de cada tipus d’extensi´o. El percentatge es basa sobre tots aquells fitxers que han estat descarregats amb `exit. A la taula de la dreta, es mostra


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.7: Histograma de tamanys

Figura A.8: Gr`afic d’incid`encies

91


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

92

Figura A.9: Gr`afic de dominis el nombre exacte de fitxers explorats de cada tipus d’extensi´o. La suma de tots els valors ´es igual al nombre de desc`arregues exitoses. Resum Mostra un resum de tots els gr`afics en un u ´nic panell. Aix`o permet veure l’evoluci´o en temps real de tots ells en una sola vista.

A.3.4

Exploraci´ o - Operacions b` asiques

En aquest apartat s’expliquen els passos b`asics que cal fer per realitzar l’exploraci´ o d’un lloc web p´ ublic. Per a fer-ho, seguirem un exemple en el qual es pret`en explorar els nodes web del host www.etse.urv.es i tots els seus subdominis. Per tant, primer cal executar l’aplicaci´ o i esperar a que es carregui el men´ u d’inici r`apid. Escollir l’operaci´ o explorar El men´ u d’inici r`apid ens ofereix acc´es a les tres operacions principals del programa: explorar, indexar i cercar. Escollirem la primera opci´ o, explorar, tal i com es mostra a la figura A.1. Comen¸ car una nova exploraci´ o Un cop carregada l’eina d’exploraci´o, caldr`a comen¸car una nova exploraci´o. Per fer-ho cal clicar sobre el bot´o Nova exploraci´ o del men´ u superior, mitjan¸cant el qual apareixeran tots els panells de control. A partir d’aquest punt caldr`a comen¸car a configurar l’exploraci´ o.


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.10: Gr`afic d’extensions

Figura A.11: Resum de tots els panells de resultats

93


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

94

Figura A.12: Exploraci´o p´ ublica del lloc web www.etse.urv.es Configurar l’exploraci´ o La configuraci´o de l’exploraci´o es fa mitjan¸cant el panell de configuraci´ o. L’acc´es a cadascun dels panells de control es fa clicant sobre les corresponents solapes de la part esquerra de la pantalla. Inicialment ja es visualitza el panell de configuraci´o, per tant, no caldr`a rec`orrer a l’´ us de la solapa de configuraci´o. Realitzarem una exploraci´o p´ ublica sobre el host www.etse.urv.es tal i com s’ha dit al principi, per tant, cal aplicar els seg¨ uents passos: Indicar la web inicial Indicarem primer que volem realitzar una Exploraci´ o d’una a `rea p´ ublica, i inserirem l’adre¸ca URL del lloc web www.etse.urv.es ´ important l’elecci´o que fem de la URL d’inici, a l’` area de text de la dreta. Es ja que cal posar sempre l’adre¸ca del node arrel del lloc web que pretenguem explorar. Mirar la figura A.12. Posar un nom a l’exploraci´ o Ara cal ajustar els par`ametres de l’exploraci´o. Primer de tot, cal posar un nom a l’exploraci´o, que hauria d’anar d’acord amb el t´ıtol o tema del lloc web a explorar. En aquest cas ETSE ´ important usar noms amb lletres exclusivament seria un nom raonable. Es alfanum`eriques, ´es a dir, paraules de l’alfabet o nombres sencers, ja que alguns s´ımbols tipogr`afics poden no ser admesos pel sistema de fitxers del sistema operatiu. Ajustar els par` ametres d’exploraci´ o A continuaci´o, cal especificar els par`ametres t`ecnics que afecten indirectament al comportament de l’estrat`egia d’exploraci´o. El valor del nombre total de p`agines a descarregar es pot deixar intacte, a no ser que ens interessi explorar un nombre concret de documents. El nombre de desc`arregues simult`anies per defecte ´es cinc, encara que si disposem d’una connexi´o amb un ample de banda considerable podem posar el valor a deu, o fins i tot a quinze si el host a explorar es troba a la mateixa LAN. El nombre de desc`arregues simult`anies per host ´es dos per defecte. Decidir aquest valor no ´es f`acil, ja que dep`en del host a explorar, tanmateix usar valors entre dos i quatre pot ser acceptable. La profunditat d’exploraci´o dependr`a de si volem fer una petita exploraci´o o b´e una exploraci´ o a gran escala. En el primer cas una profunditat entre tres i cinc ´es suficient, en el segon cal usar profunditats majors o iguals a set.


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.13: ` area de configuraci´o d’exploraci´o

95


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

96

´ important recordar que normalment els nodes m´es profunds acostumen Es a ser els que menys ens interessen. Mirar la figura A.13. Ajustar els par` ametres estrat` egics A continuaci´o, cal especificar els par`ametres t`ecnics que afecten directament al comportament de l’estrat`egia d’exploraci´o. La funcionalitat dels seg¨ uents par`ametres, s’explica detalladament a l’apartat 2.4 referent als par`ametres i configuracions de l’exploraci´ o web. La casella Explorar enlla¸cos externs la desmarquem, ja que ens interessar` a explorar u ´nicament aquells documents que pertanyen al host www.etse.urv.es. Aix´ı doncs, deixarem marcada la casella Explorar hosts del domini ja que tamb´e volem explorar documents que pertanyen a subdominis del host inicial, com ara, www.subdomini.etse.urv.es o www.subsubdomini.subdomini.etse.urv.es. Deixarem tamb´e marcada la casella Sempre explorar el seg¨ uent disponible. Finalment, escollirem l’estrat`egia d’exploraci´o basada en la Cerca Depth-First. Mirar la figura A.13. Ajustar els par` ametres funcionals Si marquem la casella Actualitzaci´ o autom` atica d’estad´ıstiques, ens estalviarem haver de clicar sobre els botons d’actualitzar dels panells de monitoritzaci´o i estad´ıstiques durant l’exploraci´ o, ja que aleshores s’actualitzarien autom`aticament cada 500ms. Ens pot resultar interessant per veure l’evoluci´o dels resultats en temps re´ important remarcar que l’actualitzaci´o al, per`o la deixarem desactivada. Es autom`atica suposa un cost addicional important de l’´ us de CPU en m`aquines lentes. El que si que activarem ser`a l’opci´o de desar autom`aticament l’exploraci´o, d’aquesta manera l’aplicaci´o anir`a desant al disc l’estat actual de l’exploraci´ o en cada moment. En exploracions llargues cal posar una periodicitat alta superior a quinze o vint minuts, mentre que amb exploracions de curta durada es poden posar periodicitats d’entre dos i cinc minuts. Per acabar, podem decidir usar una llista amb URLs prohibides, tanmateix en aquest exemple no n’usarem cap. Mirar la figura A.13. Escollir els dominis i les extensions Ara cal seleccionar els dominis i extensions dels fitxers que volem que s’explorin, de manera que els que no s’escullin no seran explorats. Mirar la figura A.14. Iniciar l’exploraci´ o En aquests moments ja podem iniciar l’exploraci´o. Cal clicar sobre el bot´ o Iniciar del men´ u superior; una caixa de missatge ens avisar` a que l’exploraci´ o comen¸car`a. En aquest moment l’exploraci´o es posar`a en marxa i podrem observar com tots els documents descarregats s’emmagatzemen a la carpeta \intranet\ETSE de l’ordinador. En qualsevol moment podem pausar o aturar l’exploraci´o fent u ´s del men´ u superior. L’exploraci´o finalitza sense avisar, de manera que sabrem que aquesta ha acabat


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.14: `arees de dominis i extensions

97


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

98

quan els indicadors de la part inferior de la pantalla indiquin que hi ha zero threads actius. Visualitzar l’arbre d’exploraci´ o L’arbre d’exploraci´o permet visualitzar tots els nodes explorats en forma d’arbre, simulant el sistema de fitxers de cada host explorat. Consta d’una llista de hosts a la part esquerra i un arbre de directoris i fitxers a la part dreta. Per poder disposar en qualsevol moment dels u ´ltims estats dels arbres, caldr`a clicar sobre el bot´o Actualitzar llista de la part inferior del panell. Un cop hi haguem clicat tindrem la llista actualitzada i llesta per usar, aix´ı doncs, clicant sobre algun dels hosts d’aquesta, es visualitzar`a a la dreta el corresponent arbre. Podem desplegar directoris de l’arbre per poder veure’n els seus continguts, de la mateixa manera, clicant sobre cada node de l’arbre obtindrem informaci´o d’aquests als indicadors inferiors. Mitjan¸cant els filtres de la part superior del panell podrem visualitzar tots els nodes, els nodes que han fallat, els nodes explorats o els nodes pendents de descarregar respectivament. Quan s’escull un filtre cal tornar a escollir el host de la llista de l’esquerra. Mirar la figura A.15. Visualitzar la cua de pendents La cua de pendents permet visualitzar les URLs que resten pendents de ser explorades. A la banda esquerra es mostren les URLs priorit` aries, mentre que a la banda dreta es mostren les URLs secund`aries o no priorit`aries.

A.3.5

Explorar una ` area restringida

Les exploracions en ` arees restringides difereixen de les p´ ubliques, en el fet que cal completar un formulari previ d’autentificaci´o i enviar-lo abans de descarregar la URL d’acci´o. Per a la tasca d’obtenci´o i completaci´o del formulari s’ha d’utilitzar l’eina d’Auto-LogIn que inclou el programa. L’acc´es a aquesta eina es fa clicant sobre la solapa Auto-LogIn. En aquest cas, provarem d’explorar un compte de correu d’usuari a trav´es del servei de webmail que ofereix el lloc web www.queenzone.com. Indicar la URL del formulari d’identificaci´ o Primer cal inserir la URL on hi ha el formulari d’identificaci´o. Cal estar segur que la URL inserida ´es realment la URL que cont´e el formulari, ja que ´es habitual trobar p`agines web autoredireccionades cap a altres URLs, i per tant, es f`acil pensar que la URL que cont´e el formulari ´es la que es apareix a la barra de direcci´o dels clients web. Un cop inserida la url, caldr`a clicar sobre el bot´o Extreure formularis. Seleccionar el formulari Despr´es de clicar sobre el bot´o d’extracci´o de formularis, l’aplicaci´o descarregar`a la p`agina web i despr´es extreur`a tots els


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.15: Arbre d’exploracions

99


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

100

formularis que pugui contenir. Un cop finalitzi l’extracci´ o, apareixeran els noms de tots els formularis extrets a la llista de la part esquerra. A la part inferior de la llista apareix el nombre de formularis trobats. No existeix una forma concreta de saber quin ´es el formulari que cal utilitzar, per tant, cal clicar sobre dels formularis per poder veure els seus continguts a la taula de la part central. Inserir el login i la contrasenya Saber quin ´es el formulari que cal omplir no ´es trivial, a no ser que nom´es hi hagi un sol formulari. Al clicar a sobre del formulari desitjat de la llista, podrem veure’n el seu contingut a la taula central de l’aplicaci´o. En aquesta tindrem a la columna de l’esquerra els noms dels camps, mentre que a la columna de la dreta tindrem els corresponents valors. Els noms dels camps els assignen els desenvolupadors de p`agines web, de manera que el camp del login i de la contrasenya haurien de tenir noms abreviats relacionats. Hi poden haver camps que ja portin un valor, en aquests casos no s’ha de modificar el valor ja que es pot tractar d’identificadors de sessi´ o. Ja que l’aplicaci´o no t´e manera d’averiguar quin ´es el camp de la contrasenya, l’usuari escriur`a aquesta sabent que pot ser visualitzada a trav´es del monitor al moment d’inserir-la. Posar un nom al formulari i desar-lo Un cop s’han omplert els camps, cal posar un nom al formulari a l’`area de text Nom per al formulari. Cal posar un nom adequat, en aquest exemple Compte de correu Queenzone seria el m´es adient. Un cop fets tots els passos anteriors, caldr`a desar el formulari al disc clicant sobre el bot´o Desar formulari. Si tot ha anat b´e, ens apareixer`a una caixa de missatge indicant-ho. Configurar i iniciar l’exploraci´ o En aquest punt ´es moment de configurar i iniciar l’exploraci´ o. Caldr`a accedir al panell de la pestanya de configuraci´o. A l’` area Web inicial haurem d’indicar que volem realitzar una exploraci´ o en una ` area restringida. Aleshores, haurem de seleccionar el formulari d’acc´es que hem composat amb l’eina d’Auto-LogIn. Com que podrem composar varis formularis, haurem d’escollir el que t´e el nom Compte de correu Queenzone. La resta de passos de configuraci´o seran exactament els mateixos que cal realitzar amb l’exemple de l’exploraci´o p´ ublica anterior. Un cop s’hagin definit tots els par`ametres de configuraci´o, iniciarem l’exploraci´ o clicant sobre el bot´o Iniciar. Acceptar les Cookies Els llocs web que disposen de zones d’acc´es restringit, acostumen a requerir l’´ us de les cookies, ja sigui per emmagatzemar i recollir informaci´o de sessi´ o o d’altre tipus. El seu u ´s ha d’estar autoritzat per l’usuari, exactament tal i com passa amb la resta de clients web. Es per aix`o que durant la fase inicial de l’exploraci´o poden apar`eixer q¨ uestionaris


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

101

preguntant a l’usuari si vol acceptar o refusar l’acc´es a les cookies. Per anar b´e, cal acceptar totes les solicituts que apareguin. Una mostra seria la que apareix a la figura .

A.3.6

Visualitzaci´ o de grafs

Una de les principals funcionalitats de l’aplicaci´o es la composici´o i visualitzaci´ o de les exploracions en forma de graf. Consisteix en generar un graf a partir dels nodes web descoberts i els hipervincles que hi ha entre ells. ´ important remarcar que es tracta d’una eina per a la visualitzaci´o de Es grafs de petita escala, ja que pel tractament de grafs de grans dimensions fa falta disposar d’un ordinador amb una elevada velocitat de processament. Seguint amb l’exemple de l’exploraci´o del lloc web www.etse.urv.es, podrem generar i visualitzar el graf accedint al panell de la pestanya Graf enlla¸cos i clicant sobre el bot´o Mapa de nodes. Actualitzaci´ o, visualitzaci´ o i renderitzaci´ o del graf Al clicar sobre el bot´ o Mapa de nodes, s’obrir`a una nova finestra on podrem treballar amb el graf, de manera que podem obrir tantes finestres de grafs com convingui. Inicialment, caldr`a obtenir i carregar el graf. Aix`o es fa clicant sobre el bot´ o Actualitzar graf. Aquest proc´es obt´e les u ´ltimes dades necess`aries per composar el graf i visualitzar-lo a l’`area de visualitzaci´o central. L’actualitzaci´o del graf es pot fer m´ ultiples vegades durant el transcurs d’una exploraci´ o, de manera que sempre podrem treballar amb els u ´ltims nodes descoberts. La visualitzaci´ o i estabilitzaci´o del graf ´es una tasca molt lenta i costosa, a m´es a m´es, ´es f`acil deduir-ho ja que el consum de CPU es dispara. Aquesta tasca no finalitza mai, ´es per aix`o que l’usuari ha de decidir quan vol aturar la renderitzaci´o del graf per alliberar el consum continu de CPU, clicant sobre el bot´ o Aturar. Si no agrada com ha quedat posicionat el graf, podem saccejarlo de nou, ja sigui recarregant-lo clicant sobre el bot´o Actualitzar graf o b´e clicant sobre el bot´ o Repintar graf que ´es lleugerament m´es r`apid. Informaci´ o dels nodes i significat dels colors Cada node t´e un color en funci´o del host al qual pertany, de manera que per a cada host hi ha assignat un color a l’atzar. Els nodes amb ratlles verdes s´on nodes pendents d’explorar, ´es a dir, encara estan a la cua de nodes pendents. Una peculiaritat d’aquests nodes ´es que no tenen arestes de sortida. Els nodes amb ratlles vermelles s´on nodes que han fallat alhora de descarregar-los.


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

102

Podem obtenir informaci´o inmediata d’un node simplement, posicionant el cursor del ratol´ı sobre d’ell. Fent aix`o apareixer`a un missatge flotant al costat del node, on s’hi mostra la URL, l’estat, els enlla¸cos sortints i entrants, i el tipus del node en q¨ uesti´o. A m´es a m´es, podem veure la URL sencera del node a la part inferior de la finestra. Al costat de l’indicador d’URL, tenim a disposici´o dos indicadors num`erics que ens indiquen el nombre de nodes que hi ha al graf i el nombre d’arestes que t´e, tot i que ´es important remarcar que el contingut d’aquests indicadors fan refer`encia al graf sencer original i no varien encara que apliquem filtres visuals sobre el graf. Llista de hosts A la part superior dreta de la pantalla, hi ha a disposici´o de l’usuari una llista amb tots els hosts descoberts. Es tracta de la mateixa llista que apareix al panell d’arbre de nodes, per`o en aquesta llista el primer element, anomenat [ Tots ], sempre fa refer`encia a tots els hosts. Clicant sobre un host estem aplicant un filtre visual sobre tot el graf, de manera que nom´es es visualitzen els nodes del host seleccionat. Efectes visuals La pestanya Visual de la part dreta permet accedir al panell d’efectes visuals. Amb aquest panell podem aplicar efectes visuals sobre el graf. Marcant la casella Mostrar URLs es visualitzen les URLs de cada node del graf al costat d’aquests, resulta u ´til quan el graf t´e pocs nodes. La casella Mostrar pesos dels enlla¸cos permet visualitzar el pes de cada aresta del graf. El pes d’una aresta ´es la profunditat d’aquesta respecte el node inicial. Mitjan¸cant el subpanell Forma de les arestes podrem canviar la forma de les arestes, ja sigui en forma linial, corba simple, doble linial i doble corba. Amb el subpanell Zoom, podem ampliar i redu¨ır la visualitzaci´o del graf. Aquesta funcionalitat tamb´e es pot realitzar amb la rodeta del ratol´ı. De manera similar, amb el ratol´ı podem despla¸car la posici´o del graf arrastrantlo, ´es a dir, clicant sobre una part del graf no ocupada per nodes ni arestes i movent alhora el cursor de ratol´ı. Filtres URL Els filtres URL s´on filtres visuals per visualitzar nom´es aquells nodes tals que la seva URL satisf` a unes condicions. Per accedir a aquests filtres, caldr`a clicar sobre la pestanya Filtre URL. En aquesta panell tenim acc´es quatre filtres diferents. Els filtres es poden usar de forma combinada, de manera que, per exemple, podrem filtrar els nodes en funci´o dels seus hosts i extensions alhora. Per usar un filtre, cal marcar la seva corresponent casella i


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

103

depr´es omplir l’` area de text de la seva dreta. El filtre de hosts permet visualitzar nom´es aquells nodes tals que el seu host es troba a l` area de text. Podem inserir tans elements a les `arees de text com volguem, per`o han d’anar separats per espais. Per exemple, si volem visualitzar nom´es els nodes que pertanyen als hosts www.gnu.org, www.etse.urv.es i www.domini.etse.urv.es, primer caldr`a marcar la casella dels hosts i despr´es inserir els hosts a la corresponent `area de text separats per espais. El procediment ´es id`entic amb els filtres de ruta, fitxer i extensi´o. El filtre de ruta permet visualitzar els nodes tals que el seu fitxer es troba dins d’una ruta concreta del seu host, per exemple, /a/b/c/. El filtre de fitxer funciona igual que l’anterior per`o cal indicar un o varis fitxers, per exemple, index.html o login.php. El filtre d’extensi´o ´es similar, en aquest cas cal indicar les extensions que volem que tinguin els nodes que volem visualitzar, per exemple, .pdf o .txt.

A.4

Indexar

L’acc´es a l’eina d’indexaci´o es fa clicant sobre la icona Indexar del men´ u d’inici r`apid, tal i com es mostra a la figura A.20. Aquesta part de l’aplicaci´o s’encarrega de generar ´ındexs seguint els procediments explicats a l’apartat 3 referent a l’extracci´ o i indexaci´o d’informaci´o.

A.4.1

Configuraci´ o dels par` ametres d’indexaci´ o

L’eina d’indexaci´o es divideix en quatre `arees. A l’`area d’exploracions hi ha llistades totes les exploracions emmagatzemades a la Intranet del disc, ´es a dir, a la ruta d’Intranet definida al fitxer rutes.cfg. A l’`area de configuraci´o ´es on cal configurar pr`eviament l’indexaci´o i cal definir el nom de l’´ındex a crear, el nombre de fils d’execuci´o simultanis, seleccionar les exploracions que volem que quedin indexades, indicar si volem crear un fitxer de freq¨ u`encies de paraules, indicar si volem utilitzar un fitxer d’StopWords, i finalment cal indicar les extensions de fitxers que volem que s’indexin. A l’` area d’´ındexs actuals hi trobarem la llista d’´ındexs que s’han creat fins al moment, i que es troben emmagatzemats al directori d’´ındexs definit al fitxer rutes.cfg. Mitjan¸cant el bot´o Eliminar ´ındex podrem eliminar l’´ındex que nosaltres marquem, sense previ av´ıs de confirmaci´o. Finalment, a l’` area d’estat de la indexaci´ o s’hi troben els indicadors. Aquests indicadors mostren informaci´o relativa al transcurs de la indexaci´o, aix´ı com el nombre de fils d’indexaci´o actius, el nombre de documents indexats, la quantitat indexada, etc.


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.16: www.etse.urv.es

104


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.17: www.cnn.com

105


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.18: www.udl.es

106


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.19: surf.de.uu.net

107


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

108

Figura A.20: Selecci´o de l’eina d’indexaci´o La barra de progr´es de l’` area d’estat ´es la que es troba a la part inferior de la finestra. Mostra visualment l’evoluci´o de la indexaci´o i reflexa la proporci´o de documents indexats i la proporci´o de documents que resten. Durant una indexaci´ o, la barra de progr´es es reinicia a zero en funci´o del nombre d’exploracions que s’indexin, ´es a dir, si estem creant un ´ındex a partir de tres exploracions que hem seleccionat, la barra es reiniciar`a tres vegades, i per a cada exploraci´o la barra incrementar`a del zero al cent per cent. Aix`o es pot observar mitjan¸cant els indicadors num`erics que cont´e a la seva part central.

A.4.2

Indexar - Operacions b` asiques

En les pr`oximes l´ınies, es seguir`a amb el mateix exemple de l’apartat A.3.4, en el que s’explica detalladament els procediments que cal seguir per explorar el lloc web www.etse.urv.es. Ara s’indicaran els passos per a realitzar-ne el corresponent ´ındex, tenint en compte que voldrem generar, a m´es a m´es, un fitxer de freq¨ u`encies de paraules amb les vint paraules m´es freq¨ uents a tot el conjunt de documents que conformen l’exploraci´o o exploracions escollides. Crear un nou ´ındex Per comen¸car a configurar un nou ´ındex cal clicar sobre el bot´ o Nou ´ındex del panell de botons de la part superior de la finestra. Un cop fet aix`o ja podem comen¸car a configurar-ho. Anomenar l’´ındex i escollir les exploracions Primer de tot cal posar un nom al nou ´ındex, caldr`a inserir el nom a l’`area de text indicada per Nom ´ındex. El nom d’un ´ındex ha de contenir text alfanum`eric, ´es a dir, nom´es lletres i n´ umeros, ja que es crear`a al directori d’´ındexs un subdirectori amb el nom que posem, i per tant, cal utilitzar car`acters suportats pel sistema de fitxers del sistema operatiu. En aquest exemple podem posar ETSE com


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.21: Interf´ıcie gr`afica de l’eina d’indexaci´o

109


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

110

biblioteca urv servei document recursos documents informacio revistes cap fons 0 0 0 0 0 0 0 0 0 0 www.etse.urv.es 0 0 0 0 0 0 1 0 0 0 www.etse.urv.es/InfoEscola/InfoGeneral/general.htm 1 21 0 0 1 0 1 0 0 0 www.etse.urv.es/InfoEscola/Directori/directoriVell.htm 0 1 0 0 0 0 1 0 0 0 www.etse.urv.es/InfoEscola/InfoAcademica/general.htm 0 1 0 0 0 0 0 0 0 0 www.etse.urv.es/InfoEscola/recerca/recerca.htm 2 2 1 36 2 0 3 2 0 2 www.etse.urv.es/bibweb 2 1 1 0 0 0 2 0 0 0 www.etse.urv.es/bibweb/pages/informacio_general/ig_3.php 3 1 1 0 0 0 2 0 0 0 www.etse.urv.es/bibweb/pages/informacio_general/ig_1.php 3 2 1 0 0 0 2 0 0 0 www.etse.urv.es/bibweb/pages/informacio_general/ig_2.php 5 17 1 0 0 0 2 0 6 0 www.etse.urv.es/bibweb/pages/informacio_general/ig_5.php 7 3 3 0 0 0 3 0 0 0 www.etse.urv.es/bibweb/pages/informacio_general/ig_8.php 191 85 106 22 4 78 7 2 70 34 www.etse.urv.es/bibweb/pages/informacio_general/ig_6.php 9 2 0 0 2 0 2 2 0 0 www.etse.urv.es/bibweb/pages/informacio_general/hist_engiweb/historia.html 1 0 0 0 4 0 3 2 0 2 www.etse.urv.es/bibweb/pages/recursos_informacio.php 2 1 1 0 4 0 2 3 0 2 www.etse.urv.es/bibweb/pages/recursos_informacio/ri_2.php 1 0 0 0 3 0 2 2 0 2 www.etse.urv.es/bibweb/pages/recursos_informacio/ri_7.php 2 0 0 0 3 0 2 2 0 6 www.etse.urv.es/bibweb/pages/recursos_informacio/fons_antic.php 2 0 0 0 3 0 2 2 0 4 www.etse.urv.es/bibweb/pages/recursos_informacio/fons_infantil.php 2 0 0 0 3 0 3 2 0 2 www.etse.urv.es/bibweb/pages/recursos_informacio/llibres_text.php 1 1 0 0 3 0 2 2 0 2 www.etse.urv.es/bibweb/pages/recursos_informacio/ri_5.php 3 0 0 0 4 0 2 2 0 2 www.etse.urv.es/bibweb/pages/recursos_informacio/ri_6.php 5 1 0 0 3 0 2 2 0 2 www.etse.urv.es/bibweb/pages/recursos_informacio/ri_9.php 1 0 0 0 3 0 2 2 0 2 www.etse.urv.es/bibweb/pages/recursos_informacio/ri_4.php 1 0 0 0 3 0 2 8 0 2 www.etse.urv.es/bibweb/pages/recursos_informacio/ri_3.php 5 4 0 0 3 0 2 18 0 3 www.etse.urv.es/bibweb/pages/recursos_informacio/ri_8.php 1 0 0 0 0 0 0 0 0 0 www.etse.urv.es/bibweb/pages/assignatures.php 2 1 1 0 0 0 3 0 0 0 www.etse.urv.es/bibweb/pages/informacio_general.php 1 0 0 0 0 0 1 0 0 0 www.etse.urv.es/bibweb/pages/utilitats.php 12 3 1 2 3 3 3 7 0 0 www.etse.urv.es/bibweb/pages/utilitats/ut_3.php 3 0 1 3 0 1 2 0 0 0 www.etse.urv.es/bibweb/pages/utilitats/ut_2.php 1 0 0 0 0 0 0 0 0 0 www.etse.urv.es/bibweb/pages/serveis.php 1 0 0 0 0 2 0 0 0 0 www.etse.urv.es/bibweb/pages/serveis/se_1.php 2 2 2 1 0 3 0 0 1 1 www.etse.urv.es/bibweb/pages/serveis/se_2.php 2 0 0 0 0 0 1 3 0 0 www.etse.urv.es/bibweb/pages/serveis/se_6.php 3 0 0 0 0 0 1 0 1 0 www.etse.urv.es/bibweb/pages/serveis/se_8.php 3 0 0 0 0 0 0 0 0 0 www.etse.urv.es/bibweb/pages/serveis/se_5.php 8 4 1 1 0 0 2 0 0 2 www.etse.urv.es/bibweb/pages/garriga_mata/Fundaci%F3_Garriga_de_Mata.php 2 2 1 36 2 0 3 2 0 2 www.etse.urv.es/bibweb/index.php 1 0 0 0 3 0 2 2 0 2 www.etse.urv.es/bibweb/Psicologia/tests.php 6 1 3 0 31 3 8 16 0 0 www.etse.urv.es/bibweb/Psicologia/recursos_temes.htm 0 0 0 0 0 0 9 0 0 0 www.etse.urv.es/avinterna/general.htm 0 0 0 0 6 0 0 0 0 0 www.etse.urv.es/eleccions/calendari_electoral_2005.htm 1 0 3 0 0 0 0 0 0 0 www.etse.urv.es/guia_docent

Figura A.22: Fitxer de freq¨ u`encies de paraules (www.etse.urv.es)


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

111

a nom. A continuaci´o cal escollir les exploracions de la llista de l’esquerra a la llista d’exploracions escollides de la dreta. Cal clicar sobre l’exploraci´o ETSE que hem realitzat anteriorment, i a continuaci´o cal clicar sobre el bot´ o Afegir. Seguint aquest u ´ltim procediment v`aries vegades podrem afegir m´ ultiples exploracions. Configurar Ara s’ha d’indicar el nombre de fils d’indexaci´o simultanis que s’utilitzaran. Per defecte n’hi ha quatre, tot i que se’n poden posar m´es. Com que volem crear un fitxers de freq¨ u`encies, marcarem la casella Generar fitxers de freq¨ u`encies de paraules i indicarem que volem que analitzi les vint paraules m´es freq¨ uents en tot el conjunt d’exploracions escollides. El fitxer que es crear` a tindr` a el mateix nom que hem indicat i extenci´o .txt. A continuaci´o marcarem la casella Usar llista de StopWords ja que el contingut de l’exploraci´ o est`a en catal` a i volem que descarti els StopWords. Un cop fet aix`o, cal escollir el fitxer clicant sobre el bot´o Obrir. Podrem veure totes les llistes d’StopWords disponibles que ja venen amb l’aplicaci´o, les quals es troben al subdirectori stopwords del directori de l’aplicaci´o. Finalment, caldr`a indicar les extensions que volem que s’indexin. En aquest cas volem que s’indexin tots els documents i per tant ho deixarem emmarcat tal i com est`a. Iniciar la indexaci´ o En aquest moment l’aplicaci´o ja est`a configurada. Clicarem sobre el bot´ o Indexar del panell de botons de control de la part superior de la finestra. Si tot est`a b´e, una caixa de missatge ens indicar`a que el proc´es comen¸car`a. Quan finalitzi el proc´es, una nova caixa de missatge ens ho far`a saber. Observarem que el nou ´ındex apareixer`a a la llista d’´ındexs actuals de la dreta de la finestra.

A.5

Cercar

L’acc´es a les eines de cerca es fa clicant sobre la icona Cercar del men´ u d’inici r`apid, tal i com es mostra a la figura A.23. Aix`o obrir`a el men´ u d’aplicacions de cerca, mitjan¸cant el qual podem escollir dos operacions: Realitzar cerques locals o remotes, o iniciar el servidor de cerques.

A.5.1

Cercar en un ´ındex local

Seguint amb l’exemple de l’exploraci´o del host www.etse.urv.es i el seu corresponent ´ındex, realitzarem ara una cerca de continguts. Ha de quedar clar que les cerques es realitzen sobre els ´ındexs creats, i no sobre els fitxers d’exploraci´o. Primerament cal escollir l’operaci´o Cerca local o remota del men´ u d’aplicacions de cerca, tal i com es mostra a la figura A.24. En aquest exemple, provarem de cercar aquells documents que contenen les paraules software i lliure a l’´ındex ETSE.


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.23: Selecci´o de l’eina de cerca

Figura A.24: Selecci´o de l’eina de cerca local o remota

112


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

113

Marcar els ´ındexs Cal marcar els ´ındexs locals sobre els quals es realitzar`a la cerca. Per a marcar m´ ultiples ´ındexs cal mantenir la tecla Ctrl. apretada i amb el ratol´ı cal marcar els ´ındexs desitjats. En aquest cas nom´es es marcar`a l’´ındex ETSE. Inserir les paraules i realitzar la cerca Cal accedir al panell de cerca clicant sobre la pestanya Cerca. A continuaci´o, s’insereixen les paraules software i lliure, separades per un espai, a l’area de text i finalment cal clicar sobre el bot´ o Cercar. Interpretaci´ o i visualitzaci´ o dels resultats Si s’han trobat documents, aleshores a la part inferior esquerra de la pantalla, un indicador ens dir`a el nombre de documents que s’han trobat i les URLs aquest es llistaran a la llista de resultats. Podem veure informaci´o relativa de cada document simplement clicant sobre la seva URL a la llista i finalment clicant sobre el bot´ o Mostrar de la part inferior. De cada document trobat es visualitza la seva URL, el t´ıtol, l’autor, la seva descripci´o, el tamany en bytes, i el seu cos o text en pla extret.

A.5.2

Cercar en un ´ındex remot

Les cerques remotes s´on cerques que es realitzen sobre servidors de cerca remots. A part d’aquest aspecte, tota la resta d’operacions es realitzen exactament igual que si es tract´es d’una cerca local. En aquest sentit, cal con`eixer l’adre¸ca IP o nom del host on hi ha actiu el servidor i realitzar passos que s’expliquen a continuaci´o. Connectar-se i obtenir la llista d’´ındexs remots Al panell d’´ındexs de l’eina de cerca, cal marcar l’opci´o Usar ´ındexs remots i inserir l’adre¸ca IP o nom del host del servidor de cerques. Finalment, caldr`a clicar sobre el bot´ o de la dreta per a establir la connexi´o. Si la connexi´o conclou amb `exit, aleshores s’obtindr` a la llista d’´ındexs que ofereix el servidor. En aquest punt, cal realitzar els mateixos procediments que s’apliquen per realitzar cerques sobre ´ındexs locals.

A.5.3

Montar un servidor de cerques

L’acc´es al servidor de cerques es fa clicant sobre la icona Servidor de cerques del men´ u d’aplicacions de cerca, tal i com es mostra a la figura A.26. Abans d’arrencar el servidor cal escollir els ´ındexs que volem que serveixi, d’aquesta manera, els clients nom´es poden veure i realitzar cerques en els ´ındexs escollits al servidor. El funcionament ´es for¸ca simple, el servidor o b´e s’arrenca, o b´e s’atura.


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.25: Interf´ıcie gr`afica de l’eina de cerca

114


` ´ PER A L’USUARI APENDIX A. MANUAL D’APLICACIO

Figura A.26: Selecci´o del servidor de cerques

Figura A.27: Interf´ıcie gr`afica del servidor de cerques

115


Ap` endix B

Conclusi´ o i propostes per al futur Per concloure aquest treball, explicar´e breument els motius que m’han condu¨ıt a desenvolupar un projecte d’aquestes caracter´ıstiques. Donar´e tamb´e el meu punt de vista sobre els diferents aspectes relacionats amb tot el que he fet, i com ho he fet. La idea de desenvolupar un conjunt d’eines per explorar, indexar i cercar continguts web, havia sorgit inicialment com una proposta de treball plantejada pel tutor. Aquest projecte m’ha ofert la possibilitat d’aprendre nous coneixements que fins ara desconeixia, aix´ı com descobrir i utilitzar eines de desenvolupament de codi obert que no he tingut oportunitat d’utilitzar al llarg de la carrera. Des del meu punt de vista, valoro molt positivament els resultats que s’han obtingut amb aquest projecte, principalment perqu`e hi ha hagut una l´ınia de treball constant des de l’inici del cicle de desenvolupament fins al final. La primera fase, l’he dedicada completament a l’an`alisi i disseny de l’aplicaci´o, era molt important definir el funcionament del web crawler, aix´ı com les seves estructures de dades i la interacci´o entre les diferents classes a implementar. Totes les decisions de disseny s’han pr`es despr´es de passar per un per´ıode de recolecci´o d’informaci´o i documentaci´o sobre el tema que calia treballar, aix´ı com de l’aprenentatge de totes les llibreries que calia utilitzar i que han estat explicades en apartats anteriors. La segona fase, ha estat dedicada exclusivament a la implementaci´o de tot el codi font i a la realitzaci´o de jocs de proves exhaustius per verificar el correcte funcionament de tot el conjunt desenvolupat.

116


` ´ I PROPOSTES PER AL FUTUR APENDIX B. CONCLUSIO

117

L’objectiu inicial s’ha assolit, i crec que s’han creat un conjunt d’eines u ´tils, que poden ser utilitzades per inform`atics, administradors i desenvolupadors de llocs web, i en general per aquelles persones que tinguin especial inter`es o necessitat en indexar grans quantitats de documents web i real´ important remarcar la necessitat que tenen itzar cerques sobre aquests. Es algunes empreses o entitats en mantenir indexada la informaci´o, ja que actualment generen grans quantitats de documents i hi ha una forta demanda en realitzar cerques i obtenir resultats r`apidament. A continuaci´o, es deriven un seguit de propostes per a possibles futures versions del programa. • Permetre l’exploraci´ o d’`arees d’acc´es restringit mitjan¸cant l’´ us de connexions segures a trav´es del protocol HTTPS. • Desenvolupar un sistema d’indexaci´o distribu¨ıt, de manera que es puguin crear ´ındexs a partir d’exploracions realitzades en diferents m`aquines d’una xarxa. • Modificar la forma amb qu`e es realitzen les exploracions, de manera que es reexplorin aquells documents tals que el seu contingut ha caducat o s’ha actualitzat dins d’un per´ıode de temps determinat. • Desenvolupar una llibreria o servlet que permeti realitzar consultes sobre els ´ındexs a trav´es d’interf´ıcies web. • Dotar l’eina d’exploraci´o de noves estrat`egies d’exploraci´o. Les propostes anteriorment mencionades, obren les portes a futures l´ınies de treball, les quals no han estat desenvolupades en aquest projecte ja que des del principi no formaven part dels plans inicial establerts en aquest. Finalment queda dir que tot el material creat s’ha realitzat mitjan¸cant els seg¨ uents recursos i eines d’edici´o i desenvolupament: • Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08) • JCreator Pro v3.10.008 • JFormDesigner v2.0 • MiKTeX-e-TEX 2.4.1700 (2.2) (TEX Version 3.141592) • Adobe Photoshop v5.0 • Connexi´o telef` onica amb ADSL 512Kbps i m`odem 56kbps. • Equip Intel Pentium3(R) 796MHz 64MB de RAM (Windows XP) • Equip Intel Pentium4(R) 1,5GHz 128MB de RAM (Windows XP) • Equip Intel Pentium4(R) 3GHz 512MB de RAM (Windows XP)


Ap` endix C

Preguntes m´ es freq¨ uents Aquesta aplicaci´ o´ es software lliure. Aix` o que significa? Significa que aquesta aplicaci´o ´es lliure en el sentit que amb total llibertat es pot executar, copiar, distribuir, estudiar, modificar i millorar. El mapa de nodes consumeix molta CPU. Aix` o ´ es normal? S´ı, ´es normal. La renderitzaci´ o i estabilitzaci´o del graf ´es un proc´es que no finalitza mai, per`o ´es l’usuari qui decideix quan cal aturar la renderitzaci´o, i per tant, poder alliberar l’´ us de CPU. Per a fer-ho cal clicar sobre el bot´o Aturar. Puc visualitzar qualsevol graf amb el mapa de nodes? Tot i que dep`en principalment de les prestacions que tingui l’equip on s’executi l’aplicaci´ o, la resposta ´es no. Cal tenir en compte que quants m´es nodes i arestes tingui el graf, m´es lenta anir`a l’aplicaci´o, fins a cert punt que en alguns casos ´es pr`acticament impossible poder treballar amb el graf. A efectes pr` actics, quina estrat` egia d’exploraci´ o´ es la millor? L’´ us d’aquesta aplicaci´o hauria de ser per a realitzar exploracions de petita escala, en aquests casos resulta m´es adequat utilitzar l’estrat`egia Depth-First ja que consumeix menys recursos i el que interessa ´es explorar tots els nodes sense tenir en compte l’ordre en que es faci. L’estrat`egia Breadth-First ´es la m´es adequada quan cal realitzar exploracions de mitjana-gran escala, ja que en aquests casos no es pot determinar quan finalitzar`a l’exploraci´o i ´es important descarregar primer els nodes m´es interessants (els m´es propers al node inicial). Les exploracions a ` arees restringides conclouen sempre amb ` exit? ´ dif´ıcil assegurar si una exploraci´o en una `area privada conclour`a amb `exit Es o no, entre d’altres coses, perqu`e tot i que l’enviament del formulari es pot haver realitzat correctament, no es pot determinar si el servidor ha donat per v`alides les dades enviades. En aquest cas els servidors no responen amb 118


` ´ FREQUENTS ¨ APENDIX C. PREGUNTES MES

119

un codi de retorn que ho indiqui espec´ıficament. El sistema d’exploraci´o restringida ha estat provat exitosament amb servidors din` amics que corren usant PHP i Perl. Mentre exploro una ` area restringida, arriba un moment en que l’exploraci´ o finalitza, quan en realitat hi ha p` agines que crec que ´ normal ´ normal? Es s’haurien d’haver explorat i no s’ha fet. Es i acostuma a tenir soluci´o. Algunes p`agines web din`amiques utilitzen una adre¸ca URL per finalitzar la sessi´o que s’ha establert en el moment d’enviar el formulari. Aix`o es coneix com el proc´es de logout, en el qual perdem o deixem de tenir acc´es a les p`agines d’acc´es restringit. Aix`o ´es habitual en p`agines amb continguts din`amics generats amb PHP. Solucionar aix`o ´es tasca de l’usuari, ja que aquest ha de saber quina ´es la URL del servidor que realitza el logout. Normalment s’utilitzen URLs amb noms de fitxer com logout.html o logout.php. Per solucionar aix`o, cal posar aquestes URL al fitxer d’URLs prohibides i marcar l’opci´o d’utilitzar un fitxer d’adreces prohibides abans d’iniciar l’exploraci´o. Alguns servidors em deneguen la connexi´ o. Com ho puc evitar? Alguns servidors, com ara Google, acostumen a refusar les desc`arregues de p`agines web quan hi realitzem conexions massives. En aquests casos l’exploraci´ o en surt perjudicada ja que no s’han configurat adientment els par`ametres de l’exploraci´ o. Cal limitar el nombre de desc`arregues simult`anies per host, ja que alguns servidors s´on molt restrictius en aquest aspecte. Estic explorant un lloc web i n’estic segur que hi ha p` agines que no s’han explorat. Falla alguna cosa? En realitat no es que falli res, per`o hi ha molts motius pels quals poden haver-hi hipervincles que s’ignorin. Tot i que sembli extrany, Internet est`a ple de p`agines web amb hipervincles mal formats, encara que alguns clients web utilitzen m`etodes for¸ca sofisticats per corregir aquests vincles. Aquesta aplicaci´o descarta qualsevol hipervincle que es consideri mal format, aix`o es fa per accelerar el proc´es d’exploraci´o. Estic explorant un lloc web amb un elevat contingut de codi Javascript. Per qu` e no s’exploren tots els hipervincles? El proc´es d’extracci´o d’hipervincles no t´e en compte els hipervincles continguts dins de codi Javascript, ja que nom´es analitza codi estrictament HTML. Aquesta ´es una tasca pendent de cara al futur. Puc explorar llocs web amb seguretat, ´ es a dir, utilitzant el protocol https? De moment no. Les exploracions es realitzen sense utilitzar Secure Socket Layer. Alguns servidors admeten ambd´os tipus de connexi´o, per tant, es recomana inserir la URL d’inici afegint el prefix http://.


` ´ FREQUENTS ¨ APENDIX C. PREGUNTES MES

120

Hi ha disponible una distribuci´ o per a Windows. Existeix una distribuci´ o preparada per al sistema Linux? No s’ha desenvolupat encara una distribuci´ o preparada per a Linux, encara que en el manual d’usuari d’aquesta documentaci´ o es descriuen detalladament els procediments que cal seguir per compilar i executar l’aplicaci´o en qualsevol sistema operatiu on es pugui compilar o executar programes en Java. ´ normal L’aplicaci´ o indexadora no indexa alguns documents. Es aix` o? Hi ha casos en els qu`e no es pot extreure el text d’alguns documents. ´ habitual Acostuma a passar amb els documents amb format PDF i DOC. Es trobar documents PDF mal formats per Internet, mentre que dels documents de Microsoft Word no sempre se’n poden extreure text ja que es tracta d’un format propietari. Amb els documents HTML tamb´e s’acostuma a trobar gran quantitat de documents mal formats, i que per tant s´on descartats durant el proc´es d’indexaci´o. Els fitxers es descarreguen, per defecte, al directori /intranet del disc. Puc canviar-ho? S´ı, es pot canviar. Cal editar el fitxer rutes.cfg que hi ha al directori de l’aplicaci´o. Es tracta d’un fitxer de text que cont´e les rutes on s’emmagatzemen els fitxers descarregats i els ´ındexs generats amb l’aplicaci´o indexadora. Hi ha determinades URLs que no vull que s’explorin. Com ho indico? Cal editar un fitxer de text indicant a cada l´ınia d’aquest les URLs que no volem explorar. El fitxer s’ha de guardar en format .txt al directori on tinguem definida la intranet al fitxer rutes.cfg. Posteriorment, caldr`a marcar l’opci´ o de no explorar URLs prohibides i seleccionar el fitxer creat. Amb l’eina per realitzar ´ındexs, puc crear un ´ındex a partir de m´ ultiples exploracions? S´ı, es pot. Cal anar afegint de la llista d’exploracions totes aquelles exploracions que volguem a la llista de la dreta, ´es a dir, a la llista d’exploracions escollides. El proc´es d’indexaci´o crear`a un u ´nic ´ındex a partir de les exploracions escollides. Amb l’eina per realitzar cerques puc realitzar una cerca sobre un conjunt d’´ındexs? S´ı, es pot. Per a fer-ho cal seleccionar varis dels ´ındexs disponibles de la llista. La selecci´o es fa mantenint apretada la tecla Ctrl. i clicant a sobre dels ´ındexs amb el cursor del ratol´ı. Els resultats de les cerques contindran resultats obtinguts a partir dels ´ındexs marcats. On puc trobar distribucions, actualitzacions i millores del programa? Les distribucions, actualitzacions, millores, documentaci´o i altres


` ´ FREQUENTS ¨ APENDIX C. PREGUNTES MES

121

temes relacionats amb aquest conjunt d’eines d’exploraci´ o, indexaci´o i cerca ho trobar`as a la web del programa http://toke.sourceforge.net o a la web del seu autor http://www.telefonica.net/web2/albertng


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.