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

Slides:



Advertisements
Presentazioni simili
Strutture dati per insiemi disgiunti
Advertisements

Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
IlTrovatore S.p.a. IlTrovatore RemoteSearch IlTrovatore mette a disposizione di portali Internet, piccole e medie imprese, tutto il suo know-how nel settore.
DBMS (DataBase Management System)
Consumare Web Service Andrea Saltarello
Installazione di Apache 2, PHP5, MySQL 5
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
Web Services.
File System Cos’è un File System File e Directory
Connessione con MySQL.
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
1 Ulrichs SAS Serials Analysis System Cenfor International Rossella Welzel.
Algoritmo di Ford-Fulkerson
1 Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Introduzione a Java: primo programma, installazione dellambiente di sviluppo, compilazione.
Ranking di pagine Web Ilaria Bordino, Yahoo! Research Barcelona
Raccolta, ranking e query delle pagine di un webgraph
Architettura del World Wide Web
Ranking di pagine Web Ilaria Bordino, Yahoo! Research Barcelona Ida Mele, Sapienza Universita di Roma.
Hadoop: introduzione (1)
MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Yahoo! Research, Barcelona.
Calcolo di PageRank: esercizio
Un introduzione a Java Ant per lutilizzo con Swarm Marco Lamieri 13/04/2004.
Crawling Saverio Caminiti.
CORSO DI RICERCA BIBLIOGRAFICA 4. giornata (20 marzo 2008) Web of Science Beilstein e Gmelin Crossfire.
Open Archives Initiative e Metadata harvesting ICCU Seminario nazionale sui Metadati Roma 3 aprile 2001 Dr. Valdo Pasqui Università di Firenze.
Ranking di pagine Web Ilaria Bordino Ranking di pagine web.
Seminario Swarm Seminario su Swarm Pietro Terna web.econ.unito.it/terna.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Corso di Informatica per Giurisprudenza Lezione 7
e per generare Bibliografie
1° passo Aprire Internet Explorer Andare alla homepage di Ateneo Aprire il menu Ateneo Scorrere fino Servizi di Ateneo Cliccare su Servizi Informatici.
Chinosi Michele – matr.: La seconda release di Virtuose basata su database XML La seconda release di Virtuose basata su.
Modulo 7 – reti informatiche u.d. 3 (syllabus – )
C APITOLO 6 © 2012 Giorgio Porcu – Aggiornamennto 22/02/2012 G ESTIRE D ATI E C ARTELLE DI LAVORO Excel Avanzato.
Progettazione multimediale
Test Reti Informatiche A cura di Gaetano Vergara Se clicchi sulla risposta GIUSTA passi alla domanda successiva Se clicchi sulla risposta ERRATA passi.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Configurazione in ambiente Windows Ing. A. Stile – Ing. L. Marchesano – 1/23.
Motori di Ricerca presente e futuro prossimo
La versione 18 di Aleph500: le novità CATALOGAZIONE Rita Vanin Ottobre 2007.
Fondamenti delle Reti di Computer Seconda parte Carasco 15/04/2010.
Fondamenti di JSP: Introduzione
Creare pagine web Xhtlm. Struttura di una pagina.
Web Communities and their identificaton
BIOINFO3 - Lezione 361 RICERCA DI SIMILARITA TRA SEQUENZE Un altro problema comunissimo in bioinformatica è quello della ricerca di similarità tra sequenze.
BIOINFO3 - Lezione 41 ALTRO ESEMPIO ANCORA Progettare il comando di creazione di una tabella di pubblicazioni scientifiche. Come chiave usare un numero.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Amministrazione della rete: web server Apache
Lavorare con le query Federica Scarrione 18/05/2009 fonte:
Ant Che cos’è Come si utilizza Funzionalità principali
USO DEL COMPUTER E GESTIONE DEI FILE
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
Progettare corsi con Moodle
Modulo 6 Test di verifica
a cura di Francesco Lattari
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
Lezione 8.
Vannucci Roberto (5BM), De Nardin Axel (5AM)
Corso Web CSV – Andiamo on-line 1 Andiamo on-line Corso di formazione Elementi base per la costruzione di un sito web.
Modulo 5 - Database. Contenuti della lezione 5.1.1Concetti Fondamentali 5.1.2Organizzazione di un Database 5.1.3Relazioni 5.2.1Lavorare con i database.
Unix (Linux-Mac OS) Alcuni comandi. cd change working directory cd [DIRECTORY] cd entra nella directory specificata. Se non è fornita alcuna directory.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
MySQL Database Management System
Publishing Platform Presentazione: Cinzia Colacicco Support Account Manager.
Extension pack per IIS7 Piergiorgio Malusardi IT Pro Evangelist
Servizi Internet Claudia Raibulet
Allineamento di sequenze
Tecnologie lato Server: i Server Web © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto.
IV Corso di formazione INFN per amministratori di siti GRID Tutorial di amministrazione DGAS Giuseppe Patania.
Transcript della presentazione:

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

