Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 12. Σταχυολόγηση Ιστού Ανάκτηση Πληροφοριών Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων
Βασική Λειτουργία Σταχυολόγησης (Crawling) Ξεκινούμε με ένα σύνολο γνωστών seed (φύτρες) URLs Κατεβάζουμε (fetch) και αναλύουμε το περιεχόμενό τους (parse) Εξάγουμε τα URLs στα οποία δείχνουν Τοποθετούμε τα εξαγόμενα URLs σε μια ουρά Κατεβάζουμε κάθε URL που βρίσκεται στην ουρά και επαναλαμβάνουμε Κεφάλαιο 20.2 May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 2
Εικόνα Σταχυολόγησης Κεφάλαιο 20.2 URLs crawled and parsed Unseen Web Seed pages URLs frontier Web May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 3
Επιπλοκές Κεφάλαιο 20.1.1 Η σταχυολόγηση Ιστού (Web crawling) δεν είναι εφικτή με μία μηχανή Όλα τα παραπάνω βήματα πρέπει να γίνουν με κατανεμημένο τρόπο Κακόβουλες ιστοσελίδες Spam pages Spider traps συμπεριλαμβανομένων δυναμικά δημιουργημένες Ακόμη και μη-κακόβουλες σελίδες εμφανίζουν προκλήσεις Η καθυστέρηση (latency) και το εύρος ζώνης (bandwidth) σε απομακρυσμένους servers ποικίλουν Κανόνες των Webmasters Πόσο βαθιά πρέπει να ψάξεις στην ιεραρχία URL ενός site? Site mirrors και διπλότυπες σελίδες (duplicate pages) Ευγένεια (Politeness) να μην «χτυπούν» ένα server πολύ συχνά May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 4
Τι Πρέπει να Κάνει οποιοσδήποτε Σταχυολογητής Να είναι Ευγενικός: να σέβεται τόσο ρητά όσο και υπονοούμενα θέματα που αφορούν την ευγένεια Σταχυολόγηση μόνο των σελίδων που επιτρέπεται Κεφάλαιο 20.1.1 Σεβασμός του robots.txt (περισσότερα σε λίγο) Να είναι Εύρωστος: να μην επηρεάζεται από παγίδες (spider traps) και άλλη κακόβουλη συμπεριφορά από web servers May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 5
Τι Θα Έπρεπε να Κάνει Κεφάλαιο 20.1.1 οποιοσδήποτε Σταχυολογητής Να μπορεί να λειτουργεί κατανεμημένα: να έχει σχεδιαστεί ώστε να τρέχει σε πολλαπλές κατανεμημένες μηχανές Να είναι κλιμακώσιμος: να έχει σχεδιαστεί ώστε να αυξάνεται ο ρυθμός σταχυολόγησης (crawl rate) όταν προστίθενται περισσότερες μηχανές Απόδοση: να επιτρέπει/υποστηρίζει την πλήρη χρήση των διαθέσιμων επεξεργαστικών και δικτυακών πόρων May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 6
Τι Θα Έπρεπε να Κάνει Κεφάλαιο 20.1.1 οποιοσδήποτε Σταχυολογητής Να συλλέγει τις σελίδες υψηλότερης ποιότητας πρώτες Να λειτουργεί διαρκώς: να φέρνει νέα αντίγραφα μιας σελίδας που είχει φέρει πιο πριν Επεκτασιμότητα: να προσαρμόζεται σε νέες μορφοποιήσεις, πρωτόκολλα May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 7
Κεφάλαιο 20.1.1 Ενημερωμένη Εικόνα Σταχυολόγησης URLs crawled and parsed Unseen Web Seed Pages URL frontier Crawling thread May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 8
Μέτωπο URL (URL frontier) Κεφάλαιο 20.2 Μπορεί να περιέχει πολλαπλές σελίδες από τον ίδιο host Πρέπει να αποφεύγεται το να τις φέρνει όλες ταυτόχρονα Πρέπει να προσπαθεί να έχουν δουλειά όλα τα crawling threads May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 9
Ρητή και Υπονοούμενη Ευγένεια Κεφάλαιο 20.2 Ρητή ευγένεια (Explicit politeness): οδηγίες από τους webmasters ως προς τα τμήματα του ιστότοπου που επιτρέπεται να σταχυολογηθούν robots.txt Υπονοούμενη ευγένεια (Implicit politeness): ακόμη και χωρίς κάποιες οδηγίες, αποφυγή πάρα πολλών αιτήσεων προς τον ίδιο ιστότοπο May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 10
Robots.txt Παράδειγμα Κεφάλαιο 20.2.1 Κανένα robot δεν επιτρέπεται να επισκεφθεί URL που ξεκινά με "/yoursite/temp/", εκτός από το robot που ονομάζεται searchengine": User-agent: * Disallow: /yoursite/temp/ User-agent: searchengine Disallow: May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 11
Robots.txt Κεφάλαιο 20.2.1 Πρωτόκολλο που περιορίζει την πρόσβαση σε ένα ιστότοπο για ρομπότ (spiders/ robots ), από το 1994 www.robotstxt.org/wc/norobots.html Ο ιστότοπος ανακοινώνει το τι (δεν) επιτρέπει να σταχυολογηθεί Για ένα server, δημιουργία αρχείου /robots.txt Αυτό το αρχείο καθορίζει περιορισμούς πρόσβασης May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 12
Βήματα Επεξεργασίας στη Σταχυολόγηση Κεφάλαιο 20.2.1 Επιλογή ενός URL από το μέτωπο Ποιο URL; Προσκομίζεται η ιστοσελίδα του URL Ανάλυση περιεχεμένου της σελίδας του URL Εξαγωγή υπερσυνδέσμων προς άλλες σελίδες (URLs) Έλεγχος εάν το περιεχόμενο URL το έχουμε ήδη Εάν όχι, προστίθεται στα ευρετήρια Για κάθε εξαχθέν URL Π.χ. Μόνο domain.edu, σέβεται το robots.txt, κτλ. Επιβεβαίωσε ότι περνάει ελέγχους φίλτρου URL Έλεγξε εάν βρίσκεται ήδη στο μέτωπο (απαλοιφή διπλότυπων URL) May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 13
Κεφάλαιο 20.2.1 Βασική Αρχιτεκτονική Σταχυολόγησης DNS Doc FP s robots filters URL set WWW Parse Fetch Content seen? URL filter Dup URL elim URL Frontier May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 14
DNS (Domain Name Server) Κεφάλαιο 20.2.2 Μια υπηρεσία αντιστοίχισης (lookup) στο internet οθέντος ενός URL, ανέκτησε την IP διεύθυνσή του Η υπηρεσία παρέχεται από ένα κατανεμημένο σύνολο servers άρα, η καθυστέρηση (lookup latencies) μπορεί να είναι υψηλή (ακόμη και δευτερόλεπτα) Συνήθεις υλοποιήσεις (OS implementations) της αντιστοίχισης DNS είναι blocking: μόνο μία αίτηση τη φορά Λύσεις DNS caching Batch DNS resolver συλλέγει αιτήσεις και τις αποστέλει μαζί May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 15
Ανάλυση: Κανονικοποίηση URL Κεφάλαιο 20.2.1 Όταν ένα έγγραφο που έχει προσκομισθεί αναλύεται, ορισμένα από τα εξαγόμενα links είναι σχετικά (relative) URLs Π.χ. http://en.wikipedia.org/wiki/main_page έχει ένα σχετικό link προς /wiki/wikipedia:general_disclaimer που είναι το ίδιο με το απόλυτο URL http://en.wikipedia.org/wiki/wikipedia:general_disclaimer Κατά τη διάρκεια της ανάλυσης (parsing), πρέπει να κανονικοποιηθούν (expand) τέτοια σχετικά URLs May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 16
Εντοπισμένο Περιεχόμενο (Content seen); Η ύπαρξη διπλότυπων είναι πολύ διαδεδομένη στον Παγκόσμιο Ιστό Κεφάλαιο 20.2.1 Εάν η ιστοσελίδα που μόλις προσκομίσθηκε, υπάρχει ήδη στο ευρετήριο, δεν την επεξεργαζόμαστε άλλο Ο έλεγχος ύπαρξης γίνεται με χρήση αποτυπωμάτων (document fingerprints) ή shingles (βλ. προηγούμενο μάθημα) May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 17
Φίλτρα και robots.txt Κεφάλαιο 20.2.1 Φίλτρα εκφράσεις (regular expressions) που καθορίζουν ποια URLs να σταχυολογηθούν ή όχι Αφού το αρχείο robots.txt προσκομισθεί από έναν ιστότοπο, δε χρειάζεται να το προσκομίζουμε συνεχώς Γιατί έτσι καταναλώνουμε εύρος ζώνης (bandwidth), και στέλνουμε πολλές αιτήσεις στο web server Προσωρινή αποθήκευση (Cache) αρχείων robots.txt May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 18
Απαλοιφή Διπλότυπων URL Κεφάλαιο 20.2.1 Για μία μη-συνεχή σταχυολόγηση (oneshot crawl), έλεγχος του αν ένα URL που έχει εξαχθεί και φιλτραριστεί έχει ήδη τοποθετηθεί στο μέτωπο Για συνεχή σταχυολόγηση δείτε τις λεπτομέρειες της υλοποίησης μετώπου (frontier implementation) May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 19
Κατανέμοντας το Σταχυολογητή Κεφάλαιο 20.2.1 Εκτέλεση πολλαπλών crawl threads, σε διαφορετικές διεργασίες πιθανά σε διαφορετικόύς κόμβους Γεωγραφικά κατανεμημένοι κόμβοι ιαμέριση (Partition) των hosts που θα σταχυολογηθούν σε κόμβους Η διαμέριση γίνεται με κατακερματισμό Πώς επικοινωνούν αυτοί οι κόμβοι και μοιράζονται URLs; May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 20
Επικοινωνία Μεταξύ Κόμβων Κεφάλαιο 20.2.1 Η έξοδος του URL filter σε κάθε κόμβο αποστέλλεται στο Dup URL Eliminator του κατάλληλου κόμβου DNS Doc FP s robots filters To other nodes URL set WWW Fetch Parse Content seen? URL filter Host splitter Dup URL elim URL Frontier From other nodes May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 21
Κεφάλαιο 20.2.3 Μέτωπο URL: Δύο Βασικοί Παράγοντες Ευγένεια (Politeness): αποφυγή επαναλαμβανόμενων αιτημάτων προσκόμισης προς ένα web server σε μικρό χρονικό διάστημα Φρεσκάδα (Freshness): συχνότερη σταχυολόγηση ορισμένων σελίδων Π.χ., σελίδων (όπως News sites) των οποίων το περιεχόμενο αλλάζει συχνά Αυτοί οι στόχοι μπορεί να είναι αντικρουόμενοι. (Π.χ., μια απλή ουρά προτεραιότητας αποτυγχάνει πολλά links από μία σελίδα δείχνουν στον ίδιο ιστότοπο, δημιουργώντας πάρα πολλές αιτήσεις πρόσβασης στον ιστότοπο) May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 22
Ευγένεια Προκλήσεις Κεφάλαιο 20.2.3 Ακόμη κι αν περιορίσουμε μόνο ένα thread να προσκομίζει από έναν ιστότοπο, αυτό μπορεί να κάνει επαναλαμβανόμενα αιτήματα Κοινή εμπειρική μέθοδος: Παρεμβάλουμε ένα κενό μεταξύ διαδοχικών αιτημάτων προσκόμισης, το οποίο είναι μία τάξη μεγέθους μεγαλύτερο από το χρόνο που απαιτήθηκε από την πιο πρόσφατη αίτηση προς τον ίδιο υπολογιστή (host) May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 23
Μέτωπο URL: Η Σχεδίαση του Mercator URLs Κεφάλαιο 20.2.3 Prioritizer K front queues Biased front queue selector Back queue router B back queues Single host on each Back queue selector Crawl thread requesting URL May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 24
Mercator Μέτωπο URL Κεφάλαιο 20.2.3 Τα URLs έρχονται από την κορυφή προς το μέτωπο Οι εμπρόσθιες ουρές (Front queues) καθορίζουν την προτεραιότητα Οι οπίσθιες ουρές (Back queues) επιβάλλουν την ευγένεια Κάθε ουρά (queue) είναι ουρά FIFO May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 25
Front queues Κεφάλαιο 20.2.3 Prioritizer 1 K Biased front queue selector Back queue router May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 26
Front queues Κεφάλαιο 20.2.3 Ο καθοριστής προτεραιοτήτων (Prioritizer) αναθέτει σε ένα URL μια προτεραιότητα, που είναι ένας ακέραιος μεταξύ 1 και K Το URL προσαρτάται στην αντίστοιχη εμπρόσθια ουρά Εμπειρικές μέθοδοι καθορισμού προτεραιότητας Με βάση τη συχνότητα αλλαγών (Refresh rate) της ιστοσελίδας στις προηγούμενες σταχυολογήσεις Application-specific (π.χ. crawl news sites more often ) May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 27
Μεροληπτικός Επιλογέας Εμπρόσθιας Ουράς (Biased front queue selector) Όταν μία back queue ζητά ένα URL (σε μια σειρά βημάτων που θα εξετάσουμε): επιλέγει μια front queue από την οποία παίρνει ένα URL Αυτή η επιλογή μπορεί να είναι με τη σειρά (round robin) με κάποια μεροληψία προς τις ουρές υψηλότερης προτεραιότητας ή με κάποιο πιο εκλεπτυσμένο τρόπο Μπορεί να είναι μια τυχαία διαδικασία Κεφάλαιο 20.2.3 May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 28
Back queues Κεφάλαιο 20.2.3 Biased front queue selector Back queue router 1 B Back queue selector Heap May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 29
Αμετάβλητα Χαρακτηριστικά για κάθε Back queue Κάθε back queue δε μένει κενή κατά την εξέλιξη της σταχυολόγησης Κάθε back queue περιέχει URLs από έναν μόνο υπολογιστή υπηρεσίας (host) Αντιστοίχιση υπολογιστών υπηρεσίας και ουρών Host name 3 Back queue 1 B Κεφάλαιο 20.2.3 May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 30
Back queue heap Κεφάλαιο 20.2.3 Μία καταχώρηση για κάθε back queue Η καταχώρηση είναι ο συντομότερος χρόνος t e μετά το πέρας του οποίου επιτρέπεται να επικοινωνήσουμε με τον υπολογιστή υπηρεσίας που αντιστοιχεί στην ουρά Ο συντομότερος χρόνος καθορίζεται από Το πότε έγινε η πιο πρόσφατη πρόσβαση στον υπολογιστή Οποιαδήποτε εμπειρική μέθοδο επιλέξουμε May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 31
Επεξεργασία Back queue Κεφάλαιο 20.2.3 Ένα crawler thread που ζητά ένα URL για σταχυολόγηση: Εξάγει από την κορυφή της heap Προσκομίζει το URL στην κεφαλή της αντίστοιχης back queue q (αντιστοίχιση με βάση τον πίνακα) Ελέγχει εάν η ουρά q είναι τώρα κενή εάν είναι, ανακτά ένα v από τις front queues Εάν υπάρχει ήδη μια back queue για τον υπολογιστή της v, προστίθεται η v στην q και ανακτάται άλλο URL από τις front queues, και επανέλαβε Αλλιώς προστίθεται το v στην q Όταν η q δεν είναι άδεια, δημιουργεί μια καταχώρηση στη heap για αυτή May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 32
Πλήθος των back queues B Κεφάλαιο 20.2.3 Καθορίζει την έκταση στην οποία μπορούμε να διατηρούμε όλα τα threads απασχολημένα, με σεβασμό στην ευγένεια Εμπειρικός κανόνας από τη σχεδίαση του Mercator: Τρεις φορές περισσότερες back queues από crawler threads May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 33
Πηγές Αναφοράς Εισαγωγή στην Ανάκτηση Πληροφοριών, κεφάλαιο 20 Mercator: A scalable, extensible web crawler (Heydon et al. 1999) Robot exclusion standard May 30, 2016 Ανάκτηση Πληροφοριών,6ο Εξάμηνο 34