La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Crawling Ilaria Bordino Ida Mele Sapienza Università di Roma Ida Mele Sapienza Università di Roma.

Presentazioni simili


Presentazione sul tema: "Crawling Ilaria Bordino Ida Mele Sapienza Università di Roma Ida Mele Sapienza Università di Roma."— Transcript della presentazione:

1 Crawling Ilaria Bordino Ida Mele Sapienza Università di Roma Ida Mele Sapienza Università di Roma

2 Crawling Pagina 2 Nutch Framework Apache per la costruzione di crawler scalabili e applicazioni per Web Search. Software open source costruito al top di Jakarta Lucene. URL: Disponibile gratuitamente presso:

3 Crawling Pagina 3 Jakarta Lucene Java API per lo sviluppo di motori di ricerca testuali. Non applicazione, ma API che consente la realizzazione di search applications customizzate in base alle specifiche esigenze degli sviluppatori. Grande comunità di sviluppatori. Tecnologia usata nello sviluppo di molti siti e applicazioni web (furl, zoe, jira, lookout). URL:

4 Crawling Pagina 4 Lucene: principali caratteristiche Indicizzazione scalabile e performante. Algoritmi per la Search potenti, accurati ed efficienti. Include supporto per: ranked searching, fielded searching, wildcard queries, phrase queries, proximity queries, range queries and more. Ricerca su molteplici indici con merging dei risultati. Permette esecuzione simultanea di update e search. Cross platform solution: 100% java, disponibile come software open source.

5 Crawling Pagina 5 Nutch Giovane progetto open source. Software per lo sviluppo di applicazioni per Web Search. Non è un sito di ricerca, ma intende essere un mezzo per potenziare molti siti di ricerca. Non è un progetto di ricerca, ma intende essere un supporto per la ricerca. Obiettivi: –incrementare la disponibilità di tecnologie per Web Search; –aumentare la trasparenza nella Web search.

6 Crawling Pagina 6 Nutch: Obiettivi tecnici Scalare allintero Web: –milioni di server differenti, –miliardi di pagine, –il completamento di un crawl richiede settimane, –cè molto rumore nei dati. Supporto per traffico elevato (migliaia di ricerche al secondo). Qualità paragonabile allo stato dellarte per la search.

7 Crawling Pagina 7 Nutch: Architettura

8 Crawling Pagina 8 Nutch: motore di ricerca configurabile dall'utente Permette la raccolta delle pagine, lindicizzazione e linterrogazione delle pagine web. Input: un set di pagine html. Output: motore di ricerca sulle pagine raccolte. Uso: raccolta di pagine e ricerca sulla collezione indicizzata.

9 Crawling Pagina 9 Nutch: download Download: Scaricare una delle ultime release. Tutorial: Presentazione generale del codice:

10 Crawling Pagina 10 Nutch: configurazione A partire da Nutch 0.9 è richiesta Sun JDK 1.5 o superiore: Tomcat di Apache 5.x: Almeno un GigaByte su disco. Connessione Internet veloce. Tempo :-)

11 Crawling Pagina 11 Nutch: configurazione (2) Inizializzare NUTCH_JAVA_HOME con la directory radice di Java: –LINUX: edit.bashrc per inserire: export NUTCH_JAVA_HOME=/usr/local/lib/... –MAC OS: export NUTCH_JAVA_HOME=/Library/Java/Home Aggiungere NUTCH/bin al PATH (N.B. NUTCH rappresenta la directory radice di nutch): –edit.bashrc per inserire: export PATH =$ PATH:NUTCH/bin (x la release 1.1) export PATH=$PATH:NUTCH/runtime/local/bin (x la release 1.4) Nota: devono sempre essere controllate e impostazioni locali della vostra macchina. Riavviate il terminale dopo le modifiche, infine se necessario modificate i permessi di nutch.

12 Crawling Pagina 12 Nutch: configurazione (3) Nelle nuove versioni di nutch è necessario configurare alcuni parametri come lidentificatore dello user-agent. Editare il file conf/nutch-default.xml settando alcune proprietà minimali: http.agent.name... HTTP 'User-Agent' request header. MUST NOT be empty - please set this to a single word uniquely related to your organization.

13 Crawling Pagina 13 Nutch: configurazione (4) Si possono anche configurare altre proprietà. Contenuto del file /conf/nutch-default.xml: NOTE: You should also check other related properties: –http.robots.agents –http.agent.description –http.agent.url –http.agent. –http.agent.version and set their values appropriately.