Software open source costruito al top di Jakarta Lucene. Nutch Framework Apache per la costruzione di crawler scalabili e applicazioni per Web Search. Software open source costruito al top di Jakarta Lucene. URL: http://nutch.apache.org Disponibile gratuitamente presso: http://www.apache.org/dyn/closer.cgi/nutch/ Crawling

Java API per lo sviluppo di motori di ricerca testuali. 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: http://jakarta.apache.org/lucene Crawling

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. Crawling

Giovane progetto open source. 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. Crawling

Nutch: Obiettivi tecnici Scalare all’intero 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 dell’arte per la search. Crawling

Nutch: Architettura Crawling

Input: un set di pagine html. Nutch: motore di ricerca configurabile dall'utente Permette la raccolta delle pagine, l’indicizzazione e l’interrogazione 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. Crawling

Download: http://www.apache.org/dyn/closer.cgi/nutch/ Nutch: download Download: http://www.apache.org/dyn/closer.cgi/nutch/ Scaricare una delle ultime release. Tutorial: http://wiki.apache.org/nutch/NutchTutorial Presentazione generale del codice: http://nutch.apache.org/apidocs-1.4/index.html Crawling 9

Nutch: configurazione A partire da Nutch 0.9 è richiesta Sun JDK 1.5 o superiore: http://www.oracle.com/technetwork/java/javase/downloads/index.html Tomcat di Apache 5.x: http://tomcat.apache.org/ Almeno un GigaByte su disco. Connessione Internet veloce. Tempo :-) Crawling

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. Crawling

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

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.email http.agent.version and set their values appropriately. Crawling

Nutch: configurazione (5) <property><name>http.agent.description</name> <value></value><description>Further description of our bot- this text is used in the User-Agent header. It appears in parenthesis after the agent name. </description></property><property> <name>http.agent.url</name> <value></value> <description>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. </description></property><property> <name>http.agent.email</name> <value></value> <description>An email 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. </description></property> Crawling

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 un’unità durante il fetching; indexes: indici nel formato supportato da Lucene. Crawling

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. Crawling

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. Crawling

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: http://www.dis.uniroma1.it 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: -[?*!@=] Crawling

Raccolta delle pagine: crawl Lista di alcuni parametri: <urlDir>: 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!!! Crawling 19

Interrogazione del DB: readdb Usage: CrawlDbReader <crawldb> (-stats | -dump <out_dir> | -topN <nnnn> <out_dir> [<min>] | -url <url>) <crawldb>: nome della directory contenente il crawldb; -stats[-sort]: stampa le statistiche su System.out. -sort stampa ordinato per host; -dump<out_dir>[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 <nnnn><out_dir> [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 <url>: stampa informazioni riguardanti url su System.out. Crawling 20

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-00000. Crawling

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

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-00000. Con egrep -v $'^$' mylinks/part-00000 >inlinks.txt si crea un file con i link entranti. Crawling

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 <segment_dir> <output> [general options]: effettua il dump dei segmenti presenti nella directory segment_dir nel file di testo <output>. 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. Crawling

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. Crawling

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/20111204174133/ dump-outlinks N.B. Ogni segmento viene identificato con la data e l'ora in cui è stato creato. Nell'esempio la directory è: 20111204174133 perché il segmento è stato creato il 2011-12-04 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. Crawling

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. Crawling

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 Crawling

numNodes=$(wc -l < sorted-url-list.txt) 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 Crawling

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 Crawling

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