ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΗΥ 463 Συστήµατα Ανάκτησης Πληροφοριών. Γενικός Αλγόριθµος Ακολουθεί µια γενική περιγραφή του αλγορίθµου ενός ερπυστή.



Σχετικά έγγραφα
Posting File. D i. tf key1 [position1 position2 ] D j tf key2... D l.. tf keyl

Special edition of the Technical Chamber of Greece on Video Conference Services on the Internet, 2000 NUTWBCAM

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

Συστήματα Διαχείρισης Βάσεων Δεδομένων

Συστήματα Ανάκτησης Πληροφοριών ΗΥ-463

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΤΕΧΝΟΛΟΓΙΕΣ ΠΟΛΥΜΕΣΩΝ

Approximation of distance between locations on earth given by latitude and longitude

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

1. (25%) Αναφέρετε πέντε (5) «καλoύς» κανόνες (πρακτικές) σχεδίασης web sites (όχι περισσότερες από δύο γραμμές για κάθε κανόνα)

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

Εισαγωγή στη Βιοπληροφορική

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Το διαδίκτυο είναι ένα δίκτυο που αποτελείτε από πολλά μικρότερα δίκτυα υπολογιστών.

Partial Differential Equations in Biology The boundary element method. March 26, 2013

SOLUTIONS TO MATH38181 EXTREME VALUES AND FINANCIAL RISK EXAM

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

MathCity.org Merging man and maths

ΤΕΙ ΚΡΗΤΗΣ ΚΕΝΤΡΙΚΗ ΒΙΒΛΙΟΘΗΚΗ. Η χρήση του. Βήμα προς Βήμα

SOAP API. Table of Contents

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

Τµήµα Πληροφορικής. Υλοποίηση LRU Cache ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ - ΕΡΓΑΣΙΑ 4. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Γενικά περί Caching

ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ MOODLE

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

1. Αφετηρία από στάση χωρίς κριτή (self start όπου πινακίδα εκκίνησης) 5 λεπτά µετά την αφετηρία σας από το TC1B KALO LIVADI OUT

10 MERCHIA. 10. Starting from standing position (where the SIGN START ) without marshal (self start) 5 minutes after TC4 KALO LIVADI OUT

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

Section 8.3 Trigonometric Equations

Inverse trigonometric functions & General Solution of Trigonometric Equations

Δίκτυα Επικοινωνιών ΙΙ: OSPF Configuration

PARTIAL NOTES for 6.1 Trigonometric Identities

Ψηφιακή ανάπτυξη. Course Unit #1 : Κατανοώντας τις βασικές σύγχρονες ψηφιακές αρχές Thematic Unit #1 : Τεχνολογίες Web και CMS

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

Modbus basic setup notes for IO-Link AL1xxx Master Block

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version ΗΜΙΤΕΛΗΣ!!!!

How to register an account with the Hellenic Community of Sheffield.

Other Test Constructions: Likelihood Ratio & Bayes Tests

wget --post-file meme.jpg :9646

DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0.

Συστήματα Διαχείρισης Περιεχομένου στον Παγκόσμιο Ιστό Διάλεξη #7 η : Επιλογές εμφάνισης άρθρων. Modules. Γαβαλάς Δαμιανός dgavalas@aegean.

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Πληρουορική Γ Γσμμασίοσ

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

Λύση (από: Τσιαλιαμάνης Αναγνωστόπουλος Πέτρος) (α) Το trie του λεξιλογίου είναι

ΑΣΚΗΣΗ. Συγκομιδή και δεικτοδότηση ιστοσελίδων

ΙΚΤΥΩΤΟ ΜΟΝΤΕΛΟ (Network Model) Μαθ. # 15

Example Sheet 3 Solutions

(C) 2010 Pearson Education, Inc. All rights reserved.

ΕΑΠ/ΠΛΗ22/ΑΘΗ.3. Έκτακτη ΟΣΣ 31/05/2014. Νίκος Δημητρίου.

Physical DB Design. B-Trees Index files can become quite large for large main files Indices on index files are possible.

Στο εργαστήριο θα μελετηθούν: Διδάσκων: Γιώργος Χατζηπολλάς. Εργαστήριο 2: Εργαλεία Συστήματος UNIX. Ομάδες για παρουσίαση