14 Crawling Pagina 14 Nutch: configurazione (5) http.agent.description Further description of our bot- this text is used in the User-Agent header. It appears in parenthesis after the agent name. http.agent.url A URL to advertise in the User-Agent header. This will appear in parenthesis after the agent name. Custom dictates that this should be a URL of a page explaining the purpose and behavior of this crawler. http.agent. An address to advertise in the HTTP 'From' request header and User-Agent header. A good practice is to mangle this address (e.g. 'info at example dot com') to avoid spamming.

15 Crawling Pagina 15 Crawlare il Web con Nutch Nutch è stato progettato per la gestione di crawl su larga scala, che siano eseguiti in un sistema distribuito e che possono richiedere molto tempo (settimane) per il completamento. I dati raccolti sono organizzati nel modo seguente: –crawldb: database del crawl. Contiene info su ogni url nota a nutch, incluso se e quando è stato fatto il fetching; –linkdb: database dei link. Contiene inlink noti a tutte le url raccolte, riportando url sorgente e anchor text; –segments: un insieme di segmenti; un segmento è un insieme di URL considerate come ununità durante il fetching; –indexes: indici nel formato supportato da Lucene.

16 Crawling Pagina 16 Crawlare il Web con Nutch Un segmento è una directory che contiene le seguenti sottodirectory: - crawl_generate: contiene l'elenco delle URL di cui bisogna fare il fetching; - crawl_fetch: contiene lo stato di fetching di ogni URL; -content: mantiene il contenuto associato a ogni URL; - parse_text: contiene il testo estratto con il parsing da ogni URL; - parse_data: contiene outlink e metadata estratti con il parsing; - crawl_parse: contiene gli outlink, usati per aggiornare crawldb.

17 Crawling Pagina 17 Nutch: due approcci al crawling Intranet crawling: si utilizza comando crawl. Scelta appropriata se si vuole effettuare un crawl di dimensioni limitate, fino a 1M pagine. Whole-Web crawling: da utilizzare per crawl molto estesi, che abbiano bisogno di una quantità notevole di tempo e di risorse computazionali. Si utilizzano comandi a più basso livello come ad esempio: admin db -create, inject, generate, fetch, updatedb per avere un maggiore controllo e/o per fare update dei dati esistenti.

18 Crawling Pagina 18 Raccolta delle pagine del DIS Creare nella directory radice di nutch il file urls e inserire la url della home page del sito di cui si vuole fare crawling: –Es: Modificare il file conf/crawl-urlfilter.txt (x la release 1.1) conf/automaton-urlfilter.txt (x la release 1.4) per personalizzare la raccolta. Aggiungere: +^http://([a-z0-9]*\.)*dis.uniroma1.it/ per limitare la raccolta alle pagine al dominio: dis.uniroma1.it. Eventualmente eliminare (rimuovere o commentare) la riga:

19 Crawling Pagina 19 Raccolta delle pagine: crawl Lista di alcuni parametri: – : root directory con le url; –[-dir d]: directory dove saranno memorizzati i risultati della raccolta; –[-threads n]: numero di threads eseguiti in parallelo; –[-depth i]: profondità dei path a partire dalla pagina radice. Crawling delle pagine del DIS: –nutch crawl urls -dir mycrawl –depth 5 >& mycrawl.log –NON ESEGUIRE A LEZIONE!!!

20 Crawling Pagina 20 Interrogazione del DB: readdb Usage: CrawlDbReader (-stats | -dump | -topN [ ] | -url ) – : nome della directory contenente il crawldb; –-stats[-sort]: stampa le statistiche su System.out. -sort stampa ordinato per host; –-dump [format normal|csv]: effettua il dump dell'intero database in out_dir. Il dump è in formato standard con -format normal (default), è in formato csv (valori separati da virgole) con -format csv. –-topN [min]: effettua il dump in out_dir delle prime nnnn urls ordinate per score. Si possono saltare i record il cui lo score è inferiore ad un valore minimo indicato in min. –-url : stampa informazioni riguardanti url su System.out.

21 Crawling Pagina 21 Interrogazione del DB: readdb (2) Dopo aver eseguito un crawl possiamo stampare statistiche, o fare il dump dell'intero database. ll comando: nutch readdb mycrawl/crawldb -stats > stats.txt stampa statistiche come ad esempio: il numero di urls, il punteggio min, max e medio delle pagine, ecc. Il comando: nutch readdb mycrawl/crawldb -dump mydump crea il dump del database. Per ogni pagina abbiamo informazioni quali: data e ora in cui si è fatto il fetch, data e ora della modifica, numero di retries, intervallo di retry, score, ecc. more mydump/part

22 Crawling Pagina 22 Interrogazione del DB: readlinkdb Usage: LinkDbReader (-dump | -url ) – : nome della directory contenente il linkdb; –-dump : effettua il dump dell'intero database di link in out_dir. –-url : stampa informazioni riguardanti url su System.out.