ANSWERSHEET (TOPIC = DIFFERENTIAL CALCULUS) COLLECTION #2. h 0 h h 0 h h 0 ( ) g k = g 0 + g 1 + g g 2009 =?

Τεχνικές Συµπίεσης Βίντεο. Δρ. Μαρία Κοζύρη Τµήµα Πληροφορικής Πανεπιστήµιο Θεσσαλίας

HY340, 2009 Α. Σαββίδης Slide 2 / 143. HY340, 2009 Α. Σαββίδης Slide 3 / 143. HY340, 2009 Α. Σαββίδης Slide 4 / 143

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

Για το μέρος αυτό της άσκησης θα υλοποιήσετε μια εφαρμογή κελύφους η οποία θα χρησιμοποιείται ως εξής:

Δέντρα Απόφασης (Decision(

Μορφοποίηση υπό όρους : Μορφή > Μορφοποίηση υπό όρους/γραμμές δεδομένων/μορφοποίηση μόο των κελιών που περιέχουν/

World Wide Web: Ο παγκόσµιος ιστός Πληροφοριών

Σύστημα Άυλων Τίτλων - Οδηγίες παραμετροποίησης client συστήματος

α) η καταγραφή και η σύλληψη της δικτυακής κίνησης (capture) και β) η ανάλυση της δικτυακής κίνησης.

1) Abstract (To be organized as: background, aim, workpackages, expected results) (300 words max) Το όριο λέξεων θα είναι ελαστικό.

The Simply Typed Lambda Calculus

Use Cases: μια σύντομη εισαγωγή. Heavily based on UML & the UP by Arlow and Neustadt, Addison Wesley, 2002

PortSip Softphone. Ελληνικά Ι English 1/20

ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ OPEN ECLASS

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

Information Retrieval

If we restrict the domain of y = sin x to [ π, π ], the restrict function. y = sin x, π 2 x π 2

Βασικές Έννοιες Web Εφαρμογών

CYTA Cloud Server Set Up Instructions

About Ολοκληρωμένο Πληροφοριακό Σύστημα παρακολούθησης συλλογής, επεξεργασίας και ανάλυσης δημοσιότητας OCR Speech to Text Big Data Analytics

CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο

If we restrict the domain of y = sin x to [ π 2, π 2

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Ρύθμιση Εξυπηρετητή Apache σε Ubuntu Linux

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ.

Web 論 文. Performance Evaluation and Renewal of Department s Official Web Site. Akira TAKAHASHI and Kenji KAMIMURA

12. Σταχυολόγηση Ιστού

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

SOLUTIONS TO MATH38181 EXTREME VALUES AND FINANCIAL RISK EXAM

FSM Toolkit Exercises

The challenges of non-stable predicates

Ανάκτηση Δεδομένων (Information Retrieval)

2 Composition. Invertible Mappings

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Προγραμματιστική Εργασία - 2o Μέρος

Στρατηγικές Ασφάλειας

Εργαστήριο 4: Εργαλεία Συστήματος UNIX. Διδάσκων: Γιώργος Χατζηπολλάς. Στο εργαστήριο θα μελετηθούν: Εργαστηριακή Άσκηση 2 Παραδείγματα χρήσης awk

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΗΥ 463 Συστήµατα Ανάκτησης Πληροφοριών Εργασία: Ταραντούλα Εισαγωγή Σκοπός της εργασίας αυτής είναι η σχεδίαση και η ανάπτυξη ενός ερπυστή σε Java που να καλύπτει τις λειτουργικές ανάγκες του Mitos. Οι ερπυστές χρησιµοποιούνται κυρίως από µηχανές αναζήτησης για το «κατέβασµα» ιστοσελίδων. Οι επιθυµητές σελίδες καθορίζονται δίδοντας ένα σύνολο URLs εκκίνησης και προσδιορίζοντας την επιθυµητή πολιτική διάσχισης και σταχυολόγησης. Συνοπτικά, ένας ερπυστής λαµβάνει ως είσοδο ένα αρχείο παραµετροποίησης (Configuration file) και παράγει ως έξοδο έναν τοπικό κατάλογο που περιέχει αντίγραφα των ιστοσελίδων που επισκέφτηκε ο ερπυστής και ένα αρχείο-ευρετήριο (index-file) µε πληροφορίες για αυτά τα αντίγραφα. Γενικές πληροφορίες για τους ερπυστές θα διδαχθούν στο µάθηµα και υπάρχουν στα βιβλία του µαθήµατος. Αναλυτικότερες οδηγίες δίδονται στην επόµενη ενότητα. Η υλοποίηση του ερπυστή πρέπει να είναι παραµετρική και εύκολα επεκτάσιµη. Για το λόγο αυτό συστήνεται η δηµιουργία UML διαγραµµάτων που να περιγράφουν την σχεδίαση του ερπυστή. Συνάµα ο κώδικας σας πρέπει να είναι πλήρως τεκµηριωµένος µε σχόλια και Javadocs. Τέλος για το έλεγχο της εγκυρότητας του κώδικα σας συστήνεται η χρήση του JUnit. Για να βοηθηθείτε (στη σχεδίαση αλλά και στην υλοποίηση) µπορείτε να επισκεφθείτε τους παρακάτω συνδέσµους: Παράδειγµα ενός απλοϊκού ερπυστή: http://java.sun.com/developer/technicalarticles/thirdparty/webcrawler/ Ερπυστές ανοιχτού / ελεύθερου κώδικα: http://java-source.net/open-source/crawlers Επεξήγηση των περιεχοµένων των http-επικεφαλίδων: http://www.w3.org/protocols/rfc2616/rfc2616-sec14.html Γενικός Αλγόριθµος Ακολουθεί µια γενική περιγραφή του αλγορίθµου ενός ερπυστή. Read the configuration file Q = Seeds // a set of URLs (the starting points) While ( not(empty(q)) and Not(PageNumberLimitExcausted) and Not(TimeLimitExchausted) ) L = PopURLfrom(Q) L = normalization(l) If (not(visited(l)) and ismodified(l) and not(includedinq(l)) and isaccepted(l) ) P = downloadpage(l) Store a copy of P at the local repository. Update the index file with an entry for P. Visited(L) = True If Parseable(P) // i.e. P s type is HTML Parse P to obtain its links. Let N be the links contained in P N = those links of N that should be visited //based on accept/reject list, robots.txt, scope Add N to Q // at the end for BFS, or at the beginning for DFS Update the index file with the eventual anchor texts EndIf EndIf EndWhile 1

Είσοδος Ερπυστή: Το αρχείο παραµετροποίησης Crawler.conf Το αρχείο αυτό θα περιλαµβάνει παραµέτρους που αφορούν: στον τρόπο ερπυσµού (crawler-options), στην καταγραφή της λειτουργίας του ερπυστή (log-options) στον επανερπυσµό (recrawling-options) στον πολυνηµατισµό (multithreading-options) Οι παράµετροι επεξηγούνται παρακάτω. Crawler-Options Σπόροι (seeds, starting-points): Καθορίζει τους δικτυακούς τόπους από τους οποίους ο ερπυστής θα αρχίσει τη διάσχιση. Φόρµουλα καθορισµού εγγράφων προς καταγραφή (Accept List) Καθορίζει, βάσει κανονικών εκφράσεων, τους αποδεκτούς (για καταγραφή) τύπους αρχείων. Φόρµουλα καθορισµού εγγράφων προς απόρριψη (Reject List) Καθορίζει, βάσει κανονικών εκφράσεων, τους απορριπτέους τύπους αρχείων. Μέγιστος αριθµός σελίδων προς ανάσυρση (Max Page Number) Καθορίζει το µέγιστο αριθµό αρχείων που πρέπει να ανασύρει ο ερπυστής. Όταν ο ερπυστής ανασύρει αυτό το πλήθος αρχείων πρέπει να σταµατά. Αν η παράµετρος αυτή έχει την τιµή 0 τότε ο ερπυστής πρέπει να συνεχίσει τη διαδικασία διάσχισης µέχρι να ανασύρει όλες τις σελίδες που µπορεί να φτάσει. Scope: Καθορίζει το εύρος ελευθερίας του ερπυστή σχετικά µε την `αλλαγή διακοµιστών'. Οι τιµές αυτής της παραµέτρου (σε φθίνουσα ως προς την ελευθερία σειρά) είναι: Free-spanning: Ο ερπυστής µπορεί να µεταβαίνει σε URL µε οποιοδήποτε `domain' ή `host'. Domain-scope: Ο ερπυστής µπορεί να µεταβαίνει µόνο σε URLs που ανήκουν σε διακοµιστές που ανήκουν στο ίδιο seeds-domains-set. Για παράδειγµα αν τα `seeds' είναι: {http://foo1.domain.com/foo/a.htm, http://foo2.foo1.domain.com/b.htm, http://foo3.foo1.domain.com/c/d/e/f.htm} τότε το `seeds-domains-set' είναι το: foo1.domain.com. Host-scope: Ο ερπυστής µπορεί να µεταβαίνει σε URLs που ανήκουν στους διακοµιστές του `seeds-hosts-set'. Για παράδειγµα αν τα `seeds' είναι : {http://foo1.domain.com/foo/a.htm, http://foo2.foo1.domain.com/b.htm, http://foo3.foo1.domain.com/c/d/e/f.htm} τότε το`seeds-hosts-set' είναι το: {http://foo1.domain.com/, http://foo2.foo1.domain.com/, http://foo3.foo1.domain.com/} PathScope: Ο ερπυστής µπορεί να µεταβαίνει σε URLs ενός τοµέα µονοπατιών που καθορίζεται από τους `σπόρους. Φυσικά ένα διακοµιστής-σπόρος που έχει URL µε βάθος 1 (πχ www.sample.com/index.html) θα συµπεριληφθεί πλήρως από τη ρίζα του. Από την άλλη ένας διακοµιστής του οποίου ο σπόρος είναι ο www.sample.com/path/index.html θα είναι περιορισµένος στα URL κάτω από το `/path/'. 2

Αλγόριθµος ερπυσµού διακτυακών τόπων (Traversal Algorithm) Τους συνδέσµους που έχει ανασύρει ο ερπυστής τους επισκέπτεται σύµφωνα µε την πολιτική διάσχισης. Στη συγκεκριµένη εργασία θα χρειαστεί να υποστηρίξετε τουλάχιστον δύο πολιτικές/αλγορίθµους διάσχισης: BFS (Breadth First Search) και DFS (Depth First Search). Μονοπάτι καταλόγου (repository) Καθορίζει το µονοπάτι καταλόγου όπου θα γίνεται η εναπόθεση των αντιγράφων που δηµιουργεί ο ερπυστής από τους δικτυακούς τόπους που σαρώνει. Log-options Όνοµα αρχείου καταγραφής λειτουργιών: log-file (π.χ log-file = log ;) Βαθµός καταγραφής λειτουργιών: log-level (π.χ log-level = 1;).Έγκυρες τιµές είναι οι: `0, 1, 2': `0': Μόνο τα απολύτως απαραίτητα µηνύµατα τυπώνονται. `1': Λεπτοµερή µηνύµατα τυπώνονται για τις ενέργειες του ερπυστή. `2': Μηνύµατα αποσφαλµάτωσης τυπώνονται για τις ενέργειες του ερπυστή. Recrawling options Χρονικό διάστηµα (σε ώρες) µετά το οποίο θα αρχίσει ο επόµενος ερπυσµός. Η σχετική παράµετρος είναι η period (π.χ period = 72;) και η µονάδα µέτρησης είναι η ώρα. Η λειτουργία του Ερπυστή Πέραν των παραµέτρων που περιγράφηκαν προηγουµένως σχετικά µε τους επιτρεπτούς/απορριπτέους τύπους αρχείων, ο ερπυστής πρέπει να σέβεται το robots.txt 1 του εκάστοτε διακοµιστή. Τα αρχεία `robots.txt' υπάρχουν στους διακοµιστές ακριβώς για να υπαγορεύουν στους διάφορους ερπυστές που σαρώνουν το σύστηµα αρχείων τους ποια αρχεία πρέπει να αποφύγει ένας ερπυστής να κατεβάσει ακόµη και αν αυτά τα αρχεία είναι κατά τα άλλα διαθέσιµα και προσπελάσιµα µε ένα οποιοδήποτε φυλλοµετρητή (browser). Από κάθε αρχείο το οποίο αποδέχεται να κατεβάσει ο ερπυστής µας ενδιαφέρει να καταγράφουµε: Την ηµεροµηνία τροποποίησης και την ηµεροµηνία ανάσυρσης του όπως αυτές αναφέρονται στις επικεφαλίδες του Http πρωτοκόλλου. Η κύρια κλάση µε την οποία θα δηµιουργείτε http συνδέσεις είναι η java.net.url. Την κωδικοποίηση που ακολουθεί το αρχείο Τους συνδέσµους που περιέχει. Ένας έτοιµος απλός parser υπάρχει στο παράδειγµα http://java.sun.com/developer/technicalarticles/thirdparty/webcrawler/ Ο τρόπος µε τον οποίο θα καταγράφονται περιγράφεται στην επόµενη ενότητα. Bonus: Πολυνηµατική λειτουργία του ερπυστή για επιτάχυνση της όλης διαδικασίας (δηµιουργία πολλών νηµάτων για το κατέβασµα σελίδων). Έξοδος Ερπυστή: Το αρχείο ευρετήριο και τα τοπικά αντίγραφα των σελίδων. Το αποτέλεσµα της λειτουργίας του Ερπυστή θα είναι µια τοπική αποθήκη σελίδων και ένα ευρετήριο (index). Το ευρετήριο είναι ένα αρχείο µε εγγραφές του τύπου: UrlMD5checksum normalizedurl originalurl Title encoding type lastmodifieddate serverdate [1] <tab> @<normalized 1 st link retrieved from this page> <anchor text for this 1 st link> <tab> @<normalized 2 nd link retrieved from this page> <anchor text for this 2 nd link> <tab> @<normalized 3 rd link retrieved from this page> <anchor text for this 3 rd link> 1 http://en.wikipedia.org/wiki/robots.txt 3

.................................................................................... <tab> @<normalized Nth link retrieved from this page> <anchor text for this Nth link> Επεξήγηση πεδίων: UrlMD5CheckSum: [1]: Σε µία γραµµή Οι `συναρτήσεις παραγωγής µηνυµάτων ταυτοποίησης' (`message digest functions') είναι συναρτήσεις κατακερµατισµού. Κατηγοριοποιούνται ως `ασφαλείς και µονόδροµες'. Παίρνουν ως είσοδο δεδοµένα αυθαίρετου µήκους και δίνουν ως έξοδο µία χαρακτηριστική τιµή κατακερµατισµού για αυτά τα δεδοµένα. Μία από τις συναρτήσεις παραγωγής µηνυµάτων ταυτοποίησης είναι η συνάρτηση MD5. Στη Java η σχετική κλάση είναι η: java.security.messagedigest NormalizedURL: Παίρνετε την αρχική µορφή ενός URL κι έπειτα από συγκεκριµένη επεξεργασία να παράγετε την κανονικοποιηµένη µορφή του. Η µέθοδος µε την οποία ένα URL χάνει διάφορα περιττά χαρακτηριστικά του και φθάνει σε µία κανονικοποιηµένη µορφή: [http://]<path ή IP του host>/[<κανονικοποιηµένο path>] λέγεται κανονικοποίηση 2. OriginalURL: Το URL πριν την κανονικοποίηση. Title : Ο τίτλος της σελίδας. Encoding: Η κωδικοποίηση της σελίδας. Type: Ο τύπος (type) της σελίδας (html, pdf). Προσέξτε ότι σε µερικά αρχεία υπάρχουν παραπάνω από ένας τρόποι για το προσδιορισµό του τύπου του αρχείου. Μερικές σελίδες έχουν κατάληξη `.html' άλλες `.htm' - στο πεδίο type όµως πρέπει να γραφτεί `html' και στις δύο περιπτώσεις. lastmodifieddate (`last modified header field'): Η τιµή αυτού του πεδίου µπορεί να βρεθεί στο πεδίο `Last-modified' που βρίσκεται στις `επικεφαλίδες' των http-απαντήσεων (http-response) του πρωτοκόλλου http. Υποδεικνύει την ηµεροµηνία και το χρόνο στον οποίο ο διακοµιστής πιστεύει ότι τροποποιήθηκε το αρχείο στο οποίο αναφέρθηκε η αίτηση που έλαβε. serverdate Το σχετικό πεδίο στην επικεφαλίδα-απάντηση των διακοµιστών λέγεται `Date' και αναπαριστά την ηµεροµηνία και τον χρόνο στον οποίο δηµιουργήθηκε το µήνυµα-απάντηση του διακοµιστή. Για παράδειγµα: Date: Tue, 15 Nov 1994 08:12:31 GMT Λίστα αποδεκτών συνδέσµων που ανακτήθηκαν από την σελίδα: Μετά από τη γραµµή που θα περιέχει όλα τα παραπάνω πεδία πρέπει να ακολουθεί µία λίστα στοιχισµένη µε στηλογνώµονες (tabs) που αναφέρει όλα τα αποδεκτά links που ανακτήθηκαν από την εν λόγω σελίδα (ένα link ανά γραµµή µαζί µε το anchor text του). Anchor Text είναι το κείµενο που περιέχει ένας σύνδεσµος δηλαδή: <a href='http://foo.com'>αυτό είναι το Anchor Text</a> 2 http://en.wikipedia.org/wiki/url_normalization 4

Η κάθε σελίδα θα έχει και τοπικό αντίγραφο το οποίο θα µπορεί να το βρει κανείς ακολουθώντας το path του URL αρχίζοντας από το βασικό κατάλογο αποθήκευσης σελίδων. Για παράδειγµα το αντίγραφο της σελίδας index.html που ανήκει στο domain `www.ics.forth.gr' θα πρέπει να βρίσκετε στο./www.ics.forth.gr/index.html. Παράρτηµα Καλή εργασία! Ενδεικτικό αρχείο παραµετροποίησης ερπυστή # Configuration File for Web Crawler <crawler-options> # The starting points of crawler. Must be one per line ending with # `,<newline>' # to ease parsing. Starting-points = { "http://www.csd.uoc.gr/", "http://www.ics.forth.gr/", "http://el.wikipedia.gr", }; # accept only the following file patterns (regular expressions). # example: "^[a-f].*\.pdf$" will download only the pdf files beginning # with a character from a to f. accept-list = {".*\.[hh][tt][mm][ll]?$", ".*\.[pp][hh][pp]$", ".*\.[jj][ss][pp]$", ".*\.[aa][ss][pp]$", ".*\.[tt][xx][tt]$", ".*\.[pp][dd][ff]$", ".*\.[dd][oo][cc]$" }; # reject the following file patterns (regular expressions). # example: "*tmp*" will not download files containing # the string "tmp". Reject-list = { ".*\.[tt][mm][pp]\.?.{0,4}$", ^#.*,.*\?.* }; # the maximum number of pages to retrieve. If this number is reached the # crawler stops. `0' or negative means no limit. max-page-number = 1000000; # Scope-mode that will determine the host-spanning policy: # free-spanning, domain-scope, host-scope, path-scope scope = domain-scope ; # Traversal algorithm (currently supported: bfs, dfs). # The `depth within site' algorithm can be approximated # by setting the algorithm here to`dfs' and setting # `scope' to `path-scope'. traversal-algorithm = "bfs"; # the directory where the retrieved documents will be stored. repository = "./testbedcsdics"; 5

<logging> # Log-messages target. Valid values: log and screen. log-file = "log"; # valid values are [0-2]: 0 stands for quiet, 1 for verbose # and 2 for debug mode log-level = 1; <recrawling-options> # in hours period = 72; Πεδίο serverdate ευρετηρίου Κατά κανόνα οι διακοµιστές θα περιλαµβάνουν το πεδίο `Date' στις απαντήσεις τους µε εξαίρεση τις εξής περιπτώσεις: 1. Αν η απάντηση είναι των ειδικών τύπων `Continue' (100) ή `Switching protocols' (101) η απάντηση µπορεί και να µην περιέχει το πεδίο `Date' κατά προτίµηση του διακοµιστή. 2. Αν η απάντηση καταδεικνύει κάποιο λάθος όπως `Internal Server Error' (500) ή `Service Unavailable' (503) και είναι άβολο ή αδύνατο για τον διακοµιστή να παράγει το πεδίο `Date'. 3. Αν ο διακοµιστής δεν έχει ένα ρολόι που να µπορεί να παράγει µία αρκετά ακριβή τιµή για το πεδίο `Date' τότε η απάντηση του δε θα περιέχει καν το πεδίο. Θεωρητικά το πεδίο `Date' φέρει τη χρονική στιγµή ακριβώς την δηµιουργία του µηνύµατοςαπάντηση από τον διακοµιστή και το χρειαζόµαστε για λόγους ελέγχου κατά την διαδικασία του recrawling. 6