23 Crawling Pagina 23 Interrogazione del DB: readlinkdb (2) Dopo aver eseguito un crawl possiamo analizzare la struttura degli hyperlink della collezione raccolta. Il comando: nutch readlinkdb mycrawl/linkdb/ -dump mylinks crea una directory chiamata mylinks che conterrà informazioni sugli inlink delle URL create in semplice formato testuale. more mylinks/part Con egrep -v $'^$' mylinks/part >inlinks.txt si crea un file con i link entranti.

24 Crawling Pagina 24 Estrazione degli outlink: readseg Il database linkdb fornisce informazioni relavimente ai soli link entranti. Per estrarre gli outlink dai dati raccolti dobbiamo leggere i segmenti. Usiamo il comando readseg: Usage: SegmentReader (-dump... | -list... | -get...) [general options] –-dump [general options]: effettua il dump dei segmenti presenti nella directory segment_dir nel file di testo. Le opzioni sono: - nocontent, -nofetch, -nogenerate, -noparse, - noparsedata, -noparsetext. –-list...: stampa su System.out il contenuto di più segmenti. –-get...: stampa su System.out il contento di un segmento.

25 Crawling Pagina 25 Estrazione degli outlink: mergesegs Dato che si vuole estrarre gli outllink da un unico segmento globale, ottenuto unendo i vari segmenti. Usiamo il comando mergesegs: Usage: SegmentMerger output_dir (-dir segments | seg1 seg2...) [-filter][-slice NNNN] –output_dir: directory che conterrà il/i pezzo/i di segmento d'output; –-dir segments: directory contente i vari segmenti; –seg1 seg2...: lista di directory con i segmenti; –-filter: elimina le URLs proibite nel URLFilter. –-slice NNNN: crea più segmenti di output, ognuno contenente NNNN urls.

26 Crawling Pagina 26 Estrazione outlink: esempio Usiamo il comando mergeseg per fondere i vari segmenti ottenuti con il crawling: nutch mergesegs whole-segments -dir mycrawl/segments/ Quindi usiamo il comando readseg per estrarre outlink dal segmento globale ottenuto: nutch readseg -dump whole-segments/ / dump-outlinks N.B. Ogni segmento viene identificato con la data e l'ora in cui è stato creato. Nell'esempio la directory è: perché il segmento è stato creato il alle 17:41:33. Infine utilizziamo il seguente comando: cat dump-outlinks/dump | egrep 'URL|toUrl' >outlinks.txt per creare il file con i soli outlink.

27 Crawling Pagina 27 Creazione della lista dei link Utilizziamo nutchGraph.jar già presente in lib disponibile sul sito. Settare il classpath ed eseguire: java nutchGraph.PrintInlinks inlinks.txt >links.txt java nutchGraph.PrintOutlinks outlinks.txt >>links.txt Rimozione di eventuali duplicati: LANG=C sort links.txt | uniq >cleaned-links.txt Con more verrà visualizzato il contenuto di cleaned- links.txt. Per file molto lunghi invece di more si può utilizzare head per la visualizzazione delle prime righe o tail per la visualizzazione delle ultime righe.

28 Crawling Pagina 28 Creazione mappa delle URL cut -f1 links.txt >url-list.txt cut -f2 links.txt >>url-list.txt LANG=C sort url-list.txt | uniq >sorted-url-list.txt java -Xmx2G it.unimi.dsi.util.FrontCodedStringList -u -r 32 umap.fcl < sorted-url-list.txt java -Xmx2G it.unimi.dsi.sux4j.mph.MWHCFunction umap.mph sorted-url-list.txt

29 Crawling Pagina 29 Creazione del grafo java -Xmx2G nutchGraph.PrintEdges cleaned-links.txt umap.mph > webgraph.dat numNodes=$(wc -l < sorted-url-list.txt) java -Xmx2G nutchGraph.IncidenceList2Webgraph $numNodes webgraph java -Xmx2G it.unimi.dsi.webgraph.BVGraph -g ASCIIGraph webgraph webgraph

30 Crawling Pagina 30 Download delle pagine html Procediamo all'indicizzazione delle pagine raccolte da Nutch mediante MG4J. Le pagine devono essere precedentemente scaricate, visto che non è possibile ottenerle dal db di Nutch. Scaricare le pagine: wget –i sorted-url-list.txt

31 Crawling Pagina 31 db Link structure IPS RankPG Nutch ParserDB WEB readdb graph.txt txt2IPS PageRank HITS RankHITS getfiles files MG4J QueryMG4J Query


Scaricare ppt "Crawling Ilaria Bordino Ida Mele Sapienza Università di Roma Ida Mele Sapienza Università di Roma."

Presentazioni simili


Annunci Google