Ανάπτυξη μηχανισμού διάσχισης του διαδικτύου (Web Crawler) με βάση το προβαλλόμενο περιεχόμενο στους χρήστες

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Ανάπτυξη μηχανισμού διάσχισης του διαδικτύου (Web Crawler) με βάση το προβαλλόμενο περιεχόμενο στους χρήστες"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Διαπανεπιστημιακό Διατμηματικό Πρόγραμμα Μεταπτυχιακών Σπουδών (Δ.Δ.Π.Μ.Σ) Προηγμένα Συστήματα Υπολογιστών και Επικοινωνιών Κατεύθυνση: Δικτυακή Υπολογιστική- Ηλεκτρονικό Εμπόριο ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη μηχανισμού διάσχισης του διαδικτύου (Web Crawler) με βάση το προβαλλόμενο Μεταπτυχιακή Διατριβή του Ναζέρ Νιντάλ Α.Ε.Μ. 235 υπό την επίβλεψη του λέκτορα κ. Ανδρέα Λ. Συμεωνίδη Θεσσαλονίκη, Μάρτιος 2012

2 2

3 Ευχαριστίες Μέσω αυτού του τμήματος επιθυμώ να ευχαριστήσω όλους όσους συμμετείχαν ενεργά ή όχι στην ολοκλήρωση αυτής της διπλωματικής Τον καθηγητή μου κ. Ανδρέα Συμεωνίδη, για την εμπιστοσύνη που μου έδειξε αναθέτοντάς μου αυτό το θέμα, αλλά και για την επιστημονική και ηθική στήριξη που μου παρείχε καθ όλη τη διάρκεια της χρονιάς. Οι παρεμβάσεις, συμβουλές του ήταν καθ όλα στοχευόμενες και χρήσιμες. Στον κ. Αλέξανδρο Μπάτζιο ο οποίος μας άνοιξε το δρόμο για το Headless Browsing. Στους γονείς μου, Μαρία και Άυμαν, γιατί είναι πάντα δίπλα μου και μου δίνουν δύναμη να επιτύχω τους στόχους μου. Σε όλους τους φίλους που μέσω της στήριξης τους μου έδωσαν δύναμη να συνεχίσω ακάθεκτος και να μην οπισθοχωρήσω σε όποια προβλήματα παρουσιάστηκαν. Στους συναδέλφους μου στη δουλειά που έδειξαν κατανόηση κατά τη διάρκεια εκπόνησης αυτής της διπλωματικής. 3

4 4

5 Ανάπτυξη μηχανισμού διάσχισης με βάση το προβαλλόμενο περιεχόμενο Περίληψη Το διαδίκτυο για τους χρήστες είναι στενά συνυφασμένο με τον όρο αναζήτηση. Η διαδικασία της αναζήτησης συνδέεται άρρηκτα με τις μηχανές αναζήτησης. Η κατασκευή και η συντήρηση αυτών όπως γνωρίζουμε στελεχώνεται από επιστημονικές ομάδες εφαρμόζοντας μοντέλα κοινωνικά, μαθηματικά, σημασιολογικά σε συνδυασμό με τις τεχνολογίες της πληροφορικής. Η διενέργεια ενός ερωτήματος σε μια μηχανή θα έχει ως αποτέλεσμα την εμφάνιση των κατάλληλων αποτελεσμάτων που πληρούν τα κριτήρια αναζήτησης που θέτουμε. Με την πάροδο του χρόνου και την αύξηση του ανταγωνισμού στο διαδικτυακό μάρκετινγκ αναπτύχθηκαν τεχνικές Search Engine Optimizationώστε να μπορέσουν ορισμένες ιστοσελίδες να αποκτήσουν ανταγωνιστικό πλεονέκτημα έναντι άλλων ώστε να μπορούν να εμφανίζονται σε υψηλότερη θέση κατάταξης για ορισμένα κριτήρια. Για να μπορέσει μια μηχανή αναζήτησης να γνωρίζει το περιεχόμενο μιας ιστοσελίδας χρησιμοποιεί τους crawlersοι οποίοι σαρώνουν μαζικά το διαδίκτυο. Επιπλέον, η εφαρμογή δυναμικών τεχνολογιών στο διαδίκτυο όπως η AJAX με σκοπό καλύτερη παρουσίαση του προβαλλόμενου περιεχομένου οδήγησε στην δημιουργία ενός χάσματος μεταξύ στο περιεχόμενο το οποίο βλέπει ένας χρήστης και σε αυτό που μια μηχανή αναζήτησης έχει ευρετηριοποιήσει για έναν ιστότοπο. Επιπλέον πολλές φορές είναι δυνατή η περιήγηση σε έναν ιστότοπο μετά από μια διαδικασία αναζήτησης ο οποίος δεν έχει νοηματική συσχέτιση με τα κριτήρια που θέσαμε στη μηχανή στο ερώτημα που κατασκευάσαμε. Οι ιστοσελίδες αυτές κυρίως είναι διαφημιστικού περιεχομένου και εμφανίζονται για να επέλθει πλασματική ανύψωση των κριτηρίων επισκεψιμότητας ενός ιστότοπου. Στο σημείο αυτό μπορούμε να πούμε ότι καθίσταται ωφέλιμη η δημιουργία ενός μηχανισμού ο οποίος μπορεί να εντοπίσει επακριβώς το προβαλλόμενο περιεχόμενο ενός ιστότοπου σε ένα χρήστη. Επαγωγικά η εντατική χρήση ενός τέτοιου μηχανισμού μπορεί να συμβάλει στην αποτελεσματικότερη και αποδοτικότερη αναζήτηση στο διαδίκτυο αν συνυπολογίσουμε το γεγονός ότι πλέον έχει δημιουργηθεί ένας ανθρωποκεντρικός μηχανισμός crawling του διαδικτύου. Ναζέρ Νιντάλ ΔΔΠΜΣ-ΤΗΜΜΥ Μάρτιος

6 A Web Crawling mechanism based on user projected content Abstract From a user perspective, the Internet is closely related to web searching, which is, in turn, inextricably linked to search engines. Research in design and maintenance of search engines is cutting edge, where social, mathematical and semantic models are coupled with software engineering primitives for the best possible outcome. In general, posting a query to a search engine should produce a result set that fulfills the search criteria as best as possible. Otherwise the search engine is considered ineffective, and its popularity starts to decrease. In order for a search engine to identify the content of a web site, it employs crawlers which massively scan throughout the internet. Optimal crawling and indexing follow specific methodologies that decide for the ranking of a web page based on its visitability, its content and the inbound/outgoing links from/to other web sites. Search Engine Optimization (SEO) techniques try to take advantage of these crawling process mechanisms for the benefit of specific web sites. Given that a web page ranks higher, it gains a competitive advantage over the other (similar) web pages. Additionally, since page visitability plays a substantial role in ranking, better presentation of the projected content is essential. This can be achieved by the use of dynamic technologies (e.g. AJAX), which also allow the diversification of the content a user sees from the content that a search engine indexes. Another way of ranking higher is to deceive a search engine and link a web page to concepts frequently accessed by the users. This technique, commonly used in advertisement-rich websites, increases visitability and consequently ranking. With the context of this thesis, a web crawling mechanism has been developed, which discovers user displayed content rather than search engine displayed content. Systematic use of this crawler can lead to more effective and efficient web searches and can reduce the inconsistency between the search engine queries and real content. It is, thus, acceptable to say that such a mechanism leads to an anthropocentric crawling of the web. Nazer Nidal nidal.nazer@gmail.com March

7 7

8 Περιεχόμενα Ευχαριστίες... 3 Περίληψη... 5 Abstract Εισαγωγή Σκοπός της Διπλωματικής Στόχοι της Διπλωματικής Δομή της διπλωματικής Βελτιστοποίηση σε σχέση με τις Μηχανές Αναζήτησης (SEO) Ποιοί ιστότοποι χρειάζονται SEO; Η χρησιμότητα των Robots Οι πιο δημοφιλείς μηχανές αναζήτησης Ποιοί παράγοντες επηρεάζουν την κατάταξη Visible On Page factors Invisible On-page factors Time-based factors Η χρησιμότητα του Headless Browsing HtmlUnit JXBroswer Crowbar Simile PhantomJS Συγκεντρωτικά χαρακτηριστικά των Headless Browsers Επιλογή μηχανής για φόρτωση(rendering) ιστοσελίδων Δημιουργία περιπτώσεων ελέγχου Συμπεριφορά JXBroswer Συμπεριφορά PhantomJS Συμπεριφορά Crowbar Επιλογή Τεχνολογίας Αποτελέσματα πειραμάτων αξιολόγησης Headless Browsers Διάσχιση διαδικτύου (Web Crawling) Εισαγωγή στο Web Crawling Κατασκευάζοντας μία crawling υποδομή Frontier (λίστα μη-επισκεπτόμενων URLs)

9 4.1.3 Ιστορικό και η αποθήκη σελίδων Φόρτωση σελίδων Parsing HTML tag tree Πολυνηματικοί Crawlers Ο WebSphinx crawler Crawler Workbench WebSphinx class library Εξερευνώντας τον WebSphinx Polite Crawling Η έννοια του Politeness Crawler identification(αναγνώριση) Το Robot Exclusion πρωτόκολλο Crawling χρήσιμου περιεχομένου Η περίπτωση των subdomains Δημιουργία μίας λίστα απαγόρευσης Προτεινόμενη μεθοδολογία Βασικές Πληροφορίες που χρειάζονται για μια σελίδα Η σχεδίαση της βάσης Δεδομένων Επεκτάσεις του μηχανισμού του WebSphinx - WebSphinxCrawler Η κατασκευή του extended WebSphinx με όνομα JxSPhinx Διαφορές στην υλοποίηση του WebSphinx Crawler σε σχέση με τον JxSPhinx Crawler Εξαγωγή συνδέσμων με τη χρήση του JXBroswer Σενάρια εκτέλεσης Πολυπλοκότητα του παραγόμενου λογισμικού Προβλήματα που προέκυψαν Πειράματα και τεκμηρίωση Κατασκευή Πειραμάτων Αποτελέσματα πειραμάτων Αξιολόγηση Αποτελεσμάτων ενδεικτικών πειραμάτων Συμπεράσματα-Μελλοντική εργασία Σύνοψη - Συμπεράσματα

10 7.2 Μελλοντική εργασία Παράρτημα Polite Crawling για τον WebSphinx Λεπτομερής ανάλυση της Βάσης Δεδομένων Βιβλιογραφία

11 Λίστα Πινάκων Πίνακας 1. Συγκεντρωτικά χαρακτηριστικά των Headless Browser Πίνακας 2 Χρόνοι εκτέλεσης των JXBroswer και PhantomJS Πίνακας 3 Σύγκριση JXBroswer και PhantomJS Πίνακας 4 Σύγκριση JXBroswer και PhantomJS Πίνακας 5 Χρόνοι εκτέλεσης των WebSphinx και JxSPhinx Πίνακας 6 Αποτελέσματα πειραμάτων για το sourceforge.net Πίνακας 7 Αποτελέσματα πειραμάτων για το sourceforge.net Πίνακας 8 Αποτελέσματα πειραμάτων για το sourceforge.net Πίνακας 9 Αποτελέσματα πειραμάτων για το uefa.com Πίνακας 10 Αποτελέσματα πειραμάτων για το uefa.com Πίνακας 11 Αποτελέσματα πειραμάτων για το uefa.com Πίνακας 12 Αποτελέσματα πειραμάτων για το skroutz.gr Πίνακας 13 Αποτελέσματα πειραμάτων για το skroutz.gr Πίνακας 14 Αποτελέσματα πειραμάτων για το skroutz.gr Πίνακας 15 Αποτελέσματα πειραμάτων για sport-fm.gr Πίνακας 16 Αποτελέσματα πειραμάτων για sport-fm.gr Πίνακας 17 Αποτελέσματα πειραμάτων για sport-fm.gr Πίνακας 18 Αποτελέσματα πειραμάτων για nooz.gr... Error! Bookmark not defined. Πίνακας 19 Αποτελέσματα πειραμάτων για nooz.gr Πίνακας 20 Αποτελέσματα πειραμάτων για nooz.gr Πίνακας 21 Κώδικας Σχήματος Βάσης Δεδομένων εφαρμογής

12 Λίστα Εικόνων Εικόνα 1. Συγκεντρωτικά χαρακτηριστικά των δημοφιλέστερων μηχανών αναζήτησης Εικόνα 2. Παράδειγμα μεταδεδομένου description Εικόνα 3. Παράδειγμα μεταδεδομένου λέξεις κλειδιά Εικόνα 4. Παράδειγμα alt title ιδιότητας Εικόνα 5. Παράδειγμα alt title ιδιότητας Εικόνα 6. Διάκριση block level elements Εικόνα 7. Παράδειγμα ανακατεύθυνσης συνδέσμου Εικόνα 8. Παράδειγμα προβολής περιεχομένου ιστοσελίδας από iframe Εικόνα 9. Παράδειγμα εμφωλευμένων iframes Εικόνα 10. Παράδειγμα εμφωλευμένων iframes Εικόνα 11. ScreenShot από την εκτέλεση του JXBroswer Εικόνα 12. Σχηματική αναπαράσταση βρόγχου εκτέλεσης Crawler Εικόνα 13. Σχηματική αναπαράσταση του Html δέντρου Εικόνα 14. Αναπαράσταση εκτέλεσης βρόγχου crawler με πολλά νήματα Εικόνα 15. Εξαγωγή γράφου επίσκεψης από τον WebSphinx Εικόνα 16. Αποθήκευση σελίδων μέσω του WebSphinx Εικόνα 17. Συνένωση σελίδων μέσω του WebPShinx Εικόνα 18. Εξαγωγή εικόνων μέσω του WebSphinx Εικόνα 19. Επεκτάσεις αρχείων που πρέπει να ελέγχονται από τον crawler Εικόνα 20 Σχηματική αναπαράσταση του JxSPhinx Εικόνα 21. Διαφορά περιεχομένου των WebSphinx και JxSPhinx Εικόνα 22. Οι πίνακες της βάσης δεδομένων Εικόνα 23. Δημιουργία καινούριων κλάσεων και ενσωμάτωσή τους στο υπάρχον σύστημα 64 Εικόνα 24. Η μέθοδος visit των WebSphinx και JxSPhinx Εικόνα 25. Οι νέες κλάσεις του JxSPhinx Εικόνα 26. ScreenShot από την διαδικασία Rendering μιας σελίδας Εικόνα 27. Σενάριο Εκτέλεσης (Ανακατεύθυνση Συνδέσμου) Εικόνα 28. Σενάριο Εκτέλεσης (Ανακατεύθυνση Συνδέσμου) Εικόνα 29. Σενάριο Εκτέλεσης (Ανακατεύθυνση Συνδέσμου) Εικόνα 30. Σενάριο Εκτέλεσης (Ανακατεύθυνση Συνδέσμου) Εικόνα 31. Σενάριο Εκτέλεσης(Iframe προβάλει περιεχόμενο ιστοσελίδας) Εικόνα 32. Σενάριο Εκτέλεσης(Iframe προβάλει περιεχόμενο ιστοσελίδας) Εικόνα 33. Σενάριο Εκτέλεσης(Iframe προβάλει περιεχόμενο ιστοσελίδας) Εικόνα 34. Σενάριο Εκτέλεσης(Iframe προβάλει περιεχόμενο ιστοσελίδας) Εικόνα 35. Σενάριο Εκτέλεσης(Εμφωλευμένα iframes προβάλλουν περιεχόμενα σελίδας). 72 Εικόνα 36. Σενάριο Εκτέλεσης(Εμφωλευμένα iframes προβάλλουν περιεχόμενα σελίδας). 72 Εικόνα 37. Σενάριο Εκτέλεσης(Εμφωλευμένα iframes προβάλλουν περιεχόμενα σελίδας). 72 Εικόνα 38. Σενάριο Εκτέλεσης(Εμφωλευμένα iframes προβάλλουν περιεχόμενα σελίδας). 73 Εικόνα 39. Αρχιτεκτονική Polite Crawling Εικόνα 40. Ο πίνακας JxSPhinx_page

13 Εικόνα 41. O πίνακας JxSPhinx_page_links Εικόνα 42. Ο πίνακας JxSPhinx_tags Εικόνα 43. Ο πίνακας WebSphinx_page Εικόνα 44. Ο πίνακας WebSphinx_page_links Εικόνα 45. Ο πίνακας WebSphinx_tags

14 Λίστα Διαγραμμάτων Διάγραμμα 1 Χρόνοι Εκτέλεσης Rendering ιστοσελίδων για τον JXBroswer και PhantomJS. 41 Διάγραμμα 2 Πολυπλοκότητα των WebSphinx και JxSPhinx Διάγραμμα 3 Αριθμός συνδέσμων των WebSphinx και JxSPhinx για το συνάρτηση των επισκεπτόμενων σελίδων Διάγραμμα 4 Ομοιότητα του συνόλου συνδέσμων για τον συνάρτηση των επισκεπτόμενων σελίδων Διάγραμμα 5 Διαφορά του αριθμού συνδέσμων των δυο crawler συνάρτηση των επισκεπτόμενων σελίδων για το sourceforge.net Διάγραμμα 6 Ποσοτικά χαρακτηριστικά μεταδεδομένων συνάρτηση των επισκεπτόμενων σελίδων για το 83 Διάγραμμα 7 Αριθμός ανόμοιων συνδέσμων των συνάρτηση των επισκεπτόμενων σελίδων για το 83 Διάγραμμα 8 Αριθμός συνδέσμων των WebSphinx και JxSPhinx για το συνάρτηση των επισκεπτόμενων σελίδων Διάγραμμα 9 Ομοιότητα του συνόλου συνδέσμων για τον συνάρτηση των επισκεπτόμενων σελίδων Διάγραμμα 10 Διαφορά του αριθμού συνδέσμων των δυο crawler συνάρτηση των επισκεπτόμενων σελίδων για το 87 Διάγραμμα 11 Αριθμός σελίδων που έχουν Javascript και το μεταδεδομένο Robot συνάρτηση των επισκεπτόμενων σελίδων για το 87 Διάγραμμα 12 Αριθμός συνδέσμων των WebSphinx και JxSPhinx για το 90 Διάγραμμα 13 Ομοιότητα του συνόλου συνδέσμων για τον συνάρτηση των επισκεπτόμενων σελίδων Διάγραμμα 14 Διαφορά του αριθμού συνδέσμων των δυο crawler συνάρτηση των επισκεπτόμενων σελίδων για το 91 Διάγραμμα 15 Αριθμός σελίδων που διαθέτουν javascript για το συνάρτηση των επισκεπτόμενων σελίδων Διάγραμμα 16 Αριθμός σελίδων που διαθέτουν το μεταδεδομένο keywords για το συνάρτηση των επισκεπτόμενων σελίδων Διάγραμμα 17 Αριθμός ανόμοιων συνδέσμων των συνάρτηση των επισκεπτόμενων σελίδων για το 92 Διάγραμμα 18 Αριθμός συνδέσμων των WebSphinx και JxSPhinx για το 95 Διάγραμμα 19 Ομοιότητα του συνόλου συνδέσμων για τον συνάρτηση των επισκεπτόμενων σελίδων Διάγραμμα 20 Διαφορά του αριθμού συνδέσμων των δυο crawler συνάρτηση των επισκεπτόμενων σελίδων για το 96 Διάγραμμα 21 Ποσοτικά χαρακτηριστικά μεταδεδομένων συνάρτηση των επισκεπτόμενων σελίδων για το 96 Διάγραμμα 22 Αριθμός συνδέσμων των WebSphinx και JxSPhinx για το

15 Διάγραμμα 23 Ομοιότητα του συνόλου συνδέσμων για τον συνάρτηση των επισκεπτόμενων σελίδων Διάγραμμα 24 Διαφορά του αριθμού συνδέσμων των δυο crawler συνάρτηση των επισκεπτόμενων σελίδων για το 99 Διάγραμμα 25 Αριθμός ανόμοιων συνδέσμων των συνάρτηση των επισκεπτόμενων σελίδων για το 99 Διάγραμμα 26 Αριθμός των σελίδων που κάνουν χρήση Javascript συνάρτηση των επισκεπτόμενων σελίδων για το

16 Πίνακας Λεξιλογίου Headless Browser Crawler Spider Site Domain name Spamming Anchor text Link Browser Web Scraping Server Dataset Render Nested inline frames Preferential Heuristic Frontier Repository Parsing Tag tree Subdomain Worm On page factors tag Φυλλομετρητής χωρίς διεπαφή χρήστη Μηχανισμός διάσχυσης Μηχανισμός ανίχνευσης του διαδικτύου Ιστότοπος Όνομα κυριότητας Μαζική αποστολή πληροφοριών από λογισμικό Ορατό κείμενο υπερσυνδέσμου Σύνδεσμος Φυλλομετρητής Εξαγωγή περιεχομένου από ιστότοπο Εξυπηρετητής Σύνολο δεδομένων Φόρτωση περιεχομένου ιστοσελίδας Εμφωλευμένα πλαίσια στην html Επιλεκτικός Ευρετικός Λίστα επισκεπτόμενων συνδέσμων Αποθήκη Ανάλυση Δέντρο με τις ετικέτες της html Υποπεριοχή ενός subdomain Νήμα Ορατοί παράγοντες ιστοσελίδων Ετικέτα 16

17 Πίνακας Συντομογραφιών SEO CTR API XML DOM JSON JDOM IDE JDBC AJAX FIFO Search Engine Optimization Click through rate Application Programming Interface Extensible Markup language Document Object Model JavaScript Object Notation Java Document Object Model Integrated development environment Java Database Connectivity Asynchronous JavaScript XML First In First Out 17

18 1.Εισαγωγή 1.1 Σκοπός της Διπλωματικής Ο σκοπός της παρούσας μεταπτυχιακής διπλωματικής εργασίας αποτελεί η μελέτη της διαδικασίας διάσχισης του διαδικτύου (web crawling) κάνοντας χρήση τεχνικών εύρεσης προβαλλόμενου στο χρήστη περιεχομένου (Headless Browsing). Για το σκοπό αυτό αναπτύχθηκε ο JxSPhinx ένας crawler που εκμεταλλεύεται τις τεχνικές αυτές κατά την διαδικασία διάσχισης του διαδικτύου. Η δυνατότητα ανάλυσης και ανίχνευσης του προβαλλόμενου περιεχομένου μιας ιστοσελίδας στο χρήστη δίνει την δυνατότητα μιας πιο ανθρωποκεντρικής προσέγγισης της διαδικασίας του crawling. Μια τέτοια διαδικασία μπορεί να συμβάλει σε μια αποτελεσματικότερη αναζήτηση και προβολή αποτελεσμάτων από τις μηχανές αναζήτησης, καθώς δεν είναι λίγες οι φορές που ο χρήστης βρίσκεται σε μια ιστοσελίδα που δεν έχει καμία σχέση το περιεχόμενο της με το θεματικό περιεχόμενο των κριτηρίων αναζήτησης που κατασκεύασε. 1.2 Στόχοι της Διπλωματικής Βασικός στόχος της διπλωματικής αποτέλεσε η σχεδίαση και ανάπτυξη ενός crawler o οποίος μπορεί να εξάγει επακριβώς την πληροφορία που βλέπει και ένας απλός χρήστης που περιηγείται σε μια ιστοσελίδα. Για τον λόγο αυτό γίνεται χρήση ενός Headless Browser, ο οποίος παρέχει τη δυνατότητα εξολοκλήρου θεματικής και τεχνολογικής ανάλυσης μιας ιστοσελίδας. Ο Headless Browser που χρησιμοποιήθηκε ήταν ο JXBroswer για λόγους που θα παρουσιαστούν στη συνέχεια. Το λογισμικό που αναπτύχτηκε αποτελεί επέκταση του WebSphinx crawler, ο οποίος παρέχει βιβλιοθήκες τόσο για την ανάλυση των ιστοσελίδων, όσο και για την οπτικοποίηση των αποτελεσμάτων του σε γράφο κατά την διάρκεια εκτέλεσης. Ο JxSPhinx χρησιμοποιεί τον ίδιο μηχανισμό για το crawling με τον WebSphinx, με τη διαφορά ότι έχει τροποποιηθεί η διαδικασία εξαγωγής των συνδέσμων των ιστοσελίδων κάνοντας χρήση του JXBroswer. Αν αναλογιστούμε ότι οι περισσότεροι crawlers δεν έχουν την δυνατότητα ανάλυσης δυναμικού περιεχομένου όπως AJAX, Jquery, ανακατευθύνσεις συνδέσμων και προβολής περιεχομένου μέσα σε εμφωλευμένα iframes, δημιουργείται η ανάγκη ενός λογισμικού το οποίο μπορεί να ανιχνεύει το προβαλλόμενο περιεχόμενο σε ένα χρηστή. Ο JxSPhinx δέχεται όρισμα ένα domain (όπως και ένας απλός crawler) και ξεκινάει τη διαδικασία ανάλυσης των ιστοσελίδων αποθηκεύοντας το περιεχόμενο που μας ενδιαφέρει. 18

19 Για να μπορέσουμε να τεκμηριώσουμε την αρχική μας υπόθεση, ότι δηλαδή το προβαλλόμενο περιεχόμενο μιας ιστοσελίδας είναι διαφορετικό απo αυτό που χαρτογραφούν οι σύγχρονοι crawlers, κατασκευάσαμε μια βάση δεδομένων και για τον ίδιο αριθμό ιστοσελίδων αναλύσαμε το περιεχόμενο που ανιχνεύει ο WebSphinx και ο JxSPhinx, αντίστοιχα. 1.3 Δομή της διπλωματικής Στο πρώτο κεφάλαιο γίνεται μια εισαγωγή στο αντικείμενο της διπλωματικής εργασίας κάνοντας γνωστούς τον σκοπό και τους στόχους της. Στο δεύτερο κεφάλαιο γίνεται μια προσέγγισή των μηχανών αναζήτησης, αλλά και του Search Engine Optimization. Στο τρίτο κεφάλαιο αναλύουμε τις βασικές αρχές του Headless Browsing παρουσιάζοντας τα σημαντικότερα εργαλεία που επιτελούν μια τέτοια διαδικασία. Στο τέλος γίνεται η επιλογή του εργαλείου που ταιριάζει καλύτερα στο πρόβλημά και μπορεί να προσαρμοστεί στις απαιτήσεις της παρούσας εργασίας. Για τις βασικές αρχές του crawling αλλά και του WebSphinx γίνεται αναφορά στο τέταρτο κεφάλαιο, ενώ στο πέμπτο κεφάλαιο γίνεται ανάλυση του μοντέλου που υιοθετήθηκε, αλλά και της μεθοδολογίας ανάπτυξης του JxSPhinx, επεξηγώντας βηματικά τη διαδικασία ενοποίησης του crawler με τον Headless Browser. Στο έκτο κεφάλαιο συζητούμε την πειραματική διαδικασία που ακολουθήσαμε, παρουσιάζοντας αναλυτικά αποτελέσματα. Τέλος, στο έβδομο κεφάλαιο παρουσιάζονται τα συμπεράσματα της παρούσας εργασίας, σε συνδυασμό τους μελλοντικούς τομείς επέκτασης της διπλωματικής. 19

20 2.Βελτιστοποίηση σε σχέση με τις Μηχανές Αναζήτησης (SEO) Το SEO αποτελεί συντομογραφία των λέξεων Search Engine Optimization και έχει ως στόχο να βελτιωθεί η κατάταξη ενός ιστότοπου, όπως αυτός παρουσιάζεται από τις μηχανές αναζήτησης. Ο όρος SEO περιγράφει ένα σύνολο από δραστηριότητες που έχουν ως στόχο να αυξήσουν την κίνηση από όλες τις μηχανές αναζήτησης προς τον εκάστοτε ιστόχωρο [1]. Αυτό περιλαμβάνει ενέργειες όπως αλλαγή στον HTML κώδικα ή αλλαγή στο περιεχόμενο μιας σελίδας. Οι μηχανές αναζήτησης, όπως θα αναλυθεί και αργότερα, σαρώνουν το περιεχόμενο των σελίδων και το αξιολογούν με βάση το περιεχόμενο, αλλά και κάποια κριτήρια τα οποία οι ίδιες θέτουν. 2.1 Ποιοί ιστότοποι χρειάζονται SEO; Σε γενικές γραμμές όλοι χρειάζονται το Search Engine Optimization. Εάν για τον ιστότοπο τον οποίο μελετάμε ισχύει ένα από τα παρακάτω, δεν προκύπτει η ανάγκη εφαρμογής του SEO [1]: είναι ένα website το οποίο δεν απαιτείται να εμφανίζεται στις πρώτες θέσεις των μηχανών αναζήτησης (π.χ. κάποιο εκπαιδευτικό εργαλείο για τους υπαλλήλους μιας εταιρείας) ο ιστότοπος κατέχει μια καλή θέση στις μηχανές αναζήτησης. ο ιστότοπος αναμένεται να σχεδιαστεί από την αρχή τους επόμενους μήνες, οπότε τεχνικές SEO θα εφαρμοστούν στον καινούριο ιστότοπο. 2.2 Η χρησιμότητα των Robots Μια σημαντική οντότητα των μηχανών αναζήτησης είναι τα λεγόμενα robots ή spiders. Είναι οντότητες οι οποίες σαρώνουν το κείμενο των ιστοτόπων και το επιστρέφουν ώστε να αναλυθεί από την ισχυρή και κεντρική μηχανή αναζήτησης. Αυτή η διαδικασία αποτελεί το επονομαζόμενο crawling ή spidering [2]. Υπάρχουν πολλές μεταφορές ώστε να εξηγήσουμε πως δουλεύει ένα robot, αλλά αν το παρομοιάσουμε με ένα μυρμήγκι πιστεύουμε ότι περιγράφει το ρόλο του καλύτερα. Στην περίπτωση αυτή ο HTML κώδικας είναι το "φαγητό" του και προσπαθεί να αποκομίσει όσο το δυνατόν περισσότερο με το λιγότερο κόπο και ταξιδεύοντας πιο εύκολα χωρίς εμπόδια μέσα από τα διάφορα μονοπάτια. Τα μονοπάτια αντιστοιχούν στους HTML συνδέσμους. Ακολουθώντας αυτά τα μονοπάτια το μυρμήγκι (robot) συλλέγει το φαγητό του (κείμενο) και το αποθηκεύει στη φωλιά του (βάση δεδομένων που διαθέτει η μηχανή αναζήτησης). Εκατομμύρια robots εξερευνούν και συλλέγουν πληροφορίες ταυτόχρονα σε όλο το παγκόσμιο δίκτυο. Εάν ένα μονοπάτι είναι αποκομμένο ή μπλοκαρισμένο, το μυρμήγκι φεύγει και συνεχίζει στο επόμενο. Εάν δεν υπάρχει φαγητό το μυρμήγκι δεν επιστρέφει πίσω τίποτα. 20

21 Στην περίπτωση των μηχανών αναζήτησης χρησιμοποιούνται βάσεις δεδομένων στις οποίες αποθηκεύονται τμήματα κειμένων που έχουν συλλεχθεί από εκατομμύρια sites σε όλο το δίκτυο. 2.3 Οι πιο δημοφιλείς μηχανές αναζήτησης Google: Είναι η πιο δημοφιλής μηχανή αναζήτησης κατακτώντας σύμφωνα με επίσημα στατιστικά το μέγιστο μερίδιο της αγοράς εδώ και αρκετά χρόνια. Στον χώρο της είναι η μόνη που προσφέρει καταχώρηση στο λεξικό και σε συνδυασμό με τις άλλες υπηρεσίες τις οποίες προσφέρει (Gmail, Google maps, feed readers, web master tools, web analytics) ξεχωρίζει από τους ανταγωνιστές της [3]. Η αναζήτηση στη μηχανή της Google περιλαμβάνει μια μεγάλη ποικιλία φίλτρων όπως είναι βίντεο, εικόνα, πρόσφατα νέα, blogs κτλ. Είναι αυτή που καθορίζει τις εξελίξεις στον τομέα της αναζήτησης. Πρώτη καθόρισε τo Link Popularity ως σημαντικό παράγοντα για μια αναζήτηση, όπως και την ηλικία ενός ιστότοπου. AOL: Χρησιμοποιεί τη βάση δεδομένων της Google για την εμφάνιση των αποτελεσμάτων και δεν αποτελεί κάτι ιδιαίτερο στον τομέα του SEO, παρόλο που έχει το 1.6% της συνολικής κίνησης των αναζητήσεων [4]. Yahoo: Είναι μια από τις πιο παλιές και πιο γνωστές μηχανές αναζήτησης. Αρχικά αποτέλεσε δικτυακό κατάλογο άλλων ιστοσελίδων. Το 1990 μετατράπηκε σε ένα portal με σκοπό την αναζήτηση [3]. Αρχικά η Yahoo έκανε μόνη της το crawling, spidering, την αποθήκευση και ανάκτηση των δεδομένων. Τώρα πλέον η Yahoo υποστηρίζεται από την Bing. Εικόνα 1. Συγκεντρωτικά χαρακτηριστικά των δημοφιλέστερων μηχανών αναζήτησης 21

22 Bing: Είναι η μηχανή αναζήτησης της Microsoft η οποία αρχικά ξεκίνησε ως μια "μηχανή αποφάσεων" [3]. Η επίσημη λειτουργία της ξεκίνησε το Η Google έχει κατηγορήσει τη Microsoft ότι η Bing αντιγράφει τα αποτελέσματά της ( google-bing-is-cheating-copying-our-search-results-62914). ASK: Η μηχανή αναζήτησης αυτή εστιάζει τόσο στην κατασκευή φιλικών διεπαφών χρήστη, όσο και στην ανάδειξη καινοτόμων λύσεων στο περιεχόμενό τους [1]. Το χαρακτηριστικό το οποίο την έκανε ευρέως γνωστή είναι η παρουσίαση των αποτελεσμάτων της σε 3 στήλες προσπαθώντας να ελαχιστοποιήσει το scrolling, αλλά και η πλήρης αφομοίωση των νέων επιλογών στα αποτελέσματα. Τέλος με το ASK Eraser έδωσε τη δυνατότητα στους χρήστες να σβήνουν τα δεδομένα αναζήτησης από την βάση δεδομένων της ASK. 2.4 Ποιοί παράγοντες επηρεάζουν την κατάταξη Οι αλγόριθμοι οι οποίοι χρησιμοποιούνται από τις μηχανές αναζήτησης για να υπολογίσουν τα αποτελέσματα αναζήτησης μπορούν να τροποποιηθούν ανά πάσα χρονική στιγμή. Ιστορικά, οι υπεύθυνοι του τμήματος μάρκετινγκ των μηχανών αναζήτησης δημιουργούν βελτιστοποιημένες σελίδες για την κάθε μηχανή αναζήτησης ξεχωριστά, παρόλο που πολλές φορές αυτό μπορεί να οδηγήσει σε αναδίπλωση και επανάληψη περιεχομένου [4]. Η κατάταξη πρέπει να κατακτάται μέσα από μια διαδικασία η οποία είναι κοινή για όλες τις σελίδες. Υπολογισμοί όπως αυτοί της βέλτιστης πυκνότητας λέξεων και του βέλτιστου μέγεθος περιεχομένου σελίδας είναι σημαντικοί για την πλειοψηφία των μηχανών αναζήτησης, παρόλα αυτά οδηγούν σε μια υπεραπλούστευση των σύγχρονων αλγορίθμων ανάκτησης πληροφορίας που χρησιμοποιούνται. Για αυτό το λόγο αναφέρουμε τους πιο σημαντικούς παράγοντες κατάταξης που πρέπει να γνωρίζουν όλοι οι σχεδιαστές δικτυακών τόπων. Οι παράγοντες αυτοί μπορούν να ταξινομηθούν σε τέσσερις κατηγορίες: Visible on-page factors, Invisible on-page factors, Time-based factors, και External factors. Ορατοί παράγοντες Ιστοσελίδων (On - page factors) Είναι παράγοντες οι οποίοι υπαγορεύονται από το περιεχόμενο της σελίδας. Παίζουν σημαντικό ρόλο για την εκστρατεία μάρκετινγκ των μηχανών αναζήτησης καθώς είναι εύκολο να τους ελέγξουν [1]. Επειδή είναι ολοφάνερο κίνητρο για τους spammers, οι μηχανές αναζήτησης άρχισαν να δίνουν βαρύτητα όσο μπορούν και σε νέους παράγοντες. Παρόλα αυτά σε καμία περίπτωση δεν μπορούμε να πούμε ότι οι on-page factors δεν είναι σημαντικοί. Χωρίζουμε τους on-page factors σε 2 κατηγορίες: αυτούς που είναι ορατοί (visible) και αυτούς οι οποίοι δεν είναι ορατοί (invisible) [1]. Οι πρώτοι είναι πολύ πιο σημαντικοί από τους δεύτερους. Μάλιστα, κάποιοι θεωρούν ότι οι αόρατοι παράγοντες είναι ανάξιοι χρήσης. Αυτό συμβαίνει γιατί είναι εύκολο να τροποποιηθούν χωρίς να αλλάξει το προβαλλόμενο περιεχόμενο της σελίδας. 22

23 2.4.1 Visible On Page factors Οι ορατοί παράγοντες είναι οι εξής: Τίτλος σελίδας (page title) Κεφαλίδα σελίδας (page headings) Περιεχόμενο σελίδας (page copy) Εξερχόμενοι σύνδεσμοι (outbound links) Λέξεις κλειδιά στα URL και στο domain name (keywords in URLS and domain name) Επικαιρότητα σελίδας (site topicality) Τίτλος Σελίδας Είναι μια ακολουθία χαρακτήρων η οποία καθορίζεται από τα περιεχόμενα του <title> στοιχείου στην <head> περιοχή του HTML εγγράφου. Ο τίτλος είναι ορατός, τόσο στην γραμμή τίτλου στον περιηγητή, όσο και στην επικεφαλίδα των αποτελεσμάτων αναζήτησης [6]. Είναι ευλόγως ένας από τους σημαντικότερους στο SEO, επειδή είναι σημαντικός και για την κατάταξη στις μηχανές αναζήτησης, αλλά και για να μπορέσει να βελτιωθεί ο CTR (click through rate) [5]. Κάθε σελίδα πρέπει να έχει μια περιγραφική ετικέτα τίτλου και μια κεφαλίδα. Εάν αυτές παραμένουν ίδιες για όλες τις σελίδες του δικτυακού τόπου τότε δεν αναδύεται η χρησιμότητά τους. Στην περίπτωση αυτή το καλύτερο που μπορεί να συμβεί είναι να ευρετηριοποιηθεί η σελίδα ανεπαρκώς. Στη χειρότερη περίπτωση, μπορεί στον χώρο να επιβληθεί μια ποινή λόγω πανομοιότυπου περιεχομένου. Όλες οι σελίδες σε ένα δυναμικό site πρέπει να έχουν μοναδικούς και σχετικούς με το περιεχόμενο της σελίδας τίτλους. Κεφαλίδα Σελίδας Οι κεφαλίδες της σελίδας είναι τμήματα κειμένου τα οποία προέρχονται από το αντίγραφο της σελίδας για να υποδείξουν το γενικότερο πλαίσιο σημασία του ιστότοπου [7]. Μια κεφαλίδα δημιουργείται χρησιμοποιώντας την <Hx> ετικέτα της HTML, όπου x είναι ένας αριθμός μεταξύ 1 και 6. Αποτελεί έναν παράγοντα που βοηθάει τον χρήστη να περιηγηθεί σε μια σελίδα. Περιεχόμενο σελίδας(page Copy) Είναι ξεκάθαρο ότι εάν μια σελίδα περιέχει τις λέξεις κλειδιά για τις οποίες ο χρήστης ψάχνει, τότε αποτελεί ιδανική περίπτωση για το ερώτημα αναζήτησης που θέτει [6]. Οι αλγόριθμοι των μηχανών αναζήτησης λαμβάνουν υπόψη τους αυτό το γεγονός. Αναφέροντας τις λέξεις κλειδιά σε διαφορετικές κλίσεις (ενικός, πληθυντικός, παρόν, παρελθόν) είναι εξίσου χρήσιμο. Το SEO copy writing έχει ως στόχο να παράγει περιεχόμενο σε ένα δικτυακό τόπο με τέτοιο τρόπο ώστε να είναι ευανάγνωστο από τον χρήστη, αλλά ωστόσο στοχεύει σε συγκεκριμένους όρους αναζήτησης στις μηχανές. Είναι μια διαδικασία η οποία, νόμιμα, χωρίς να κάνει χρήση spamming τεχνικών επιδιώκει να επιτύχει υψηλές βαθμολογίες κατάταξης από τις μηχανές αναζήτησης. Δεν υπάρχει κάποια λύση η οποία να μπορεί να δημιουργεί ένα αντίγραφο εύκολα και το οποίο να είναι πειστικό, περιέχοντας 23

24 τις κατάλληλες λέξεις αρκετές φορές. Υπάρχουν, ωστόσο, κάποια τεχνάσματα που βοηθούν, όπως το να γίνεται χρήση του τέλους και της αρχής μιας πρότασης για να μπορέσουμε να επαναλάβουμε μια λέξη κλειδί ακριβώς. Για παράδειγμα: Ξενοδοχεία Μαϊάμι: Πρέπει να δοκιμάσετε ένα από τα ωραία μας ξενοδοχεία στο Μαϊάμι. Η ξενοδοχειακή διαμονή στο Make believe ξενοδοχείο θα υπερβεί όλες σας τις προσδοκίες [1]. Εξερχόμενοι Σύνδεσμοι Ο μηχανές αναζήτησης αξιολογούν τους συνδέσμους που περιέχει ένα έγγραφο. Ένας σχετικός σύνδεσμος σε μια ιστοσελίδα είναι πολύτιμο περιεχόμενο και ως τέτοιο αντιμετωπίζεται και από τις μηχανές αναζήτησης. Ωστόσο σύνδεσμοι σε άσχετο περιεχόμενο ή σε spam περιεχόμενο μπορούν δυνητικά να βλάψουν την βαθμολογία της σελίδας [1]. Λέξεις κλειδιά στο URL και στο Domain Name Είναι πιθανό οι λέξεις κλειδιά που περιέχονται από ένα URL τόσο στο domain name ή και στο όνομα του αρχείου να έχουν θετική επιρροή στη βαθμολογία της σελίδας. Έχουν επίσης πιθανή επιρροή και στο CTR, καθώς οι λέξεις κλειδιά στο URL μπορεί να αυξήσουν την πιθανότητα ένας χρήστης να κάνει κλικ λόγω της αύξησης της συνάφειας. Επικαιρότητα σελίδας Ο παράγοντας αυτός συσχετίζει μια σελίδα με κάποιες άλλες μέσω ενός ιστότοπου. Αυτό έχει ως αποτέλεσμα να ενισχύεται σημαντικά η βαθμολογία του συγκεκριμένου ιστότοπου. Αυτό σημαίνει ότι άλλες σχετικές σελίδες που συνδέονται με τον ιστότοπο οδηγούσαν στην γενική αύξηση της βαθμολογίας του ιστότοπου Invisible On-page factors Είναι παράγοντες όπως μπορούμε να καταλάβουμε εύκολα οι οποίο δεν είναι ορατοί σε μια σελίδα από έναν ανθρώπινο αναγνώστη. Μπορούν να διαβαστούν από μια μηχανή αναζήτησης όταν αυτή κάνει ανάλυση τη σελίδα. Οι παράγοντες που αναφέραμε χωρίζονται στις εξής κατηγορίες: μέτα περιγραφή (meta description), μέτα λέξεις-κλειδιά (meta keywords), Alt title ιδιότητας, και δομή σελίδας (page structure considerations). Μέτα περιγραφή Η μέτα περιγραφή μπορεί να βελτιώσει το CTR [3] και έχει μια μικρή επιρροή στην βαθμολογία στις μηχανές αναζήτησης. Στην συνέχεια ακολουθεί ένα παράδειγμα: Εικόνα 2. Παράδειγμα μεταδεδομένου description 24

25 Μέτα λέξεις κλειδιά Αυτό το κριτήριο θεωρείται ασήμαντο, επειδή είναι πλήρως αόρατο και υποκειμενικό στο χειρισμό. Παρόλα αυτά, είναι καλό να τοποθετούνται κάποιες σημαντικές λέξεις κλειδιά στα meta keywords tags. Στην συνέχεια ακολουθεί ένα παράδειγμα: Εικόνα 3. Παράδειγμα μεταδεδομένου λέξεις κλειδιά Alt-title ιδιότητας Οι ετικέτες είναι αόρατες, οπότε δεν είναι και τόσο σημαντικοί παράγοντες στη βαθμολογία μιας σελίδας. Είναι σημαντικές κυρίως για αναγνώστες οθόνης (screen readers) και για φυλλομετρητές βασισμένους σε κείμενο (text based) και ενισχύουν την χρηστικότητα και την προσβασιμότητα των σελίδων. Τα alt-tags μπορούν να χρησιμοποιηθούν κυρίως για την περιγραφή εικόνων όπου οι ιδιότητες τίτλου μπορούν να χρησιμοποιηθούν στις περισσότερες ετικέτες. Ακολουθεί ένα παράδειγμα της alt ιδιότητας σε μια εικόνα: Και η ιδιότητα τίτλου σε ένα σύνδεσμο: Εικόνα 4. Παράδειγμα alt title ιδιότητας Εικόνα 5. Παράδειγμα alt title ιδιότητας Δομή Σελίδας Οι μηχανές αναζήτησης κάνουν χρήση στοιχείων επιπέδου block (block level elements), για παράδειγμα <div>,<p>ή <table> στοιχεία για την ομαδοποίηση σχετικού κειμένου. Η χρήση στοιχείων επιπέδου block χωρίς κάποια ιεραρχική δομή ή διάκριση όπως αυτή που ακολουθεί μπορεί να είναι επιβλαβής. Εικόνα 6. Διάκριση block level elements Time-based factors Οι παράγοντες αυτοί είναι αναλλοίωτοι, καθώς ο χρόνος είναι ο μόνος παράγοντας ο οποίος δεν μπορεί να επηρεαστεί με κανέναν τρόπο. Ένα παλιό site το οποίο αυξάνει με αργό ρυθμό των αριθμό των συνδέσμων του με το χρόνο είναι αυτό που εννοούμε το 25

26 «παλιό καλό κρασί» [1]. Οι μηχανές αναζήτησης έχουν την τάση να επιβραβεύουν αυτές τις σελίδες. Ένας μεγάλος αριθμός χρηστών χρησιμοποιούσε expired domain names που φιλοξενούσαν δημοφιλείς ιστότοπους με σκοπό να παραπλανήσουν τις μηχανές αναζήτησης και να θεωρήσουν τον καινούριο ιστόχωρο ως παλιό. Πλέον, οι μηχανές αναζήτησης δεν ακολουθούν αυτήν την τακτική και μηδενίζουν την προστιθέμενη αξία κάποιου site με domain name που έχει λήξει. Ωστόσο, υπάρχουν πλεονεκτήματα από την αγορά domains names απευθείας από χρήστες με υπάρχοντες ιστότοπους. Οι παράγοντες βασισμένοι στον χρόνο είναι η ηλικία του site και της σελίδας, αλλά και η ηλικία των συνδέσμων που αναφέρονται σε αυτήν. Ηλικία ιστότοπου και σελίδας Ένας ιστότοπος ο οποίος υφίσταται για πολλά χρόνια είναι πιθανόν να βαθμολογηθεί καλύτερα από έναν καινούριο, ενώ όλοι οι άλλοι παράγοντες να παραμένουν σταθεροί. Με την πάροδο του χρόνου όταν ένα site προσθέτει αξιόλογο περιεχόμενο γίνεται αξιόπιστο. Αυτό προσομοιάζει κυρίως την ανθρώπινη συμπεριφορά, καθώς ένας καταναλωτής είναι πιο πιθανόν να ψωνίσει από ένα κατάστημα το οποίο υπάρχει για πολλά χρόνια και παρέχει καλή ποιότητα υπηρεσιών, από το να ψωνίσει από ένα κατάστημα καινούριο για το οποίο δεν υπάρχει καθόλου φήμη. Επομένως ένας ιστότοπος ο οποίος υφίσταται για μεγάλο χρονικό διάστημα βαθμολογείται καλύτερα, τόσο γιατί διαθέτει συνδέσμους επί σειρά ετών, όσο και γιατί η ηλικία στο επίπεδο της σελίδας θεωρείται θετική. Επιπλέον, θεωρείται θετική η αλλαγή και η ανανέωση του περιεχομένου της σελίδας, αφού υποδεικνύει ότι η σελίδα είναι ενεργή. Ηλικία συνδέσμου Σύνδεσμοι παρόντες και σε άλλους ιστότοπους προσδίδουν περισσότερη αξία σε έναν χώρο. Με την πάροδο του χρόνου ένας σύνδεσμος εκτιμάται σε αξία. Μέγεθος domain name Οι μηχανές αναζήτησης θεωρούν ότι η καταχώρηση ενός μεγάλου domain name υποδεικνύει ότι ο ιστότοπος δεν διατίθεται για spamming. Αντίθετα, μικρά domain names χρησιμοποιούνται για spamming [1]. Ένας Spammer δεν καταχωρεί το domain name για παραπάνω από ένα χρόνο, και αυτό το γνωρίζουν οι μηχανές αναζήτησης. Εξωτερικοί παράγοντες Υπάρχουν αρκετοί εξωτερικοί παράγοντες οι οποίοι μπορούν να καθορίσουν την βαθμολογία ενός ιστότοπου. Οι αυτοί οι παράγοντες είναι: Ποιότητα, ποσότητα και σχετικότητα των εισερχόμενων συνδέσμων Link churn Ρυθμός απόκτησης συνδέσμων(link acquisition rate) Αμοιβαίοι σύνδεσμοι 26

27 Αριθμός συνδέσμων στην σελίδα Σχετικότητα των συνδέσμων στην σελίδα IPδιευθύνσεις των αμφίδρομα συνδεδεμένων ιστοτόπων Το TLD ενός domain name για ένα σύνδεσμο Τοποθεσία συνδέσμου Web standards compliance Ποσότητα εισερχόμενων συνδέσμων Ένας ιστότοπος με πολλούς εισερχόμενους συνδέσμους είναι πιθανόν να είναι κατάλληλος καθώς πολλοί άνθρωποι τον ψηφίζουν μέσω της τοποθέτησης συνδέσμων στους ιστότοπους τους [6]. Εδώ βέβαια υπάρχουν κάποιες αντενδείξεις σχετικά με το γεγονός ότι μερικές φορές αυτοί οι σύνδεσμοι είναι μέρος ενός τεχνητού σχήματος συνδέσμων. Ποιότητα εισερχόμενων συνδέσμων Ένα δημοφιλές site το οποίο συνδέεται με κάποιον ιστότοπο προφανώς διαθέτει αρκετούς εισερχόμενους συνδέσμους, και μια καλή φήμη σημαίνει πολύ περισσότερα σε σχέση με ένα σύνδεσμο από μια τυχαία σελίδα από έναν ασήμαντο ιστότοπο με λίγους συνδέσμους [7]. Δεν υπάρχει ακριβής ορισμός για το τι αποτελεί ποιότητα. Οι μηχανές αναζήτησης χρησιμοποιούν πολύ περίπλοκους αλγορίθμους ώστε να μπορέσουν να υλοποιήσουν μια πιο ανθρώπινη προσέγγιση. Η σχέση των εισερχόμενων συνδέσμων Μια μηχανή αναζήτησης είναι πιθανόν να βλέπει ένα σύνδεσμο από σημαντική σχετική σελίδα ή ένα ιστότοπο πιο αξιόλογο σε σχέση με μια τυχαία και μη σχετική σελίδα. Συνήθως μια σειρά από συνδέσμους με πολύ όμοιο anchor text από άσχετες πηγές είναι μια υπόδειξη ότι πρόκειται για ένα τεχνητό σχήμα συνδέσμων και πλέον αυτοί οι σύνδεσμοι χάνουν την αξία τους. Πολλοί σύνδεσμοι από πηγές οι οποίες δεν είναι κατάλληλες μπορεί να οδηγήσουν σε ποινή. Link churn Σύνδεσμοι οι οποίοι εμφανίζονται και εξαφανίζονται σε σελίδες είναι μέρος ενός σχήματος συνδέσμων. Ο ρυθμός με τον οποίο αυτοί οι σύνδεσμοι εμφανίζονται και εξαφανίζονται ονομάζεται Link churn. Εάν αυτό συμβαίνει συχνά, τότε αξιολογείται ως spam. Αυτοί οι σύνδεσμοι θα χάσουν την αξία τους ή στην χειρότερη περίπτωση ο ιστότοπος θα χαρακτηριστεί ως spam και θα τιμωρηθεί. Ρυθμός απόκτησης συνδέσμων Ένας αλγόριθμος μπορεί να δει την απόκτηση χιλιάδων συνδέσμων από έναν καινούριο ιστότοπο ύποπτη, σε αντίθετη περίπτωση συνοδεύεται από υψηλά βαθμολογημένα site. Συνήθως αυτό είναι μια υπόδειξη για ύπαρξη σχήματος συνδέσμων. Για περισσότερες 27

28 λεπτομέρειες υπάρχει σχετικός σύνδεσμος στο Αμοιβαίοι σύνδεσμοι Παλιότερα, οι ειδικοί συνήθιζαν να συνάπτουν εμπορικούς δεσμούς για να επιτύχουν ριζικές βελτιώσεις στις βαθμολογίες. Αυτό δημιούργησε ένα τεχνητό αριθμό από αυτοεξυπηρετούμενες ψήφους. Με την πάροδο του χρόνου οι μηχανές αναζήτησης έγιναν πιο έξυπνες και πλέον υποτιμούν τους αμοιβαίους συνδέσμους. Σε απάντηση, οι υπεύθυνοι SEO δημιούργησαν σχήματα ανταλλαγής συνδέσμων με πολλαπλά μέρη για να αποφεύγουν την ανίχνευση. Οι σύγχρονες μηχανές αναζήτησης μπορούν να ανιχνεύσουν αυτές τις απλές υπεκφυγές αρκετά εύκολα. Αυτό δε σημαίνει ότι οι αμοιβαίοι σύνδεσμοι είναι κακοί, αλλά θα πρέπει να αντισταθμίζονται από αρκετούς συνδέσμους μιας κατεύθυνσης. Ο συνδυασμός και των δύο μεθόδων φαντάζει πιο φυσικός και έχει ως αποτέλεσμα υψηλότερες βαθμολογίες. Αριθμός συνδέσμων σε μια σελίδα Ένας σύνδεσμος σε μια σελίδα με λίγους εξερχόμενους συνδέσμους αξιολογείται περισσότερο από ένα σύνδεσμο με πολλούς εξερχόμενους συνδέσμους. Σημασιολογικές σχέσεις μεταξύ των συνδέσμων σε μια σελίδα Μια μηχανή αναζήτησης μπορεί να θεωρήσει ότι μια σελίδα με πολλούς συνδέσμους σε άλλες σελίδες χωρίς να είναι σημασιολογικά σχετικές μπορεί να είναι μια σελίδα που περιέχει μόνο συνδέσμους ή κάποιο είδος σελίδας που έχει σχεδιαστεί για να χειραγωγήσει βαθμολογίες ή να συνάψει εμπορικούς δεσμούς. Επίσης θεωρείται ακόμα και η ονομασία μιας σελίδας με την λέξη links όπως links.php μπορεί να υποτιμήσει πραγματικά συνδέσμους που περιέχονται συγκεκριμένα σε μια σελίδα. IP διευθύνσεις από αμφισυνδεδεμένους ιστότοπους Οι IP διευθύνσεις οι οποίες βρίσκονται στην ίδια C κλάση (έχουν τις πρώτες τρείς οκτάδες ίδιες) είναι πολύ πιθανό να βρίσκονται κοντά ίσως ακόμη και στον ίδιο Server. Όταν οι ιστότοποι είναι αλληλένδετοι με πολλούς συνδέσμους και έρχονται από παρόμοιες IP διευθύνσεις, θεωρούνται ύποπτες και αυτοί οι σύνδεσμοι υποτιμούνται. Για παράδειγμα, ένας σύνδεσμος από ένα domain Α σε ένα domain B είναι μια σύνδεση από δύο αλληλένδετες διευθύνσεις. Αυτό μπορεί να είναι ένας δείκτης τεχνητών σχημάτων συνδέσμων που έχουν ως στόχο να επηρεάσουν την κατάταξη αυτών των ιστοτόπων. Το TLD ενός domain name για ένα σύνδεσμο Είναι ευρέως γνωστό ότι τα domain.edu και.gov είναι λιγότερο ευάλωτα και έχουν μεγαλύτερη βαρύτητα. Ωστόσο, αυτό αμφισβητείται από κάποιους υπεύθυνους SEO, οι οποίοι θεωρούν ότι το ίδιο αποτέλεσμα πρέπει να επιφέρει και η ηλικία ενός ιστότοπου, αλλά και ο αριθμός των συνδέσμων που έχουν αποκτήσει με την πάροδο του χρόνου. 28

29 Τοποθεσία συνδέσμου Σύνδεσμοι που εμφανίζονται σε περίοπτη θέση στο περιεχόμενο της σελίδας όπως είναι στο κέντρο της θεωρούνται από τις μηχανές αναζήτησης πιο σημαντικοί. Σύνδεσμοι οι οποίοι είναι ενσωματωμένοι στο περιεχόμενο στο κάτω μέρος της σελίδας είναι συνήθως λιγότερο σημαντικοί. Επίσης, εξωτερικοί σύνδεσμοι στο κάτω μέρος της σελίδας σε σημασιολογικά άσχετους ιστότοπους μπορεί να είναι ένα κριτήριο για ανίχνευση spam. Η φυσική τοποθεσία μέσα σε ένα έγγραφο είναι ιστορικά σημαντική. Ιδανικά, το πρωτεύον περιεχόμενο μιας σελίδας τοποθετείται νωρίς στον html κώδικα της σελίδας, καθώς και σε περίοπτη θέση στο κέντρο της σελίδας. Πρότυπα συμμόρφωσης διαδικτύου Τα πρότυπα συμμόρφωσης και η ευδιάκριτη παρουσίαση του κώδικα είναι ιστορικά ασήμαντα, αλλά η πρόσφατη δουλειά προσβασιμότητας συνέβαλε στο να αποτελέσουν ένα μικρό παράγοντα κατάταξης. 29

30 3. Η χρησιμότητα του Headless Browsing Ένας Headless browser είναι ένας φυλλομετρητής χωρίς γραφική διεπαφή (GUI). Δηλαδή, είναι ένας browser που αποκτά πρόσβαση σε σελίδες, αλλά δεν τις προβάλλει. Συνήθως χρησιμοποιείται για να ενημερώσει για το περιεχόμενο των ιστοσελίδων σε άλλα προγράμματα [9]. Για παράδειγμα, ένας headless browser μπορεί να χρησιμοποιηθεί από ένα πρόγραμμα για να αποκτήσει πρόσβαση σε μια ιστοσελίδα και να καθορίσει το πλάτος αυτής της σελίδας ή κάποιο άλλο στοιχείo σε αυτήν που φαίνεται είναι προεπιλεγμένο από το χρήστη. επίσης, μπορεί να εξάγει πληροφορίες για το χρώμα του κειμένου ενός στοιχείου, το είδος της γραμματοσειράς που χρησιμοποιείται ή και τις συντεταγμένες ενός αντικειμένου. Αυτά τα δεδομένα συχνά χρησιμοποιούνται για να ελέγξουν μαζικά ιστοσελίδες για τον έλεγχο της ποιότητάς τους ή για την εξαγωγή δεδομένων [8]. Ο headless browser είναι σημαντικός γιατί αντιλαμβάνεται τις ιστοσελίδες όπως ένας browser, με την επιφύλαξη ότι τα προγράμματα περιήγησης συμπεριφέρονται λίγο διαφορετικά. Πρέπει να είναι σε θέση να αναλύουν javascript περιεχόμενο, όπως και να κατεβάσουν περιεχόμενο όταν γίνεται κλικ σε κάποιον σύνδεσμο. Η Google πρότεινε ότι οι Headless Browsers πρέπει να συνεργάζονται και να βοηθούν τις μηχανές αναζήτησης όσον αναφορά σελίδες AJAX. Το σενάριο της Google υποστηρίζει ότι είναι ευθύνη του διαχειριστή της ιστοσελίδας το να εγκαταστήσει τον headless browser στον web server του, ώστε να πάσα στιγμή οι μηχανές αναζήτησης να έχουν πρόσβαση στον AJAX κώδικα της σελίδας [12]. Στην ουσία η Google προτείνει ότι είναι προτιμότερο η Javascript ανάλυση της ιστοσελίδας να γίνεται από τον Headless browser ή από τον webmaster, παρά από την μηχανή αναζήτησης. Η πρόταση της Google είναι ένα σύνολο URL πρωτοκόλλων τα οποία ελέγχουν πότε η μηχανή αναζήτησης γνωρίζει ότι πρέπει να ζητήσει πληροφορίες από τον headless browser και ποιο URL να δείξει στους ανθρώπινους χρήστες. Το κίνητρο στη συγκεκριμένη περίπτωση είναι ότι οι χρήστες μπορούν να ελέγξουν τι ακριβώς δείχνει στην πραγματικότητα ο spider της Google. Στην συνέχεια ακολουθεί μια ανάλυση των πιο γνωστών Headless Browsers που κυκλοφορούν στην αγορά παρουσιάζοντας τα πλεονεκτήματα και τα μειονεκτήματα τους. 3.1 HtmlUnit Ο HtmlUnit είναι ένας headless browser γραμμένος σε Java από τον οποίο απουσιάζει το γραφικό περιεχόμενο. Επιτρέπει υψηλού επιπέδου χειρισμό των δικτυακών τόπων από άλλο κώδικα java περιλαμβάνοντας συμπλήρωση και υποβολής φορμών και κάνοντας κλικ 30

31 σε υπερσυνδέσμους. Επίσης, παρέχει πρόσβαση στη δομή και στις λεπτομέρειες για το εσωτερικό των λαμβανομένων σελίδων [13]. Ο HtmlUnit εξομοιώνει τμήματα της συμπεριφοράς περιηγητών συμπεριλαμβανομένου και των πτυχών του χαμηλότερου επιπέδου του TCP/IP και HTTP. Μια ακολουθία όπως getpage(url), getlinkwith( click here ), click(), επιτρέπουν ένα χρήστη να πλοηγηθεί μέσα στο υπερκείμενο και να λάβει τις σελίδες που περιέχουν HTML, Javascript, AJAX, Cookies. Ο HtmlUnit περιλαμβάνει επίσης HTTPS security, βασική Http αυθεντικοποίηση, αυτόματη ανακατεύθυνση σελίδων και άλλες Http κεφαλίδες. Επιτρέπει, επίσης, ελέγχους κώδικα Java για να μπορέσει να εξετάσει τις επιστρεφόμενες σελίδες είτε ως κείμενο, είτε ως XML DOM ή σαν μια συλλογή φορμών, πινάκων και συνδέσμων. Η πιο κοινή χρήση του HtmlUnit είναι η αυτοματοποιημένη δοκιμή των ιστοσελίδων, αλλά μερικές φορές μπορεί να χρησιμοποιηθεί για εξαγωγή πληροφοριών από ιστοσελίδες (web scraping), ή για την αποθήκευση του περιεχόμενου της ιστοσελίδας [15]. Γενικά, μπορούμε να πούμε ότι δεν αποτελεί μια γενική πλατφόρμα ελέγχου. Είναι ένας τρόπος να προσομοιώσουμε έναν περιηγητή για σκοπούς ελέγχου και συνήθως χρησιμοποιείται με άλλα frameworks όπως JUnit ή TestNG. Τα βασικά χαρακτηριστικά του HtmlUnit είναι: Υποστήριξη HTTP και HTTPS πρωτοκόλλων Υποστήριξη cookies Ικανότητα να καθορίζει πότε οι λανθασμένες αποκρίσεις από τον Serverβγάζουν εξαίρεση ή επιστρεφόμενες σελίδες κατάλληλου τύπου Χρήση POST και GET Προσαρμογή των κεφαλίδων αιτήσεων που στέλνονται στον περιηγητή Υποστήριξη όλων των HTML responses o εύκολη πρόσβαση σε όλες τις πληροφορίες που περιλαμβάνονται σε μια σελίδα o Υποβολή φορμών o Κλικ συνδέσμων Proxy server NTLM αυθεντικοποίηση Εξαιρετική υποστήριξη Javascript 3.2 JXBroswer Όλοι οι Java προγραμματιστές που έχουν αναπτύξει ένα εργαλείο ελέγχου ιστοσελίδων ή μια desktop εφαρμογή με έναν HTML viewer χρειάστηκαν μια βιβλιοθήκη η οποία θα έπρεπε να φορτώνει, εμφανίζει ένα HTML έγγραφο και να έχει πρόσβαση σε αυτό. Δεν πρέπει να ξεχνάμε ότι η υλοποίηση μιας τέτοιας εφαρμογής απαιτεί μεγάλη προσπάθεια. Έτσι, η προτιμότερη λύση είναι η ενοποίηση με έναν έτοιμο περιηγητή [11]. O JXBroswer είναι ένας περιηγητής ο οποίος προσφέρει τη δυνατότητα ενσωμάτωσης ενός σημαντικού εργαλείου που υποστηρίζει τεχνολογίες διαδικτύου και πρότυπα στις desktop 31

32 εφαρμογές java που βασίζουν τα γραφικά τους στις βιβλιοθήκες της swing. Έτσι, τα έγγραφα του διαδικτύου μέσα στις εφαρμογές μοιάζουν ακριβώς όπως σε έναν συνηθισμένο περιηγητή για τον οποίο είναι σχεδιασμένα. επίσης, ο JXBrowser εμφανίζει ενοποίηση όσο αφορά κάποιες εφαρμογές και interfaces των Internet Explorer και Mozilla Firefox των windows, του Safari της Apple και του Mozilla Firefox των Linux και Mac Os. Ξεκινώντας από την έκδοση 2.0, η βιβλιοθήκη επιτρέπει την ενοποίηση με τις προαναφερθείσες εφαρμογές με σκοπό να γίνεται rendering των HTML σελίδων εξασφαλίζοντας συμμόρφωση με πολλά πρότυπα του Internet (HTML 4, CSS, XML, JavaScript, Adobe Flash, και άλλα). Μπορούμε να προσθέσουμε ένα component στον JXBroswer βασισμένο στον Mozilla Gecko, ή στον Internet Explorer της ή στο Apple Safari. Κάνοντας χρήση του JXBroswer μπορούμε να καθορίσουμε ποιον περιηγητή θα χρησιμοποιήσει η Java εφαρμογή για κάθε λειτουργικό σύστημα. Παρέχεται η δυνατότητα εναλλαγής μεταξύ των περιηγητών και δουλεύοντας απλά μέσω των ίδιων API. Ο JXBroswer παρέχει ένα ολοκληρωμένο API, επιτρέποντας: Αποθήκευση HTML σελίδων και αρχείων Πλοήγηση εμπρός και πίσω στο ιστορικό των σελίδων Προετοιμασία σελίδας για εκτύπωση και προεπισκόπηση εκτύπωσης στο κατάλληλο πλαίσιο διαλόγου Απόκτηση πρόσβασης στις εξειδικευμένες επιλογές όπως η δυνατότητα εκτέλεσης Javascript Set και get HTML περιεχομένου Εκτέλεση JavaScript κώδικα Προσαρμογή του μενού περιβάλλοντος Πλοήγηση σε URL Πλοήγηση σε URL και POST δεδομένων Χρήση Browser Events Διαχείριση pop-up παραθύρων Χρήση πλαισίων διαλόγου Διαχείριση cookies Παρέχει ένα DOM java API για διαχείριση στοιχείων σε ένα έγγραφο, τροποποίηση ιδιοτήτων στοιχειών, και χειρισμό δεδομένων σε HTMLφόρμες. Είναι δυνατή η εκτέλεση Javascript κώδικα ή Javascript κώδικα που φορτώνεται με την HTML σελίδα και χειρισμός των Javascript λαθών που εμφανίζονται κατά την εκτέλεση του κώδικα. Τα Javascript αποτελέσματα εκτέλεσης επιστρέφοντα πίσω στην Java με την μορφή αλφαριθμητικών αντικειμένων. Χρησιμοποιώντας ακροατές γεγονότων μέσω του JΧBrowser API μπορούμε να χειριστούμε Javascript λάθη και ποικίλες καταστάσεις του browser όπως έναρξη πλοήγησης ή παρακολούθηση της προόδου αποθήκευσης ενός αρχείου. Επίσης, μπορούμε να προσθέσουμε εξαιρέσεις ή να απενεργοποιήσουμε την πλοήγηση των διαδικτυακών πόρων με μη έγκυρα ή αυτοϋπογραφούμενα (self-signed) πιστοποιητικά. Τέλος, μπορούμε να διαμορφώσουμε τις proxy ρυθμίσεις για μια τρέχουσα διαδικασία 32

33 χωρίς να επηρεάζουμε τις ρυθμίσεις δημόσιας εμβέλειας. Ο JΧBrowser υποστηρίζει τους ακόλουθους τύπους proxy: ftp, http, https, gopher και sock. 3.3 Crowbar Simile Πολλές λύσεις που βασίζονται στο χώρο της σύνταξης ( syntax space ) για scraping εξάγουν την πληροφορία ως μια HTTP απόκριση και για αυτό το λόγο πρέπει να συνεργάζονται με όλες τους διαφορετικούς τρόπους πού κάποια δεδομένα μπορούν να σειριοποιηθούν. Επιπλέον όμως, πρέπει να έχουν ως αποτέλεσμα το ίδιο οπτικό περιεχόμενο σε έναν browser. Όταν αυτές οι λύσεις είναι εύκολο να γραφτούν τείνουν να απαιτούν αρκετή συντήρηση ώστε να παραμένουν συντακτικά όμοιες και να μην έχουν διαφορετικό αποτέλεσμα κατά το renderingτης σελίδας στο χρήστη. To scarping στο χώρο του μοντέλου ( model space ) είναι πιο ενδεδειγμένη λύση επειδή επιτρέπει τον scarper να λειτουργεί απευθείας στο σύνολο των πληροφοριών και αυτό είναι που χρησιμοποιείται από τον browser για να κάνει την σελίδα ανάλυση. Αυτό σημαίνει ότι είναι πολύ πιο εύκολο να δουλεύεις στο μοντέλο των δεδομένων που παράγεται από το HTML parsing και στη συνέχεια να επεμβαίνεις στο DOM που παράγεται μέσω κατάλληλων μηχανισμών όπως Xpath. Επιπλέον είναι πολύ πιο εύκολο να γράφει κανείς έναν scraper που να διενεργεί σε ένα DOM παρά σε έναν πίνακα χαρακτήρων. Δυστυχώς, το να γράψεις έναν HTML αναλυτή και έναν μετατροπέα DOM που να μπορεί να συνεργαστεί με τον πραγματικό κόσμο δεν είναι εύκολη διαδικασία. Για αυτό τον λόγο ο Crowbar βασίζεται στον κώδικα του Firefox για να κάνει parsing το HTML και να δημιουργήσει τo DOM. Αποτελεί ένα περιβάλλον εξαγωγής δεδομένων από το διαδίκτυο βασισμένο στη χρήση ενός headless browser από την πλευρά του εξυπηρετητή (server side). Σκοπός του είναι να επιτρέπει εκτέλεση javascript κώδικα που θα κάνει εξαγωγή περιεχομένου (scrapers) μέσω DOM, ώστε να αυτοματοποιήσει τις διαδικασίες [16]. Γίνεται εισαγωγή του URL της σελίδας και του URL του κώδικα Javascript και επιστρέφεται ένα RDF/XML έγγραφο. Είναι προσαρμοσμένος να εκτελείται σε περιβάλλοντα Windows, Mac OS, Linux. O Crowbar είναι κατασκευασμένος ώστε να λειτουργεί σε ένα περιβάλλον όσο το δυνατόν πιο κοντινό με ένα πρόγραμμα περιήγησης για να μπορούν να αποφεύγονται τα προβλήματα που προκύπτουν κατά το parsing λόγω των διαφορών στην DOM/Xpath υλοποίηση. Απαιτείται η χρήση του XULRunner για την εκτέλεση του Crowbar. 3.4 PhantomJS Είναι ένα headless webkit με javascript API. Έχει γρήγορη υποστήριξη για πολλά πρότυπα όπως χειρισμός DOM, CSS, JSON, Canvas, SVG [16]. Αποτελεί μια βέλτιστη επιλογή για έλεγχο διαδικτυακών εφαρμογών, scraping ιστοτόπων, παρακολούθηση σελίδων, SVG (Scalable Vector Graphics), απεικόνιση ιστοσελίδων, PDF μετατροπή και για πολλές άλλες χρήσεις. Είναι συμβατό με Linux, Windows, MAC OSX και Free BSD. Είναι γραμμένο σε 33

34 JavaScript ή CoffeeScript. Ο PhantomJS μπορεί να συνεργαστεί με διάφορες υπηρεσίες και API όπως JSONP, YQL, Jasmine Driver, τα οποία συζητούνται παρακάτω: - To Javascript Object Notation είναι ένα ελαφρύ ανοιχτό πρότυπο που βασίζεται στο κείμενο σχεδιασμένο για ανθρώπινη ανταλλαγή δεδομένων. Προέρχεται από την Javascript για αναπαράσταση απλών τύπων δεδομένων και συσχετισμένων πινάκων που ονομάζονται αντικείμενα. Παρόλη την εξάρτηση με την Javascript, έχει parsers για πολλές γλώσσες [21]. - H Yahoo Query Language είναι μια εντυπωσιακή SQL εκδοχή που επιτρέπει την διενέργεια ερωτημάτων, φιλτράρισμα και συνένωση δεδομένων μέσω Web Services. Με την YQL οι εφαρμογές τρέχουν γρηγορότερα και σε λιγότερες γραμμές κώδικα. Η Yahoo και άλλοι ιστότοποι κάνουν τα δομημένα δεδομένα τους διαθέσιμα σε αυτούς που αναπτύσσουν λογισμικό μέσω web services [22]. Για να αποκτήσουν πρόσβαση και να θέσουν ερωτήματα σε αυτές τις υπηρεσίες οι προγραμματιστές υπομένουν τις δυσκολίες ώστε να εντοπίσουν τα κατάλληλα URL και την απαραίτητη τεκμηρίωση αυτών των web services. - Το Jasmine είναι ένα behavior driven development περιβάλλον για έλεγχο JavaScript κώδικα. Δεν εξαρτάται από άλλα περιβάλλοντα Javascript, δεν απαιτεί DOM και έχει ξεκάθαρη σύνταξη για την διενέργεια των ελέγχων. Μπορεί να εκτελεστεί σε όποιο περιβάλλον υποστηρίζει JavaScript: στατική σελίδα, server side περιβάλλοντα όπως το Node.js. 34

35 3.5 Συγκεντρωτικά χαρακτηριστικά των Headless Browsers Headless Browser Πίνακας 1. Συγκεντρωτικά χαρακτηριστικά των Headless Browser Πλευρά εκτέλεσης Απαιτείται ή Συνεργάζεται με Λειτουργικό Εκτέλεσης Γλώσσα Υλοποίησης Επιστρέφει Crawbar Simile Server side XULRunner Windows, Linux, Mac OS Java RDF/XML HtmlUnit Client side JUnitή TestNG Windows, Linux, Mac OS Java Κείμενο ή XML DOM ή μια συλλογή φορμών, πινάκων και συνδέσμων JXBroswer Client side Internet Explorer, Mozilla Windows, Linux, Mac OS Java Το περιεχόμενο ενός browser με την μορφή XML DOM Phantom JS Client Side WebKit, JSONP, QUnit, Jasmine Driver Linux, Windows, MAC OS X και FreeBSD JavaScript, CoffeeScript XML DOM 3.6 Επιλογή μηχανής για φόρτωση(rendering) ιστοσελίδων Δημιουργία περιπτώσεων ελέγχου Για την επιλογή της κατάλληλης μηχανής Headless Browsing έγιναν μια σειρά από ελέγχους και ελέγχθηκαν οι 3 πιο δημοφιλείς μηχανές (JXBroswer, Crowbar, PhantomJS). Δημιουργήθηκαν 3 ιστοσελίδες ελέγχου, ώστε να μπορέσουν να αναδυθούν κάποια πλεονεκτήματα όπως και τα μειονεκτήματα της χρήσης αυτών των μηχανών. Οι ιστοσελίδες θα έπρεπε να γίνουν render και από τις τρεις μηχανές. Οι 3 αυτές ιστοσελίδες είχαν η καθεμία από μία ιδιαιτερότητα. Η πρώτη περιείχε μια ανακατεύθυνση σε έναν άλλο ιστόχωρο, η δεύτερη περιείχε ένα iframe στο οποίο υπήρχε ένα nested iframe το οποίο με την σειρά του μπορεί να δείχνει σε έναν άλλο ιστότοπο ή σε κάποια διαφήμιση. Τέλος, η τρίτη ιστοσελίδα που χρησιμοποιήθηκε για τον έλεγχο των μηχανών ήταν μια AJAX ιστοσελίδα. 35

36 Περίπτωση 1 simpleredirection.html Εικόνα 7. Παράδειγμα ανακατεύθυνσης συνδέσμου 36

37 Περίπτωση 2 ifrm.html Περιλαμβάνει τρία html αρχεία με όνομα ifrm.html, basics_demo.html, basics_demo2.html. To ifrm.html περιέχει ένα iframe το οποίο καλεί το basics_demo.html το οποίο περιέχει ένα iframe το οποίο καλεί το simpleredirection.html που μπορεί να περιέχει ανακατεύθυνση σε άλλο ιστότοπο ή σε κάποια διαφήμιση. Με τη σειρά που αναφέρθηκαν ο html κώδικας ακολουθεί στη συνέχεια. Εικόνα 8. Παράδειγμα προβολής περιεχομένου ιστοσελίδας από iframe Εικόνα 9. Παράδειγμα εμφωλευμένων iframes 37

38 Εικόνα 10. Παράδειγμα εμφωλευμένων iframes Περίπτωση 3 testpage3 Είναι μια AJAX ιστοσελίδα που βρίσκεται στη διεύθυνση Συμπεριφορά JXBroswer JXBroswer Για την εκτέλεση των πειραμάτων απαιτούνται IDE, Java, Wamp server, xamp server ή οποιοσδήποτε άλλος και οι βιβλιοθήκες που δίνει η ομάδα ανάπτυξης του JXBroswer μαζί με την άδεια εκτέλεσης του κώδικα. Για να απεικονιστούν οι σελίδες μέσω του JXBroswer σε localhost απαιτείται αρχικά η τοποθέτηση των σελίδων στο www και η εκκίνηση του wamp. Για τις απαιτήσεις των δοκιμασιών δημιουργήθηκε μια εφαρμογή στην οποία εισάγεται από τη χρήστη το url που πρέπει να γίνει render στο κατάλληλο πλαίσιο κειμένου κάτω δεξιά όπως φαίνεται στην εικόνα και πατώντας το κουμπί η σελίδα γίνεται render και εμφανίζεται όπως σε έναν κανονικό περιηγητή. Όταν θέλουμε να εισαχθεί σελίδα από το localhost η διεύθυνση εισάγεται ως εξής: localhost/pagename.html. 38

39 Click for rendering Πλαίσιο κειμένου Εικόνα 11. ScreenShot από την εκτέλεση του JXBroswer Κάνοντας χρήση του JXBroswer η σελίδα που είχε ένα απλό Link για ανακατεύθυνση έγινε κανονικά render. Αντίθετα, η σελίδα με τα nested iframes παρουσίασε κάποιο σφάλμα στο δεύτερο iframe. Τέλος, η AJAX ιστοσελίδα έγινε render με κάποια μικρή καθυστέρηση Συμπεριφορά PhantomJS Για την εκτέλεση πειραμάτων στον PhantomJS απαιτείται η λήψη των DLL αρχείων που είναι διαθέσιμα μαζί με το εκτελέσιμο αρχείο PhantomJS.exe. Η εκτέλεση γίνεται μέσω κονσόλας κάνοντας κλήση javascript αρχεία τα οποία εκτελούν κάποια λειτουργία στις σελίδες που του δίνουμε ως όρισμα. Όσο αναφορά το test set που χτίσαμε την simpleredirection την κάνει κανονικά render, ενώ εμφανίζει πρόβλημα στην ifrm και δεν μπορεί να κάνει parse το δεύτερο iframe που είναι εμφωλευμένο. Τέλος, μπορεί να κάνει render την AJAX σελίδα με καθυστέρηση μεγαλύτερη από αυτή του JXBroswer. Φαίνεται πολύ υποσχόμενος αν αναλογιστούμε ότι σε συνδυασμό με την JSON παρέχεται ένας μεγάλος αριθμός εργαλείων ώστε να μπορέσουμε να χειριστούμε με διάφορους τρόπους το υλικό των σελίδων. 39

40 3.6.4 Συμπεριφορά Crowbar O crowbar τρέχει με την παρουσία του XULRunner και για να γίνει η εκτέλεση του πρέπει να εγκατασταθεί το ακόλουθο project από την Όσο αναφορά το testset που κατασκευάσαμε, η simpleredirection γίνεται κανονικά render ενώ εμφανίζει πρόβλημα στην ifrm και δεν μπορεί να κάνει parse το δεύτερο iframe που είναι εμφωλευμένο. Τέλος, μπορεί να κάνει render την ajax σελίδα με καθυστέρηση μεγαλύτερη από αυτή των JXBroswer και PhantomJS. Μπορούμε να πούμε ότι είναι λίγο δυσκίνητος ώστε να μπορέσουμε να παρέμβουμε κάνοντας κάτι δικό μας ή βελτιώνοντας κάποιο πρόβλημα. Τέλος, δεν πρέπει να ξεχάσουμε ότι είναι πάρα πολύ αργός ακόμα και για μικρές σελίδες με ελάχιστο κώδικα Επιλογή Τεχνολογίας Για να μπορέσει να γίνει η επιλογή της τεχνολογίας που θα χρησιμοποιηθεί για τον σκοπό αυτής της διπλωματικής πρέπει να κάνουμε αναφορά σε 3 τεχνικούς άξονες που διαφοροποιούν ο καθένας για δικό του λόγο την μια μηχανή από τις υπόλοιπες. Χειρισμός nested inline frames(κάποιες μηχανές που κάνουν headless browsing) παρουσιάζουν σφάλμα στο rendering όταν υπάρχουν εμφωλευμένα nested iframes. Απόδοση της κάθε μηχανής. Για τις απαιτήσεις του προβλήματος αναζητούμε μια μηχανή η οποία μπορεί να κάνει renderένα τεράστιο αριθμό σελίδων που θα προέρχονται από crawling σε ένα εύλογο χρονικό διάστημα. Αποθήκευση του DOM περιεχομένου που προέρχεται από το render της html σελίδας. Στην προκειμένη περίπτωση χρειάζεται να μπορούμε να αποθηκεύουμε σε μια βάση το xml περιεχόμενο της κάθε σελίδας ώστε να μπορούμε να το αξιολογήσουμε στην συνέχεια Αποτελέσματα πειραμάτων αξιολόγησης Headless Browsers Χειρισμός nested inline frames: Έχοντας έλθει σε επικοινωνία με την ομάδα teamdev που ηγείται του project JXBroswer μας διαβεβαίωσε ότι υποστηρίζει nested iframes ο JXBroswer. Απόδοση της κάθε μηχανής: Αξιολογήσαμε τον χρόνο που κάνει η κάθε μηχανή για να κάνει render έναν αριθμό ιστοσελίδων αυξάνοντας τον αριθμό των επαναλήψεων εκτέλεσης του αλγορίθμου. Αυτό εξυπηρετεί ώστε να μπορέσουμε να βρούμε την καθυστέρηση που συσσωρεύεται από τις πολλές επαναλήψεις και να αναγνωρίσουμε ποια μηχανή υστερεί σε ταχύτητα. Τα αποτελέσματα είναι εμφανή στην συνέχεια. 40

41 Πίνακας 2 Χρόνοι εκτέλεσης των JXBroswer και PhantomJS Χρόνοι Εκτέλεσης (secs) Αριθμός Επαναλήψεων JXBroswer PhantomJS Διάγραμμα 1 Χρόνοι Εκτέλεσης Rendering ιστοσελίδων για τον JXBroswer και PhantomJS Αποθήκευση του DOM περιεχομένου: Μέσω του JXBroswer μπορούμε να χειριστούμε το XML Dom μέσω του JDOM API και να αποκτήσουμε μέσω JDBC ικανότητα πρόσβασης σε μια βάση δεδομένων. Σε αντίθεση με το παραπάνω ο PhantomJS δεν δίνει τη δυνατότητα να αποθηκεύσουμε το DOM περιεχόμενο απευθείας σε μια βάση δεδομένων παρά μόνο κάνοντας το αποθήκευση σε μια άλλη ιστοσελίδα και από εκεί μετά να το εισάγουμε στη βάση. Στον παρακάτω πίνακα υπάρχει μια συνοπτική περιγραφή των όσο αναφέραμε παραπάνω. 41

42 Πίνακας 3 Σύγκριση JXBroswer και PhantomJS JXBroswer PhantomJS Nested iframes Ναι Όχι Performance Γραμμική αύξηση του χρόνου εκτέλεσης Εκθετική αύξηση του χρόνου εκτέλεσης DOM handling JDOM Αδύνατο κάνοντας χρήση μόνο JavaScript Πίνακας 4 Σύγκριση JXBroswer και PhantomJS 42

43 4. Διάσχιση διαδικτύου (Web Crawling) 4.1 Εισαγωγή στο Web Crawling Οι Web crawlers είναι προγράμματα που εκμεταλλεύονται τη δομή γράφου του διαδικτύου για να μετακινούνται από σελίδα σε σελίδα. Όταν πρωτοεμφανίστηκαν αυτού του είδους τα προγράμματα ονομάζονταν επίσης wanderers, robots, spiders, fishes και worms. Μπορεί να παρατηρηθεί πως η λέξη crawler (ερπετό) δεν είναι ενδεικτική της ταχύτητας αυτών των προγραμμάτων, αφού μπορούν να είναι αρκετά γρήγορα [25]. Από τη δική μας εμπειρία, μπορέσαμε να κάνουμε crawl σε δεκάδες χιλιάδες σελίδες μέσα σε λίγα λεπτά. Εξ αρχής, ένα βασικό κίνητρο στη σχεδίαση web crawlers ήταν η ανάκτηση ιστοσελίδων και η προσθήκη αυτών ή των απεικονίσεών τους σε ένα τοπικό repository. Ένα τέτοιο repository μπορεί στη συνέχεια να εξυπηρετήσει συγκεκριμένες ανάγκες εφαρμογών όπως αυτών των διαδικτυακών μηχανών αναζήτησης. Στην απλούστερή του μορφή ένας crawler αρχίζει από μία γονική σελίδα και έπειτα χρησιμοποιεί τις εξωτερικές συνδέσεις (links) που αυτή περιέχει για να μεταβεί σε άλλες σελίδες [26]. Η διαδικασία επαναλαμβάνεται με τις νέες σελίδες να προσφέρουν περισσότερες εξωτερικές συνδέσεις για μετάβαση, μέχρι ένας ικανοποιητικός αριθμός σελίδων να αναγνωριστεί ή ένας στόχος υψηλότερου επιπέδου να επιτευχθεί. Πίσω από αυτή την απλή περιγραφή κρύβεται μια σειρά από ζητήματα που σχετίζονται με τις συνδέσεις δικτύου, spider traps, κανονικοποίηση URLs, parsing σελίδων HTML και η ηθική της ενασχόλησης με απομακρυσμένους web servers. Για την ακρίβεια, ένας σύγχρονος crawler μπορεί να αποτελεί ένα από τα πιο σύνθετα μεν, ευαίσθητα δε, τμήματα της εφαρμογής στην οποία ενσωματώνεται. Αν το διαδίκτυο ήταν μια στατική συλλογή σελίδων, θα είχε μικρή μακροχρόνια χρήση του crawling. Από τη στιγμή που όλες οι σελίδες θα είχαν φορτωθεί σε ένα repository (όπως η βάση δεδομένων μιας μηχανής αναζήτησης), δε θα υπήρχε πλέον ανάγκη για crawling. Ωστόσο, το διαδίκτυο είναι μια δυναμική οντότητα με υποχώρους που εξελίσσονται σε διαφορετικούς και συχνά ραγδαίους ρυθμούς. Επομένως, υπάρχει μια συνεχής ανάγκη για crawlers προκειμένου να βοηθούν τις εφαρμογές να παραμένουν ενημερωμένες όσο νέες σελίδες προστίθενται και παλιές διαγράφονται, μετακινούνται ή τροποποιούνται. Μηχανές αναζήτησης γενικού σκοπού που εξυπηρετούν σημεία εισόδου σε ιστοσελίδες παλεύουν να επιτύχουν όσο το δυνατό ευρύτερη κάλυψη. Χρησιμοποιούνται web crawlers για τη συντήρηση των ευρετηρίων των βάσεων δεδομένων τους μειώνοντας το κόστος του crawling και της ευρετηρίασης από τα εκατομμύρια των ερωτημάτων που λαμβάνουν. Αυτοί οι crawlers είναι τυφλοί και εξαντλητικοί στην προσέγγισή τους, με βασικό τους στόχο την πλήρη κάλυψη [26]. Σε αντίθεση, οι crawlers μπορεί να είναι επιλεκτικοί όσον αφορά τις σελίδες που φορτώνουν και γι αυτό είναι γνωστοί ως preferential ή heuristicbased crawlers. Αυτοί μπορούν να χρησιμοποιηθούν για την κατασκευή στοχευόμενων 43

44 repositories, την αυτοματοποίηση ανακάλυψης πηγών και τη διευκόλυνση πρακτόρων λογισμικού. Οι επιλεκτικοί crawlers οι οποίοι έχουν φτιαχτεί για την ανάκτηση σελίδων που αφορούν ένα συγκεκριμένο θέμα ονομάζονται τοπικοί ή στοχευόμενοι crawlers. Η συνέργεια μεταξύ μηχανών αναζήτησης και τοπικών crawlers είναι φυσικά πιθανή με τους δεύτερους να αναλαμβάνουν την ειδική ευθύνη της αναγνώρισης περιοχών σχετικών με συγκεκριμένες κοινότητες χρηστών. Τεχνικές για preferential crawling που επικεντρώνονται στη βελτίωση της ανανέωσης ( φρεσκάδας ) μιας μηχανής αναζήτησης έχουν επίσης προταθεί [3]. Παρόλο που ένα σημαντικό μέρος αυτού του κεφαλαίου έχει αφιερωθεί στην περιγραφή των crawlers σε γενικό επίπεδο, περισσότερη βαρύτητα, ειδικά στα τελευταία μέρη, δίνεται κυρίως στους τοπικούς crawlers. Υπάρχουν διάφοροι παράγοντες που καθιστούν τους τοπικούς crawlers ένα ενδιαφέρον αντικείμενο μελέτης. Μία βασική ερώτηση που υποκίνησε πολλή έρευνα είναι «πώς επιτυγχάνεται η επιλεκτικότητα ενός crawler;» Συμφραζόμενα, όπως οι στόχοι της γονικής εφαρμογής, λεξιλογικά σήματα μέσα στις ιστοσελίδες και επίσης, χαρακτηριστικά του γράφου που κατασκευάστηκε από τις σελίδες που είναι ήδη γνωστές, όλα αυτά είναι λογικά στοιχεία για εκμετάλλευση. Επιπλέον, οι crawlers μπορούν, και συχνά το κάνουν, να διαφέρουν όσον αφορά τους μηχανισμούς με τους οποίους χρησιμοποιούν τα στοιχεία που έχουν στη διάθεσή τους. Μία δεύτερη σημαντική παράμετρος που είναι σημαντικό να ληφθεί υπόψη όταν μελετάμε τους crawlers, και ειδικά τους τοπικούς crawlers, είναι η φύση της εργασίας του crawling. Χαρακτηριστικά του crawl όπως ερωτήματα και/ή λέξεις-κλειδιά που παρέχονται σαν κριτήρια εισόδου στον crawler, προφίλ χρηστών και επιθυμητές ιδιότητες των σελίδων που θα φορτωθούν (παρόμοιες σελίδες, δημοφιλείς σελίδες, επίσημες σελίδες κ.τ.λ.) μπορούν να οδηγήσουν σε σημαντικές διαφορές στη σχεδίαση και την υλοποίηση των crawlers. Η διαδικασία μπορεί να περιορίζεται από παραμέτρους όπως ο μέγιστος αριθμός σελίδων που θα φορτωθούν ή η διαθέσιμη μνήμη. Επομένως, μια εργασία διάσχυσης μπορεί να θεωρηθεί σαν ένα πρόβλημα αναζήτησης με περιορισμούς και πολλούς σκοπούς. Ωστόσο, η μεγάλη ποικιλία των αντικειμενικών συναρτήσεων, σε συνδυασμό με την έλλειψη των κατάλληλων γνώσεων που αφορούν το χώρο αναζήτησης, καθιστούν το πρόβλημα δύσκολο. Επιπλέον, ένας crawler μπορεί να έχει να αντιμετωπίσει θέματα βελτιστοποίησης όπως τα τοπικά και τα ολικά βέλτιστα. Η τελευταία βασική παράμετρος αφορά τις στρατηγικές αξιολόγησης των crawlers που είναι απαραίτητες για να γίνουν συγκρίσεις και να καθοριστούν οι συνθήκες κάτω από τις οποίες ο ένας ή ο άλλος crawler θα δουλέψει καλύτερα. Οι συγκρίσεις πρέπει να είναι δίκαιες και να γίνονται αντλώντας στατιστικά σημαντικές διαφορές. Αυτό απαιτεί όχι μόνο έναν επαρκή αριθμό από crawl runs, αλλά επίσης μεθοδολογίες που λαμβάνουν υπόψη τη χρονική φύση των αποτελεσμάτων των crawlers. Σημαντικές προκλήσεις στην αξιολόγηση περιλαμβάνουν τη γενική μη-διαθεσιμότητα σχετικών σετ για συγκεκριμένα θέματα ή ερωτήματα. Επομένως, η αξιολόγηση τυπικά βασίζεται στον ορισμό κριτηρίων για την εκτίμηση της σημαντικότητας των σελίδων. 44

45 4.1.1 Κατασκευάζοντας μία crawling υποδομή Ο crawler διατηρεί μια λίστα από URLs που δεν έχει επισκεφτεί η οποία ονομάζεται σύνορο (frontier). Η λίστα αρχικοποιείται με γονικά URLs τα οποία μπορεί να παρέχονται από ένα χρήστη ή από ένα άλλο πρόγραμμα. Κάθε επανάληψη διάσχισης περιλαμβάνει την επιλογή του επόμενου URL για διάσχιση από τη λίστα (frontier), τη φόρτωση της σελίδας που αντιστοιχεί στο URL μέσω HTTP, το parsing της ανακτημένης σελίδας για να εξαχθούν τα URLs και οι ειδικές πληροφορίες της εφαρμογής και τέλος, η προσθήκη των μηεπισκεπτόμενων URLs στη λίστα. Πριν μπουν τα URLs στη λίστα ενδεχομένως να τους ανατεθεί ένα σκορ (μια τιμή) που αντιπροσωπεύει το εκτιμώμενο όφελος από την επίσκεψη της σελίδας στην οποία αντιστοιχεί το URL. Η διαδικασία του crawling μπορεί να τερματιστεί όταν έχει γίνει crawl σε ένα συγκεκριμένο αριθμό σελίδων. Αν ο crawler είναι έτοιμος να κάνει crawl μια άλλη σελίδα και η λίστα είναι άδεια, η κατάσταση σηματοδοτεί ένα αδιέξοδο για τον crawler. Ο crawler δεν έχει άλλη σελίδα να φορτώσει και επομένως σταματά. Το crawling μπορεί να θεωρηθεί ως ένα πρόβλημα αναζήτησης σε γράφο. Το διαδίκτυο θεωρείται ένας μεγάλος γράφος με σελίδες για κόμβους και υπερσυνδέσμους για ακμές. Ένας crawler ξεκινά από μερικούς από τους κόμβους και έπειτα ακολουθεί τις ακμές για να φτάσει σε άλλους κόμβους. Η διαδικασία φόρτωσης μιας σελίδας και η εξαγωγή των συνδέσμων που περιέχει είναι ανάλογη της εξάπλωσης ενός κόμβου στην αναζήτηση γράφου. Ένας τοπικός crawler προσπαθεί να ακολουθεί ακμές που αναμένεται να οδηγήσουν σε τμήματα του γράφου που είναι σχετικά με το θέμα Frontier (λίστα μη-επισκεπτόμενων URLs) Frontier είναι η λίστα ενός crawler που περιέχει τα URLs με τις μη-επισκεπτόμενες σελίδες. Στην ορολογία της αναζήτησης γράφου frontier είναι η ανοιχτή λίστα (open list) των κόμβων που δεν έχουν επεκταθεί (επισκεφτεί). Παρόλο που μπορεί να είναι απαραίτητο η λίστα αυτή να αποθηκευτεί στο δίσκο για crawlers μεγάλης κλίμακας, μπορεί να αναπαρασταθεί η λίστα αυτή σαν μία δομή δεδομένων που υπάρχει στη μνήμη για απλότητα. Βασισμένος στη διαθέσιμη μνήμη, μπορεί κάποιος να καθορίσει το μέγιστο μέγεθος της λίστας [27]. Λόγω του μεγάλου μεγέθους μνήμης που είναι διαθέσιμο στους σημερινούς υπολογιστές, ένα μέγεθος λίστας (frontier) της τάξης των URLs ή και μεγαλύτερο δεν είναι εξαιρετικό. Δοσμένου ενός μέγιστου μεγέθους της λίστας frontier είναι χρήσιμος ένας μηχανισμός ώστε να αποφασιστούν ποια URLs πρέπει να αγνοηθούν όταν φτάσει η λίστα κάποιο όριο. Ας σημειωθεί πως η λίστα μπορεί να συμπληρωθεί γρήγορα καθώς γίνεται crawl στις σελίδες. Κάποιος μπορεί να περιμένει περίπου URLs στη λίστα με ένα crawl των σελίδων, υποθέτοντας κατά μέσο όρο 7 συνδέσμους ανά σελίδα. 45

46 Εικόνα 12. Σχηματική αναπαράσταση βρόγχου εκτέλεσης Crawler Η λίστα μπορεί να υλοποιηθεί σαν FIFO ουρά οπότε έχουμε έναν crawler πρώτα κατά πλάτος ο οποίος μπορεί να χρησιμοποιηθεί για να κάνει τυφλό crawl στο διαδίκτυο. Το επόμενο URL στο οποίο θα γίνει crawl προέρχεται από την κορυφή της ουράς και τα καινούρια URLs προστίθενται στο τέλος της ουράς. Εξαιτίας του περιορισμένου μεγέθους της λίστας με τις μη-επισκεπτόμενες σελίδες, χρειάζεται να επιβεβαιωθεί το γεγονός πως δεν προστίθενται διπλότυπα URLs στη λίστα. Μία γραμμική αναζήτηση για να διαπιστώσουμε αν ένα νέο URL που έχει εξαχθεί υπάρχει ήδη στη λίστα κοστίζει υπολογιστικά. Μία λύση είναι η δέσμευση μερικής διαθέσιμης μνήμης για τη διατήρηση ενός ξεχωριστού πίνακα κατακερματισμού (με το URLσαν κλειδί) για να αποθηκεύουμε κάθε URL της λίστας για γρήγορο ψάξιμο. Ο πίνακας κατακερματισμού πρέπει να διατηρείται συγχρονισμένος με την πραγματική λίστα. Μία πιο χρονοβόρα εναλλακτική είναι η διατήρηση της ίδιας της λίστας σαν πίνακα κατακερματισμού (πάλι με το URLσαν κλειδί). Αυτό θα μας παρείχε γρήγορο ψάξιμο για την αποφυγή διπλότυπων URLs. Ωστόσο, κάθε φορά που ο crawler χρειάζεται ένα URLγια να κάνει crawl, θα έπρεπε να ψάξει και να επιλέξει το URL με το νωρίτερο time-stamp (ο χρόνος στον οποίο ένα URL προστέθηκε στη λίστα). Αν η μνήμη δεν παίζει σημαντικό ρόλο όσο η ταχύτητα, η πρώτη λύση είναι προτιμώμενη. Όταν η λίστα φτάσει στο μέγιστο μέγεθος, ο πρώτα κατά πλάτος crawler 46

47 μπορεί να προσθέσει ένα μόνο μη-επισκεπτόμενο URL από τη νέα σελίδα στην οποία έχει γίνει crawl. Αν η λίστα υλοποιηθεί σαν μία ουρά προτεραιότητας δημιουργείται ένας preferential crawler ο οποίος είναι επίσης γνωστός σαν best-first crawler. Η ουρά προτεραιότητας μπορεί να είναι ένας δυναμικός πίνακας ο οποίος κρατείται συνέχεια ταξινομημένος σύμφωνα με το εκτιμώμενο σκορ των μη-επισκεπτόμενων URLs. Σε κάθε βήμα, το καλύτερο URL επιλέγεται από την κορυφή της ουράς. Όταν η αντίστοιχη σελίδα φορτωθεί, τα URLs εξάγονται από αυτήν και μαρκάρονται με ένα σκορ βάσει κάποιας ευρετικής μεθόδου. Έπειτα προστίθενται στη λίστα με τέτοιο τρόπο ώστε η σειρά προτεραιότητας στην ουρά να διατηρείται. Μπορεί να αποφευχθεί η διπλοτυπία URLs στη λίστα κρατώντας ξεχωριστό πίνακα κατακερματισμού για ψάξιμο. Μόλις το μέγιστο μέγεθος της λίστας (ΜΑΧ) ξεπεραστεί, μόνο τα καλύτερα ΜΑΧ URLsκρατιούνται στη λίστα. Αν ο crawler βρει τη λίστα άδεια όταν χρειαστεί το επόμενο URL για να κάνει crawl, η διαδικασία του crawling σταματά. Με μία μεγάλη τιμή του ΜΑΧ και διάφορα γονικά URLs η λίστα σπάνια θα βρεθεί σε κενή κατάσταση. Μερικές φορές, ένας crawler μπορεί να αντιμετωπίσει μια spider trap που τον οδηγεί σε έναν μεγάλο αριθμό διαφορετικών URLs που παραπέμπουν στην ίδια σελίδα. Ένας τρόπος να αντιμετωπιστεί αυτό το πρόβλημα είναι ο περιορισμός του αριθμού των σελίδων από ένα δοσμένο domainστις οποίες μπορεί ο crawler να έχει πρόσβαση. Ο κώδικας που σχετίζεται με τη λίστα μη-επισκεπτόμενων URLs μπορεί να επιβεβαιώνει πως κάθε συνεχόμενη αλληλουχία από k (π.χ. 100) URLs που επιλέγονται από τον crawler περιέχει μόνο ένα URL από ένα πλήρως κατάλληλο hostname (π.χ. Σαν παρενέργεια, ο crawler είναι ευγενικός (polite) αφού δεν επισκέπτεται την ίδια ιστοσελίδα συχνά και οι σελίδες στις οποίες γίνεται crawlτείνουν να είναι διαφορετικού είδους Ιστορικό και η αποθήκη σελίδων Το ιστορικό του crawl είναι μία time-stamped λίστα από URLs που φορτώθηκαν από τον crawler. Ουσιαστικά, δείχνει το μονοπάτι του crawler μέσα στο διαδίκτυο ξεκινώντας από τις γονικές σελίδες. Καταχώρηση URL γίνεται μέσα στο ιστορικό μόνο αφού φορτωθεί η αντίστοιχη σελίδα. Αυτό το ιστορικό μπορεί να χρησιμοποιηθεί για μετά το crawl ανάλυση και αξιολόγηση. Για παράδειγμα, μπορούμε να συσχετίσουμε μία τιμή με κάθε σελίδα στο crawlμονοπάτι και να αναγνωρίσουμε σημαντικά γεγονότα (όπως την ανακάλυψη μιας εξαιρετικής πηγής). Ενώ το ιστορικό μπορεί να αποθηκεύεται περιστασιακά στο δίσκο, διατηρείται επίσης σαν δομή δεδομένων στη μνήμη. Αυτό καθιστά δυνατό ένα γρήγορο ψάξιμο για να ελέγξουμε αν σε μία σελίδα έχει γίνει crawlή όχι. Αυτός ο έλεγχος είναι σημαντικός προκειμένου να αποφευχθεί η επαναλαμβανόμενη επίσκεψη σελίδων και επίσης για να αποφύγουμε την προσθήκη των URLs των σελίδων στις οποίες έχει γίνει crawl στη λίστα περιορισμένου μεγέθους των μη-επισκεπτόμενων URLs. Για τους ίδιους λόγους είναι σημαντικό να κανονικοποιούμε τα URLsπριν τα προσθέσουμε στο ιστορικό. Μόλις μια σελίδα φορτωθεί, μπορεί να αποθηκευτεί/δεικτοδοτηθεί για την κύρια εφαρμογή (όπως μία μηχανή αναζήτησης). Στην απλούστερή της μορφή, μία αποθήκη 47

48 σελίδων (page repository) μπορεί να αποθηκεύσει τις σελίδες στις οποίες έχει γίνει crawlσαν ξεχωριστά αρχεία. Σε αυτή την περίπτωση, κάθε σελίδα πρέπει να αντιστοιχίζεται με ένα ξεχωριστό όνομα αρχείου. Ένας τρόπος να γίνει αυτό είναι να απεικονίσουμε το URL κάθε σελίδας με ένα συμπαγές αλφαριθμητικό χρησιμοποιώντας κάποιας μορφής συνάρτηση κατακερματισμού με χαμηλή πιθανότητα συγκρούσεων (για τη μοναδικότητα των ονομάτων των αρχείων). Η προκύπτουσα τιμή κατακερματισμού χρησιμοποιείται σαν όνομα του αρχείου. Χρησιμοποιώντας την MD5 one-way συνάρτηση κατακερματισμού που παρέχει έναν 128-bit κώδικα κατακερματισμού για κάθε URL. Υλοποιήσεις του MD5 και άλλων αλγόριθμων κατακερματισμού υπάρχουν διαθέσιμες σε διάφορες γλώσσες προγραμματισμού. Η 128-bit τιμή κατακερματισμού έπειτα μετατρέπεται σε ένα δεκαεξαδικό ισοδύναμο 32 χαρακτήρων για να πάρουμε το όνομα του αρχείου. Για παράδειγμα, το περιεχόμενο του αποθηκεύεται σε ένα αρχείο με το όνομα e1d01fcb ec584. Με αυτό τον τρόπο έχουμε ονόματα αρχείων σταθερού μεγέθους για URLs αυθαίρετου μεγέθους. (Φυσικά, αν η εφαρμογή χρειάζεται να κάνει cacheμόνο μερικές χιλιάδες σελίδες, τότε κάποιος θα μπορούσε να χρησιμοποιήσει έναν απλούστερο μηχανισμό κατακερματισμού.) Η αποθήκη σελίδων (page repository) μπορεί επίσης να χρησιμοποιηθεί για να ελέγξουμε αν έχει ήδη γίνει crawlσε ένα URL μετατρέποντας το στο 32 χαρακτήρων όνομα του αρχείου του και ελέγχοντας για την ύπαρξη αυτού του αρχείου στην αποθήκη. Σε μερικές περιπτώσεις αυτό μπορεί να καταστήσει μη-απαραίτητη τη χρήση μιας δομής δεδομένων του ιστορικού στη μνήμη Φόρτωση σελίδων Προκειμένου να φορτώθει μία ιστοσελίδα, χρειαζόμαστε έναν HTTP client ο οποίος στέλνει ένα HTTP αίτημα για μία σελίδα και διαβάζει την απόκριση. Ο client πρέπει να κάνει διαλείμματα για να διασφαλίσει το γεγονός πως δεν σπαταλιέται χρόνος σε αργούς servers ή στο διάβασμα μεγάλων σελίδων. Στην πραγματικότητα, μπορούμε να περιορίσουμε τον client ώστε να κατεβάζει μόνο τα πρώτα ΚΒ κάθε σελίδας. Ο client πρέπει να αναλύσει τις επικεφαλίδες (headers) της απόκρισης για κώδικες κατάστασης και ανακατευθύνσεις. Επίσης, μπορεί να χρειάζεται ανάλυση και αποθήκευση της επικεφαλίδας που τροποποιήθηκε τελευταία προκειμένου να καθορίσουμε την ηλικία του εγγράφου [26]. Ο έλεγχος λαθών και η αντιμετώπιση εξαιρέσεων είναι σημαντικά κατά τη διάρκεια της διαδικασίας φόρτωσης σελίδων καθώς πρέπει να αντιμετωπιστούν εκατομμύρια απομακρυσμένων servers χρησιμοποιώντας τον ίδιο κώδικα. Επιπροσθέτως, θα ήταν καλό να γίνει συλλογή στατιστικών στα διαλείμματα και τους κώδικες καταστάσεις για την αναγνώριση προβλημάτων ή την αυτόματη αλλαγή των τιμών στα διαλείμματα. Σύγχρονες γλώσσες προγραμματισμού όπως η Java και η Perl παρέχουν πολύ απλές και συχνά πολλαπλές προγραμματιστικές διεπαφές για την φόρτωση ιστοσελίδων. Ωστόσο, πρέπει να είμαστε προσεκτικοί στη χρησιμοποίηση διεπαφών υψηλού επιπέδου καθώς μπορεί να είναι δυσκολότερη η εύρεση προβλημάτων χαμηλότερου επιπέδου. Για παράδειγμα, στη Java κάποιος μπορεί να θέλει να χρησιμοποιήσει την κλάση java.net.socket για να στείλει HTTP αιτήματα αντί για την πιο αυτοματοποιημένη java.net.httpurlconnection κλάση. 48

49 Καμία συζήτηση για το crawling σελίδων από το διαδίκτυο δεν μπορεί να είναι πλήρης χωρίς να γίνει αναφορά στο πρωτόκολλο Robot Exclusion. Το πρωτόκολλο αυτό παρέχει ένα μηχανισμό για τους διαχειριστές των web servers ώστε να καθορίζουν τις πολιτικές πρόσβασης στα αρχεία τους. Πιο συγκεκριμένα, να αναγνωρίζουν αρχεία στα οποία ενδεχομένως να μην είχε πρόσβαση κάποιος crawler. Αυτό γίνεται κρατώντας ένα αρχείο με το όνομα robots.txt κάτω από το root κατάλογο του εξυπηρετητή διαδικτύου (όπως π.χ. Αυτό το αρχείο παρέχει πολιτικές πρόσβασης για διαφορετικούς χρήστες-πράκτορες (robots ή crawlers). Μία τιμή χρήστη-πράκτορα με * υποδηλώνει μία εξ ορισμού πολιτική για οποιονδήποτε crawler που δε ταιριάζει με άλλες τιμές χρηστών-πρακτόρων στο αρχείο. Ένας αριθμός μη-επιτρεπόντων καταχωρήσεων μπορεί να παρέχεται για ένα χρήστη-πράκτορα. Οποιοδήποτε URL ξεκινά με την τιμή του πεδίου μη-επιτρεπτό δεν πρέπει να ανακτάται από έναν crawlerπου ταιριάζει με το χρήστηπράκτορα. Όταν ένας crawler θέλει να ανακτήσει μία σελίδα από έναν web server, πρέπει πρώτα να φορτώσει το κατάλληλο robots.txt αρχείο και να επιβεβαιώσει πως το URL που πρόκειται να φορτωθεί δεν είναι μη-επιτρεπτό. Περισσότερες πληροφορίες γι αυτό το πρωτόκολλο μπορούν να βρεθούν στο Είναι αποτελεσματικό να γίνεται cache των πολιτικών πρόσβασης ενός αριθμού servers που επισκέφτηκε πρόσφατα ο crawler. Αυτό θα οδηγούσε στην αποφυγή της πρόσβασης σε ένα robots.txt αρχείου κάθε φορά που θέλουμε να φορτωθεί σε ένα URL. Ωστόσο, πρέπει να διασφαλιστεί το γεγονός πως οι καταχωρήσεις στην κρυφή μνήμη(cache) παραμένουν επαρκώς ενημερωμένες Parsing Μόλις μία σελίδα φορτωθεί, πρέπει να αναλυθεί το περιεχόμενό της για να εξαχθεί πληροφορίες που θα τροφοδοτήσουν και ενδεχομένως θα κατευθύνουν το μελλοντικό μονοπάτι του crawler. Η ανάλυση αυτή (parsing) μπορεί απλά να περιλαμβάνει την εξαγωγή των υπερσυνδέσμων ή μπορεί να περιλαμβάνει την πιο πολύπλοκη διαδικασία του συμμαζέματος του HTML περιεχομένου προκειμένου να αναλύσουμε το HTML tag tree. Η ανάλυση μπορεί επίσης να περιλαμβάνει βήματα για τη μετατροπή των URL που έχουν εξαχθεί σε μία κανονική μορφή, την αφαίρεση stop words και το ψαλίδισμα των υπόλοιπων λέξεων. Αυτά τα κομμάτια της ανάλυσης περιγράφονται στη συνέχεια. Εξαγωγή URL και κανονικοποίηση HTML αναλυτές υπάρχουν ελεύθερα διαθέσιμοι για πολλές γλώσσες προγραμματισμού. Παρέχουν τη λειτουργικότητα της εύκολη αναγνώρισης HTML ετικετών (tags) και σχετικών ζευγαριών ιδιότητας-τιμής σε ένα δοσμένο έγγραφο HTML. Προκειμένου να εξαχθούν υπερσυνδέσμους από μία ιστοσελίδα, είναι εύκολο να χρησιμοποιήσουμε αυτούς τους αναλυτές για τη εύρεση anchor ετικετών και να συλλεχθούν τιμές που σχετίζονται με τις href ιδιότητες. Ωστόσο, δε χρειάζεται να μετατραπεί κανένα σχετικό URL σε απόλυτο URL χρησιμοποιώντας το βασικό URL της σελίδας από την οποία ανακτήθηκαν. 49

50 Διαφορετικά URL που αντιστοιχούν στην ίδια ιστοσελίδα μπορούν να απεικονιστούν με την ίδια κανονική μορφή. Αυτό είναι σημαντικό προκειμένου να αποφύγουμε τη φόρτωση της ίδιας σελίδας πολλές φορές. Παρακάτω δίνονται μερικά από τα βήματα που χρησιμοποιούνται σε τυπικές διαδικασίες κανονικοποίησης URL: Μετατροπή του πρωτοκόλλου και του hostname σε πεζά γράμματα. Για παράδειγμα, το μετατρέπεται σε Αφαίρεση της αγκύρωσης (anchor part) ή του τμήματος αναφοράς (referencepart) του URL. Επομένως, το γίνεται Πραγματοποίηση URLκωδικοποίησης για κάποιους συχνά χρησιμοποιούμενους χαρακτήρες όπως ο ~. Αυτό θα αποτρέψει τον crawlerαπό το να θεωρήσει το διαφορετικό URL από το edu/ %7Epant/. Σε κάποια URLs, γίνεται προσθήκη στο τέλος του χαρακτήρα /. Το το πρέπει να αντιστοιχούν στην ίδια κανονική μορφή. Η απόφαση για την προσθήκη στο τέλος ενός χαρακτήρα / ενδεχομένως να απαιτήσει τη χρήση ευριστικώνμεθόδων σε κάποιες περιπτώσεις. Χρήση ευριστικώνμεθόδων για την αναγνώριση προκαθορισμένων ιστοσελίδων. Ονόματα αρχείων όπως index.html ή index.htm θα μπορούν να αφαιρούνται από το URLμε την υπόθεση πως είναι τα προκαθορισμένα αρχεία. Αν αυτό είναι αλήθεια, θα ανακτηθούν χρησιμοποιώντας απλά το βασικό URL. Αφαίρεση των.. και του γονικού τους καταλόγου από το μονοπάτι του URL. Επομένως, το URLμονοπάτι /%7Epant/BizIntel/Seeds/../ODPSeeds.dat θα γίνει /%7Epant/BizIntel/ODPSeeds.dat. Διατήρηση των αριθμλων των θυρών ως έχουν στο URL, εκτός αν πρόκειται για τη θύρα 80. Εναλλακτικά, αφήνουμε τους αριθμούς των θυρών ως έχουν και προσθέτουμε τη θύρα 80 όταν δεν καθορίζεται αριθμός θύρας. Είναι σημαντική η συνεπείς όταν εφαρμόζονται κανόνες κανονικοποίησης. Είναι πιθανό δύο φαινομενικά αντίθετοι κανόνες να δουλεύουν εξίσου καλά (όπως, π.χ. αυτοί για τους αριθμούς των θυρών) όσο τους εφαρμόζουμε συνεπώς στα URLs. Άλλοι κανόνες κανονικοποίησης μπορούν να εφαρμοστούν ανάλογα με την εφαρμογή και την προηγούμενη γνώση που υπάρχει για μερικές σελίδες. Όπως αναφέρθηκε και νωρίτερα οι spider traps προκαλούν σοβαρά προβλήματα σε έναν crawler. Τα ψεύτικα URLsπου δημιουργούνται από τις spider traps συχνά γίνονται αισθητά μεγαλύτερα σε μέγεθος. Ένας τρόπος να αντιμετωπιστούν αυτές οι παγίδες είναι ο περιορισμός του μεγέθους των URLσελίδων, για παράδειγμα, σε 128 ή 256 χαρακτήρες. 50

51 Stop listing and Stemming Όταν αναλύουμε μία ιστοσελίδα για να εξαγάγουμε πληροφορίες περιεχομένου ή προκειμένου να βάλουμε σκορ σε καινούρια URLs που προτείνονται από τη σελίδα, είναι πολλές φορές χρήσιμο να αφαιρούμε λέξεις που χρησιμοποιούνται συχνά ή stop words όπως το it και το can. Η διαδικασία αυτή κατά την οποία αφαιρούνται τα stop words από ένα κείμενο ονομάζεται stop listing. Ας σημειώσουμε πως το σύστημα Dialog ( αναγνωρίζει μόλις 9 λέξεις (τις an, and, by, for, from, of, the, to, with ) σαν stop words. Εκτός από το stop listing, κάποιος μπορεί επίσης να ψαλιδίσει τις λέξεις που υπάρχουν στη σελίδα. Η διαδικασία ψαλιδίσματος κανονικοποιεί τις λέξεις συγχωνεύοντας έναν αριθμό μορφολογικά όμοιων λέξεων σε μία μόνο μορφή ρίζας. Για παράδειγμα, οι λέξεις connect, connected, connection γίνονται όλες connect. Υλοποιήσεις του συχνά χρησιμοποιούμενου αλγόριθμου ψαλιδίσματος του Porterβρίσκονται εύκολα διαθέσιμες σε πολλές γλώσσες προγραμματισμού. Ένας από τους συγγραφείς έχει δει περιπτώσεις στο πεδίο της βίο-ιατρικής όπου το ψαλίδισμα οδήγησε σε μείωση της ακρίβειας των αποτελεσμάτων του crawling HTML tag tree Οι crawlers μπορούν να εκτιμήσουν την αξία ενός URL ή μιας λέξης του περιεχομένου εξετάζοντας την HTML ετικέτα περιεχομένου στην οποία ανήκει. Για αυτό, ένας crawler μπορεί να χρειαστεί να αξιοποιήσει το tag tree ή τη DOM δομή της HTML σελίδας. Η εικόνας 2 δείχνει ένα tag treeπου αντιστοιχεί σε μία HTMLπηγή. Η <html> ετικέτα σχηματίζει τη ρίζα του δέντρου και διάφορες ετικέτες και κείμενο σχηματίζουν τους κόμβους του δέντρου. Δυστυχώς, πολλές ιστοσελίδες περιέχουν κακογραμμένο HTML κώδικα. Για παράδειγμα, ένα start tag μπορεί να μην έχει ένα end tag (μπορεί να μην απαιτείται από τις HTML προδιαγραφές) ή οι ετικέτες μπορεί να μην είναι κατάλληλα φωλιασμένες. Σε πολλές περιπτώσεις, η <html> ετικέτα ή η <body> ετικέτα λείπουν από την HTML σελίδα. Επομένως, κριτήρια που βασίζονται στη δομή συχνά απαιτούν ένα προηγούμενο βήμα μετατροπής του βρώμικου HTML εγγράφου σε ένα σωστά μορφοποιημένο, διαδικασία που ονομάζεται συμμάζεμα (tidying) μιας HTML σελίδας. Αυτή περιλαμβάνει τόσο προσθήκη ετικετών που λείπουν όσο και αναδιάταξη των ετικετών στη σελίδα [26]. Το συμμάζεμα μιας ΗΤΜL σελίδας είναι απαραίτητο για την απεικόνιση του περιεχομένου της σελίδας σε μία δενδρική δομή με ακεραιότητα, όπου κάθε κόμβος έχει ένα μόνο γονιό. Επομένως, είναι ένας σημαντικός πρόδρομος για την ανάλυση μιας HTML σελίδας σαν ένα tag tree. Να σημειωθεί πως η ανάλυση της DOM δομής είναι απαραίτητη μόνο αν ο τοπικός crawler σκοπεύει να χρησιμοποιήσει τη δομή του HTML εγγράφου με ένα μη-συνηθισμένο τρόπο. Για παράδειγμα, αν ο crawler χρειάζεται μόνο τους συνδέσμους που υπάρχουν μέσα σε μια σελίδα, και το κείμενο ή τμήματα του κειμένου της σελίδας, μπορούν να χρησιμοποιηθούν πιο απλοί HTML αναλυτές (parsers). Τέτοιοι αναλυτές υπάρχουν επίσης διαθέσιμοι σε πολλές γλώσσες προγραμματισμού. 51

52 Εικόνα 13. Σχηματική αναπαράσταση του Html δέντρου Πολυνηματικοί Crawlers Μία σειριακή επανάληψη διάσχισης ξοδεύει πολύ χρόνο κατά τον οποίο είτε η CPU είναι αδρανής (κατά τη διάρκεια πρόσβασης σε δίκτυο ή δίσκο) είτε η διεπαφή δικτύου είναι αδρανής (κατά τη διάρκεια των λειτουργιών της CPU). Η χρήση πολλών νημάτων, όπου κάθε νήμα ακολουθεί μία crawling επανάληψη, μπορεί να οδηγήσει σε αξιόλογη αύξηση της ταχύτητας και σε αποτελεσματικότερη χρήση του διαθέσιμου εύρους ζώνης. Ας σημειωθεί πως κάθε νήμα ξεκινά κλειδώνοντας τη λίστα με τα μη-επισκεπτόμενα URL προκειμένου να επιλέξει το επόμενο URL στο οποίο θα γίνει διάσχιση. Εφόσον επιλέξει URL ξεκλειδώνει τη λίστα επιτρέποντας σε άλλα νήματα να έχουν πρόσβαση σε αυτή. Η λίστα κλειδώνει ξανά όταν νέα URLs προστίθενται σε αυτή. Τα βήματα κλειδώματος είναι απαραίτητα προκειμένου να συγχρονιστεί η χρήση της λίστας η οποία τώρα διαμοιράζεται σε πολλές επαναλήψεις διάσχισης (νήματα) [26]. Το μοντέλο του πολυνηματικού crawler ακολουθεί ένα τυπικό παράλληλο υπολογιστικό μοντέλο. Να σημειωθεί πως ένας τυπικός crawler θα διατηρούσε επίσης μια διαμοιραζόμενη δομή δεδομένων ιστορικού για γρήγορο ψάξιμο URLs στα οποία έχει ήδη γίνει crawl. Επομένως, μαζί με τη λίστα μηεπισκεπτόμενων URL θα έπρεπε επίσης να συγχρονίζει την πρόσβαση στο ιστορικό. 52

53 Εικόνα 14. Αναπαράσταση εκτέλεσης βρόγχου crawler με πολλά νήματα Το μοντέλο πολυνηματικού crawler πρέπει να αντιμετωπίζει μία άδεια λίστα μηεπισκεπτόμενων URLs όπως ακριβώς και ένας σειριακός crawler. Ωστόσο, το ζήτημα είναι λιγότερο απλό τώρα. Αν ένα νήμα βρει τη λίστα άδεια, δεν σημαίνει πως ο crawler σαν σύνολο έχει φτάσει σε αδιέξοδο. Είναι πιθανό άλλα νήματα να φορτώνουν σελίδες και μπορεί να προσθέσουν καινούρια URLsστο κοντινό μέλλον. Ένας τρόπος να αντιμετωπίσουμε την κατάσταση είναι να στείλουμε ένα νήμα σε κατάσταση sleepόταν βρίσκει άδεια τη λίστα. Όταν το νήμα επανέλθει, ελέγχει ξανά για URLs. Ένας καθολικός ελεγκτής κρατά τον αριθμό των νημάτων που βρίσκονται σε κατάσταση sleep. Μόνο όταν όλα τα νήματα βρεθούν σε κατάσταση sleep σταματά η διαδικασία του crawling. Περισσότερες βελτιστοποιήσεις μπορούν να γίνουν στο μοντέλο πολυνηματικού crawler που περιγράφεται εδώ, όπως για παράδειγμα η μείωση του ανταγωνισμού μεταξύ των νημάτων και η οργάνωση της πρόσβασης δικτύου. Στο κεφάλαιο αυτό περιγράψαμε τα βασικά συστατικά ενός crawler. Η κοινή υποδομή υποστηρίζει από τη μία πλευρά έναν πολύ απλό πρώτα κατά πλάτος crawler και από την άλλη crawler αλγόριθμους οι οποίοι μπορεί να περικλείουν πολύ σύνθετους μηχανισμούς επιλογής URL. Παράγοντες όπως το μέγεθος της λίστας μη-επισκεπτόμενων κόμβων, η στρατηγική ανάλυσης της σελίδας, το ιστορικό του crawler και η αποθήκη σελίδων σημειώθηκαν ως ενδιαφέρουσες και σημαντικές παράμετροι στους ορισμούς που αφορούν τους crawlers. 53

54 4.2 Ο WebSphinx crawler O WebSphinx ( Website-Specific Processors for HTML Information extraction) είναι μια βιβλιοθήκη σε JAVA και ένα διαδραστικό περιβάλλον για web crawlers. Ο WebSphinx αποτελείται από δύο μέρη: τον Crawler Workbench και την WebSphinx class library Crawler Workbench Η Crawler Workbench αποτελεί μια γραφική διεπαφή χρήστη (GUI) η οποία επιτρέπει να προσαρμόσουμε και να ελέγξουμε έναν προσαρμόσιμο web crawler. Παρέχει τις παρακάτω δυνατότητες: Οπτικοποίηση μιας συλλογής από σελίδες σε έναν γράφο. Αποθήκευση σελίδων στον τοπικό δίσκο για offline περιήγηση και επεξεργασία. Συνένωση σελίδων για προβολή και εκτύπωση σαν ένα ενιαίο έγγραφο. Εξαγωγή όλου του κειμένου το οποίο ακολουθεί κάποιο πρότυπο για μια συλλογή σελίδων. Ανάπτυξη ενός crawler σε javaή Javascript ο οποίος μπορεί να επεξεργαστεί τις σελίδες όπως επιθυμούμε WebSphinx class library Η WebSphinx class library παρέχει υποστήριξη για υλοποίηση web crawler σε Java. To πακέτο αυτό παρέχει έναν μεγάλο αριθμό χαρακτηριστικών: Παράλληλη ανάκτηση ιστοσελίδων σε επίπεδο εφαρμογής Ένα αντικειμενικό μοντέλο παρουσίασης σελίδων και συνδέσμων Υποστήριξη για επαναχρησιμοποίηση ταξινομητών(classifiers) σελίδων Αποδοτικό Html Parsing Υποστήριξη του προτύπου robot exclusion Pattern Matching μέσω χρήσης κανονικών εκφράσεων, Unix shell wildcards, HTML tag εκφράσεων. Οι κανονικές εκφράσεις παρέχονται από την Apache Jakarta - regexp regular expression βιβλιοθήκη. Κοινοί HTML μετασχηματισμοί όπως συνένωση ιστοσελίδων, αποθήκευση στο δίσκο και μετονομασία συνδέσμων Εξερευνώντας τον WebSphinx Στην συνέχεια παρουσιάζονται κάποιες ενέργειες που μπορούν να εκτελεστούν στο Workbench: 54

55 Οπτικοποίηση του διαδικτύου μέσω γράφου Έχει την δυνατότητα να ανακτά τις σελίδες που επισκέφτηκε και να τις κάνει render σαν ένα γράφο αποτελούμενο από σελίδες και από συνδέσμους. Αποθήκευση σελίδων στο δίσκο Εικόνα 15. Εξαγωγή γράφου επίσκεψης από τον WebSphinx Στο συγκεκριμένο παράδειγμα ανακτά τις 30 σελίδες που βρίσκονται στον ιστότοπο SCSTechnicalReportsindex και τις αποθηκεύει στον τοπικό δίσκο. Συνένωση σελίδων για εκτύπωση Εικόνα 16. Αποθήκευση σελίδων μέσω του WebSphinx Ο WebSphinx παρέχει την δυνατότητα συνένωσης όλων των σελίδων στο BobHarper's IntroductiontoSML σε μια σελίδα κατάλληλη για εκτύπωση. Εικόνα 17. Συνένωση σελίδων μέσω του WebPShinx 55

56 Εξαγωγή εικόνων από ένα σύνολο σελίδων Τέλος, παρέχει την δυνατότητα εξαγωγής όλων των εικόνων από ένα σύνολο σελίδων και την δημιουργία μιας σελίδας η οποία θα εμπεριέχει όλα τα λογότυπα τα οποία βρέθηκαν. Εικόνα 18. Εξαγωγή εικόνων μέσω του WebSphinx 4.3 Polite Crawling Η έννοια του Politeness Η έννοια Politeness σχετίζεται με τη διασφάλιση πως ο Web Crawler λειτουργεί μέσα στα γενικά αποδεκτά πρότυπα και σέβεται τους πόρους και τις δημοσιευμένες επιθυμίες των ιδιοκτητών των ιστοσελίδων στις οποίες κάνει crawl. Η έννοια του politeness είναι το πιο σημαντικό θέμα που πρέπει να λάβει κανείς υπόψη κατά τη δημιουργία και τη χρήση ενός Web Crawler [30]. Αν ο crawler δεν λαμβάνει υπόψη του την έννοια του politeness: πηγαίνει εκεί που δεν τον θέλουν, φορτώνει υπερβολικά έναν server, οι διαχειριστές των ιστοσελίδων θα μπλοκάρουν την IP διεύθυνση και το αλφαριθμητικό αναγνώρισης του crawler. Επίσης, θα αναρτήσουν πληροφορίες για τον crawler σε bulleting board συστήματα και ιστοσελίδες που αναφέρουν κακόβουλα bots. Θα καταψηφιστεί από πολλές ιστοσελίδες, το όνομα του crawler θα δεχθεί υβριστικά σχόλια, και είναι πολύ πιθανό να δεχτείτε πολλά παράπονα μέσω του ISP. Έτσι, οι μακροχρόνιες επιπτώσεις είναι υπερβολικά αρνητικές, καθώς σημαντικές ιστοσελίδες που περιέχουν πληροφορίες που ψάχνει κάποιος θα τον μπλοκάρουν Crawler identification(αναγνώριση) Ένας polite crawler θα έχει ένα καλώς ορισμένο αλφαριθμητικό αναγνώρισης που θα περιλαμβάνει ένα URL όπου οι διαχειριστές των ιστοσελίδων μπορούν να βρουν περισσότερες πληροφορίες για τον crawler και γιατί επισκέπτεται τις ιστοσελίδες τους. Αυτή η ιστοσελίδα θα πρέπει επίσης να περιλαμβάνει μία διεύθυνση ηλεκτρονικού ταχυδρομείου ή άλλα μέσα με τα οποία οι διαχειριστές θα μπορούν να έρθουν σε επαφή 56

57 για ερωτήματα σχετικά με τον crawler. Υπάρχουν τουλάχιστον 3 λόγοι για τους οποίους πρέπει οι άλλοι να επικοινωνούν με τους κατασκευαστές του Crawler: 1. Αν υπάρχει ένα bug στον crawler που τον κάνει να μη δουλεύει καλά, οι διαχειριστές των ιστοσελίδων είναι συχνά διατεθειμένοι να ενημερώσουν. Καλύτερα αυτό, παρά να τον μπλοκάρουν καθώς δε θα μπορούν να έλθουν σε επαφή με αυτούς που τον υλοποίησαν. 2. Η γρήγορη απάντηση στις ερωτήσεις και τις ανησυχίες των διαχειριστών, θα γνωστοποιήσουν το γεγονός αυτό στα προαναφερθέντα forum και site όπου συζητιούνται τα bots. Αξίζει να έχει κάποιος καλή φήμη [30]. 3. Αν ο crawler είναι το κομμάτι συλλογής δεδομένων ενός μεγαλύτερου προϊόντος το οποίο κάποια στιγμή θα γίνει γνωστό, μερικοί από αυτούς τους διαχειριστές ιστοσελίδων που επικοινώνησαν με αυτούς που δημιούργησαν τον Crawler θα γίνουν testers και υποστηρικτές του project Το Robot Exclusion πρωτόκολλο Η πιο προφανής μορφή politeness είναι ο σεβασμός του πρωτοκόλλου Robots Exclusion. Παρόλο που δεν αποτελεί επίσημο πρότυπο όπως το HTTP ή το SMTP, μια παραλλαγή του πρωτοκόλλου Robots Exclusion τηρείται από όλους τους crawlers μεγάλων μηχανών αναζήτησης. Sστη σελίδα βοήθειας της Google υπάρχουν πληροφορίες σχετικά με το πώς χειρίζονται το robots.txt. Αν ο crawler το υλοποιεί αυτό, θα λειτουργεί μέσα στα αποδεκτά πλαίσια (πρότυπα). Το MSN (τώρα Bing) και η Yahoo (και μπορεί και η Google) υποστηρίζουν την Crawl-delay επέκταση στο robots.txt. Αυτή η καταχώρηση, αν υπάρχει, υποδεικνύει στα bots πόσο να καθυστερούν μεταξύ των αιτημάτων σε μία σελίδα. Πολλοί διαχειριστές ιστοσελίδων στηρίζονται σε αυτή την τιμή για να μειώσουν το φόρτο από τους servers τους. Αν είναι δυνατό, θα πρέπει να υποστηρίζει το Crawl-delay κάποιος crawler. Αν το αρχείο robots.txt της ιστοσελίδας δεν έχει ένα Crawl-delay, αυτό δεν σημαίνει πως πρέπει να εισέλθει στην ιστοσελίδα όσο πιο γρήγορα μπορείτε. Σύμφωνα με την εμπειρία αν παρακολουθηθεί το πόσο γρήγορα ανταποκρίνεται μία ιστοσελίδα και χρησιμοποιηθεί κάποιο πολλαπλάσιο αυτού του αριθμού σαν το εξ ορισμού crawl-delay, γίνεται λήψη πολύ λίγων παραπόνων. Για μικρότερες ιστοσελίδες, θα πρέπει πιθανώς να υπάρχει αναμονή ένα λεπτό πριν την εισχώρησή σε αυτές. Μεγαλύτερες ιστοσελίδες με περισσότερη κίνηση μάλλον δε θα προσέξουν καν τον crawler αν εισέρχεται σε αυτές μία φορά κάθε 15 δευτερόλεπτα. Το robots.txt είναι ένα προαιρετικό πρότυπο, και υπάρχουν κάποιες ασάφειες στις προδιαγραφές που μερικές φορές καθιστούν δύσκολο το να καθοριστεί αν ο crawlerσας μπορεί να έχει πρόσβαση σε μία πηγή ή όχι Crawling χρήσιμου περιεχομένου Αν ο crawler ψάχνει πληροφορίες σε HTML σελίδες, τότε είναι απίθανο να βρει κάτι χρήσιμο σε ένα αρχείο εικόνας. Το γεγονός αυτό είναι προφανές, αλλά είναι εύκολο κάποιος να το παραβλέψει όταν πρωτοξεκινά να γράψει έναν crawler [30]. Εξάλλου, δεν 57

58 υπάρχει τρόπος να πει κανείς με σιγουριά τι υπάρχει μέσα σε ένα αρχείο μέχρι να το κατεβάσει. Ένας τυπικός WebCrawler θα χρησιμοποιεί λογική όμοια με την εξής: do Get next url to crawl Request and download the document If the document s content type is text/html Parse and process the document endif forever Το βήμα της «ανάλυσης και επεξεργασίας ενός εγγράφου» συνήθως περιλαμβάνει την εξαγωγή όλων των URLs του εγγράφου και την τοποθέτησή τους στην ουρά με τα URLs στα οποία πρέπει να γίνει crawl. Όπως αναφέρθηκε, δεν μπορεί κάποιος να πει με σιγουριά ποιος είναι ο τύπος του περιεχομένου ενός εγγράφου μέχρι να το κατεβάσει. Παρόλο που γίνεται να ζητηθούν μόνο οι HTML επικεφαλίδες για μία πηγή και μετά να γίνει αίτηση του εγγράφου μόνο αν η επικεφαλίδα Content-type είναι text/html, αυτή η διαδικασία απαιτεί να δύο αιτήματα για κάθε έγγραφο. Παρόλο που τα αιτήματα απαιτούν λιγότερο εύρος ζώνης(bandwidth) από το κατέβασμα ενός εγγράφου, δεν είναι ελεύθερα. Ένας καλύτερος τρόπος καθορισμού το πρέπει να γίνει crawl είναι η εξέταση της επέκτασης αρχείου του URL. Παρόλο που δεν είναι τέλεια, αυτή η τεχνική είναι πολύ αποτελεσματική. Για παράδειγμα, αν το URL τελειώνει σε.jpg ή.gif, είναι το πιθανότερο εικόνα (.jpg και.gif οδηγούν στο 97% των περιπτώσεων σε εικόνες και οι περισσότερες από τις υπόλοιπες είναι σελίδες 404). Ένας crawler μπορεί να γίνει πολύ πιο αποτελεσματικός και περισσότερο polite φτιάχνοντας μια λίστα με απορριπτέες επεκτάσεις αρχείων Η περίπτωση των subdomains Θα πρέπει να αποφευχθεί το άνοιγμα περισσότερων από μία παράλληλες συνδέσεις σε οποιονδήποτε server ή σε οποιαδήποτε ιστοσελίδα. Αυτό μπορεί να γίνει πολύ δύσκολο στο να επιβληθεί, αλλά μπορούν να γίνουν κάποιες ενέργειες ώστε τουλάχιστον να μειωθούν οι πιθανότητες να συμβεί. Η απλοϊκή προσέγγιση είναι να διαχωριστούν τα URLs σύμφωνα με το hostname και να εξασφαλιστεί το ότι δεν υπάρχουν ποτέ περισσότερες από μία συνδέσεις σε κάποιο hostname. 58

59 Εικόνα 19. Επεκτάσεις αρχείων που πρέπει να ελέγχονται από τον crawler Αυτή η προσέγγιση δουλεύει πολύ καλά μέχρι να ληφθούν υπόψη τα subdomains. Αν υπάρχουν URLs που αρχίζουν με το και άλλα που αρχίζουν με το (μία πολύ συχνή περίπτωση), υπάρχει η πιθανότητα πολλά νήματα να έχουν πρόσβαση στην ίδια ιστοσελίδα. Αυτό το πρόβλημα γίνεται πολύ χειρότερο όταν πρόκειται για ιστοσελίδες όπως Blogger.com ή WordPress.com, όπου κάθε ξεχωριστός χρήστης έχει διαφορετικό subdomain [30]. Πολλές φορές απλός διαχωρισμός σύμφωνα με τις IP διευθύνσεις είναι αποτελεσματικός. Μία άλλη πιθανότητα είναι να καθοριστεί το root domain και να οργανωθούν τα URLs με αυτό τον τρόπο. Αλλά ο καθορισμός των root domains μπορεί να γίνει δύσκολος επίσης. Είναι αρκετά εύκολο για αμερικανικά domains που τελειώνουν σε.com,.org,.gov,.netκ.τ.λ. Αλλά όταν έχουμε να κάνουμε με country code top level domains και συναντήσετε πράγματα όπως.co.uk και άλλα τέτοια, τα πράγματα περιπλέκονται γρήγορα. Είναι σχεδόν αδύνατο να κατασκευαστεί και να διατηρηθεί μία εξαντλητική λίστα όλων των domain κορυφαίου επιπέδου και το πώς χειρίζονται τα subdomains. Ο καλύτερος τρόπος είναι η δημιουργία μίας λίστας με domain κορυφαίου επιπέδου είναι η μελέτη και η ανάλυση των crawler logs Δημιουργία μίας λίστα απαγόρευσης Αναπόφευκτα κάποιοι διαχειριστές ιστοσελίδων που δεν θα θέλουν να γίνει crawl στο site τους, και για κάποιον λόγο δεν θα μπορούν να δημιουργήσουν τα δικά τους robots.txt αρχεία. Σε αυτές τις περιπτώσεις, είναι χρήσιμη η δημιουργία μίας απαγορευτικής λίστα με 59

60 ιστοσελίδες οι οποίες δεν θα γίνουν ποτέ crawl. Επίσης, η λίστα απαγόρευσης είναι καλή για να αποκλείονται σελίδες που δε δίνουν καλές πληροφορίες. 60

61 5.Προτεινόμενη μεθοδολογία Η μεθοδολογία που ακολουθήσαμε είχε ως στόχο την δημιουργία ενός Crawler ο οποίος θα αποτελεί επέκταση του WebSphinx crawler. Η επέκταση εντοπίζεται στο σημείο κατά το οποίο νέες δυνατότητες εισάγονται στο παραγόμενο λογισμικό. Οι επιπλέον λειτουργίες προέκυψαν από την ανάγκη που υπάρχει για τον διαχωρισμό του crawling περιεχομένου που παράγει ένας απλός crawler σε σχέση με το ορατό από άνθρωπο περιεχόμενο που εμφανίζεται για μια ιστοσελίδα. Ο WebSphinx αδυνατεί να αναλύσει δυναμικές ιστοσελίδες στις οποίες εμφανίζονται οι τελευταίες τεχνολογίες παρουσίασης περιεχομένου όπως, AJAX, Jquery, flash και άλλα. Εντοπίζοντας αυτές τις αδυναμίες και εκμεταλλευόμενοι την τεχνολογία του Headless Browsing που αναφέρθηκε παραπάνω χρησιμοποιούμε τον μηχανισμό που ακολουθεί ο WebSphinx για το Crawling τροποποιώντας το fetch queue των συνδέσμων που αναμένεται να ακολουθήσει. Εικόνα 20 Σχηματική αναπαράσταση του JxSPhinx Ο στόχος που τίθεται είναι να αποδειχτεί μέσα από την πειραματική διαδικασία ότι, ξεκινώντας από ένα συγκεκριμένο URL το περιεχόμενο αλλά και η συλλογή των συνδέσμων που συγκεντρώνει και πρέπει να επισκεφτεί ένας crawler διαφέρει ποιοτικά από αυτό που θα συλλέγονταν αν ακολουθούσε την ίδια διαδικασία ένας άνθρωπος. Αρχικά έγινε μεταγλώττιση του WebSphinx και δημιουργία ενός νέου WebSPINX με όνομα WebSphinx crawler ο οποίος θα αποθηκεύει όλες τις πληροφορίες που αντλεί από το crawling σε μια MySQL βάση δεδομένων έτσι ώστε να καταγράφεται επακριβώς όλη η διαδικασία που ακολουθείται. Στην συνέχεια για τον τροποποιημένο WebSphinx 61

62 δημιουργείται ο JxSPhinx ο οποίος αποτελεί τον τροποποιημένο WebSphinx ο οποίος κάνει crawling κάνοντας χρήση των Headless Browsing δυνατοτήτων που επιτρέπει ο JXBroswer. Εικόνα 21. Διαφορά περιεχομένου των WebSphinx και JxSPhinx 5.1 Βασικές Πληροφορίες που χρειάζονται για μια σελίδα Για να μπορέσουμε να αποκτήσουμε μια πιο εμπεριστατωμένη άποψη για το περιεχόμενο των σελίδων που μελετάμε αποφασίσαμε να κρατούμε για κάθε σελίδα τις εξής πληροφορίες: Authority: η authority που βρίσκεται το url ParentUrl: το όνομα του Host που βρίσκεται το url LinkOrigin: το όνομα του συνδέσμου που δείχνει σε αυτό το url PageTitle: Ο τίτλος της σελίδας όπως είναι ορισμένος στο HTML PageWords: οι λέξεις που εμπεριέχονται στον HTML κώδικα της σελίδας Tags: ταtag elements της σελίδας LinkDepth: Το βάθος στο δέντρο διάσχισης που βρίσκεται η συγκεκριμένη σελίδα LinkBase: το base url από το οποίο μπορούμε να κατεβάσουμε την σελίδα PageLinks: τους συνδέσμους που εμπεριέχονται στην σελίδα PageDescription: το tag description της σελίδας MetaKeywords: το μεταδεδoμένο το οποίο περιέχει λέξεις κλειδιά για μια σελίδα MetaRobots: το περιεχόμενο του μεταδεδομένου Robot για μια σελίδα 5.2 Η σχεδίαση της βάσης Δεδομένων Για τις ανάγκες αυτής της εργασίας χρησιμοποιήθηκαν δύο μηχανισμοί: ο πρώτος αποτελεί μια επέκταση του WebSphinx ο οποίος παρέχει τη δυνατότητα αποθήκευσης των αποτελεσμάτων από το crawling σε μια βάση δεδομένων, ενώ ο δεύτερος είναι ο JxSPhinx όπως αναφέραμε και πιο πάνω και ουσιαστικά αποτελεί έναν crawler που αναλύει Human Visible Content. Η βάση που σχεδιάστηκε διαθέτει 6 πίνακες, 3 για κάθε εφαρμογή αντίστοιχα. Στην συνέχεια ακολουθεί σχήμα που παρουσιάζει τους πίνακες της βάσης. 62

63 Εικόνα 22. Οι πίνακες της βάσης δεδομένων Αναλυτικότερα οι πίνακες τις βάσης είναι: Jxspinx_page: αποθηκεύονται όλες οι πληροφορίες για κάθε σελίδα που επισκέπτεται ο JxSPhinx crawler Jxspinx_page_links: περιέχει όλους τους συνδέσμους που έχουν καταγραφεί από τον JxSPhinx JxSPhinx_tags: αποθηκεύονται κάποια μεταδεδομένα για τις σελίδες που επισκέπτεται ο JxSPhinx webspinx_page: αποθηκεύονται όλες οι πληροφορίες για κάθε σελίδα που επισκέπτεται ο WebSphinx crawler webspinx_page_links: περιέχει όλους τους συνδέσμους που έχουν καταγραφεί από τον WebSphinx WebSphinx_tags: αποθηκεύονται κάποια μεταδεδομένα για τις σελίδες που επισκέπτεται ο WebSphinx 5.3 Επεκτάσεις του μηχανισμού του WebSphinx - WebSphinxCrawler Για να τροποποιηθεί η λειτουργικότητα του WebSphinx ώστε να εξάγονται από κάθε σελίδα που επισκέπτεται μόνο οι απαραίτητες πληροφορίες και να αποθηκεύονται στην βάση δεδομένων που αναφέρθηκε παραπάνω δημιουργήθηκαν νέες οντότητες που εξυπηρετούν αυτό τον σκοπό. 63

64 Εικόνα 23. Δημιουργία καινούριων κλάσεων και ενσωμάτωσή τους στο υπάρχον σύστημα 1. CrawlerPackage a. Main: Αποτελεί την Main του προγράμματος που καλούνται όλες οι μέθοδοι για την έναρξης της διαδικασίας του crawling b. MyCrawler: Κληρονομεί την κλάση Crawler του package WebSphinx που είναι η βασική κλάση και περιέχει τον πυρήνα του crawler. Στην κλάση αυτή κληρονομείται η μέθοδος visit() για να μπορέσει να γίνει override η μέθοδος από τον νεo crawler στον επόμενο επίπεδο κληρονομικότητας. Ταυτόχρονα γίνεται αρχικοποίηση των παραμέτρων που πρέπει να έχει ο crawler. c. UrlHarvestingCrawler: Η κλάση αυτή κληρονομεί την κλάση MyCrawler και ουσιαστικά σε αυτήν μπαίνει η επιπρόσθετη λειτουργικότητα για την επεξεργασία των σελίδων και την αποθήκευση των κατάλληλων πληροφοριών στην βάση δεδομένων. 2. DBTables a. LinksInfo: Το αντικείμενο αυτό κρατά τις πληροφορίες για ένα Link όπως αυτό αναπαρίσταται στη βάση b. MetaTags: Παρέχει όλα τα μεταδεδομένα για μια σελίδα. c. WebPageInfo: Η οντότητα WebPageInfo αποθηκεύει όλες τις πληροφορίες για μια σελίδα που χρειάζονται. Στην συνέχεια αποθηκεύεται στη βάση και το αντικείμενο αποδεσμεύεται από τη μνήμη. 3. IO_Toolbox a. DBConfigurations: Η οντότητα αυτή συμμετέχει στον καθορισμό των παραμέτρων του συστήματος όσο αφορά την βάση Δεδομένων. Η λειτουργικότητά της περιορίζεται στην ανάγνωση από τον δίσκο των παραμέτρων επικοινωνίας με τη βάση αλλά και τα χαρακτηριστικά που θέλουμε να κρατήσουμε για κάθε σελίδα που επισκέπτεται ο crawler. Τα αρχεία παραμετροποίησης είναι τα configurations.info, DBSettings.info. b. DBOperations: Όλα οι λειτουργίες που έχουν σχέση με μια βάση δεδομένων υλοποιούνται σε αυτήν την κλάση. Περιέχει μεθόδους τέτοιες ώστε να φορτωθούν από τα αρχεία παραμετροποίησης οι πληροφορίες της βάσης, 64

65 σύνδεση με την βάση, κλείσιμο σύνδεσης με την βάση, εκτέλεση όλων των ερωτημάτων που σχετίζονται με την εισαγωγή πληροφορίας στην Βάση Δεδομένων. 5.4 Η κατασκευή του extended WebSphinx με όνομα JxSPhinx Ο JxSPhinx αποτελεί ουσιαστικά έναν crawler o οποίος βασίζεται στον επεκταμένο WebSphinxCrawler (ο οποίος κρατάει στην βάση την απαραίτητη πληροφορία για κάθε σελίδα) και χρησιμοποιεί και αυτός για το τον μηχανισμό που κάνει χρήση ο WebSphinx. Για να γίνει μεταγλώττιση του JxSPhinx ξεκινώντας από τον πηγαίο κώδικα που παρέχει η ομάδα ανάπτυξης του WebSphinx αρκεί να ακολουθήσουμε τα βήματα όπως περιγράφτηκαν στο προηγούμενο κεφάλαιο μόνο που στην περίπτωση αυτή πρέπει να επιλέξουμε σαν εξωτερικό αρχείο κώδικα το JxSPhinxExternalSrc/src. Επιπλέον δεν πρέπει να παραγνωρίσουμε το γεγονός ότι ανάλογα με τον τύπο του λειτουργικού που χρειαζόμαστε πρέπει να επιλέξουμε 32 bit JDK ή 64 bit JDKόπως αναφέρει ο πίνακας στο κεφάλαιο Διαφορές στην υλοποίηση του WebSphinx Crawler σε σχέση με τον JxSPhinx Crawler Η υλοποίηση του JxSPhinx ουσιαστικά παρέχει την δυνατότητα να διακρίνουμε τις διαφορές που υπάρχουν ανάμεσα στις ευρετηριοποιημένες πληροφορίες που υπάρχουν για έναν ιστότοπο ο οποίος έχει γίνει ανάλυση μέσω ενός crawler και ανάμεσα στο πραγματικό πληροφοριακό περιεχόμενο που αντιλαμβάνεται οπτικά ένας χρήστης. Το περιεχόμενο που οπτικά διακρίνει ένας χρήστης μπορούμε να το συλλέξουμε εφαρμόζοντας τεχνικές Headless Browsing κάνοντας χρήση στην τρέχουσα μεθοδολογία με τον JXBroswer. Για να μπορέσει να υλοποιηθεί ουσιαστικά αυτό είναι απαραίτητη η επέμβαση όσο αφορά το μηχανισμό της συλλογής συνδέσμων από κάθε ιστόχωρο. Ο WebSphinx crawler διαθέτει έναν μηχανισμό HTML parsing για να μπορέσει να κάνει εξαγωγή περιεχομένου και να μπορέσει να ανακτήσει τους συνδέσμους που εμπεριέχονται σε μια σελίδα. Για έναν απλό crawler όμως τεχνικές ajax, Jquery, ανακατεύθυνση σε άλλον ιστόχωρο αλλά και προβολή περιεχομένου μέσα από εμφωλευμένα iframes καθίσταται αδύνατη. Την λύση δίνει όμως η μηχανή render του JXBroswer η οποία μπορεί ουσιαστικά και κρατάει όλη την πληροφορία σε ένα DOM αρχείο. Η πληροφορία αυτή ουσιαστικά είναι η δυαδική αναπαράσταση του οπτικού περιεχόμενου που μπορεί να διακρίνει ένας χρήστης αλλά δεν μπορεί να ανιχνεύσει ένας crawler. Ο τρόπος με τον οποίο γίνεται η εξαγωγή των συνδέσμων για κάθε ιστοσελίδα ουσιαστικά προκύπτει από το DOM parsing που αποτελεί μια διαδικασία αυτοματοποιημένη στον JxSPhinx. Η ανάλυση του Dom περιεχομένου γίνεται μέσω του JDOM API. Αποτέλεσμα είναι να αλλάξουμε τον μηχανισμό επίσκεψης συνδέσμων του JxSPhinx αλλά και την ουρά των αναμενόμενων συνδέσμων που πρόκειται ο crawler να επισκεφτεί. Η παραμετροποίηση του μηχανισμού επίσκεψης γίνεται μέσα στην μέθοδο visit. Στην συνέχεια ακολουθεί μια αντιπαράθεση της μεθόδου visit του JxSPhinx και του WebSphinx. 65

66 Εικόνα 24. Η μέθοδος visit των WebSphinx και JxSPhinx Όπως φαίνεται στην συνέχεια πέρα από την παρέμβαση στον μηχανισμό επισκεψιμότητας του JxSPhinx έχουν προστεθεί και νέες οντότητες για να μπορέσει να γίνει ενοποίηση του WebSphinxμε τον JXBroswer. Στον κώδικα του WebSphinx έχουν προστεθεί 2 packages τα οποία πραγματεύονται την εισαγωγή λειτουργικότητας Headless Browsing στο σύστημα μέσω του JXBroswer package αλλά και την DOM επεξεργασία που απαιτείται αφού γίνει εκτέλεση του JXBroswer και η κάθε σελίδα γίνει render. 66

67 Εικόνα 25. Οι νέες κλάσεις του JxSPhinx Εξαγωγή συνδέσμων με τη χρήση του JXBroswer Για να μπορέσει να αλλάξει ο μηχανισμός επισκεψιμότητας του WebSphinx είναι απαραίτητο να έχουμε ουσιαστικά ένα διαφορετικό σύνολο συνδέσμων που πρέπει να επισκεφτεί ο JxSPhinx σε σχέση με τον WebSphinx. Αυτό γίνεται μέσω της κλήσης του JXBroswer για κάθε σελίδα που επισκέπτεται ο μηχανισμός crawling που είναι κοινός και για τους δυο crawlers (WebSphinxcrawler, JxSPhinxcrawler). Αφού γίνει render η σελίδα από τον JXBroswer θα παραχθεί ένα DOM αντικείμενο που ουσιαστικά περιέχει όλη την πληροφορία που θα έβλεπε ένας χρήστης αν έκανε περιήγηση σε αυτήν την σελίδα. Το DOM αντικείμενο που έχει παραχθεί πρέπει να γίνει ανάλυση και να εντοπίσουμε όλα τα elements του DOM δέντρου τα οποία ουσιαστικά αποτελούν link. Αφού γίνει ανάλυση του DOM αντικειμένου τότε μια λίστα από URL επιστρέφεται στον μηχανισμό crawling. Η λίστα αυτή των συνδέσμων πρέπει ουσιαστικά να ενοποιηθεί με τη λίστα των συνδέσμων που ήδη υπάρχουν προς επίσκεψη και να αγνοηθεί η λίστα των συνδέσμων που επιστρέφει ο μηχανισμός του WebSphinx που προκύπτει από ένα απλό html parsing. 67

68 Εικόνα 26. ScreenShot από την διαδικασία Rendering μιας σελίδας 5.5 Σενάρια εκτέλεσης Για να μπορέσουμε να δείξουμε την χρησιμότητα του JxSPhinx κατασκευάσαμε τρία απλά σενάρια χρήσης κατά τα οποία οι δύο crawlers δημιουργούν ένα διαφορετικό δέντρο επίσκεψης με αποτέλεσμα να αναδύεται εμφανώς η διαφορά του περιεχομένου που θα παραχθεί εκτελώντας τον WebSphinx και τον JxSPhinx. Αυτό έχει ως αποτέλεσμα, όχι μόνο να εντοπίσουν διαφορετικό αριθμό συνδέσμων, αλλά να εξάγουν κατά ένα μέρος και ένα διαφορετικό ποιοτικά περιεχόμενο. Σενάριο Εκτέλεσης (Ανακατεύθυνση Συνδέσμου) Στο σενάριο αυτό μια.html σελίδα περιέχει ένα σύνδεσμο ανακατεύθυνσης στο W3Schools. Κατά την εκτέλεση του WebSphinx δεν υπάρχει καμία επίσκεψη σε κάποιον άλλο ιστόχωρο παρά μόνο στην τρέχουσα ιστοσελίδα. Σε αντίθεση, ο JxSPhinx διακρίνει την ανακατεύθυνση που υπάρχει στον html κώδικα με την χρήση του javascript και ξεκινά μια διαδικασία crawling με κόμβο έναρξης το W3Schools. 68

69 Εικόνα 27. Σενάριο Εκτέλεσης (Ανακατεύθυνση Συνδέσμου) Εικόνα 28. Σενάριο Εκτέλεσης (Ανακατεύθυνση Συνδέσμου) Εικόνα 29. Σενάριο Εκτέλεσης (Ανακατεύθυνση Συνδέσμου) 69

70 Εικόνα 30. Σενάριο Εκτέλεσης (Ανακατεύθυνση Συνδέσμου) Σενάριο Εκτέλεσης (Iframe προβάλει περιεχόμενο ιστοσελίδας) Κατά την εκτέλεση αυτού του σεναρίου ζητείται από τον crawler να εντοπίσει μέσα σε ένα iframe την προβολή περιεχομένου από κάποιον άλλο ιστότοπο. Ο WebSphinx δεν εντοπίζει τον ιστότοπο που προβάλλεται μέσα από το iframe και ξεκινάει η επίσκεψη των υπόλοιπων συνδέσμων, σε αντίθεση με τον JxSPhinx, o οποίος εντοπίζει την προβολή ιστότοπου μέσω iframe και τον συμπεριλαμβάνει στην λίστα των συνδέσμων που πρέπει να επισκεφτεί ο μηχανισμός επίσκεψής του. Στο συγκεκριμένο παράδειγμα βλέπουμε ότι ο σύνδεσμος απουσιάζει από την λίστα συνδέσμων που βρήκε ο WebSphinx. Εικόνα 31. Σενάριο Εκτέλεσης (Iframe προβάλει περιεχόμενο ιστοσελίδας) 70

71 Εικόνα 32. Σενάριο Εκτέλεσης (Iframe προβάλει περιεχόμενο ιστοσελίδας) Εικόνα 33. Σενάριο Εκτέλεσης (Iframe προβάλει περιεχόμενο ιστοσελίδας) Εικόνα 34. Σενάριο Εκτέλεσης (Iframe προβάλει περιεχόμενο ιστοσελίδας) 71

72 Σενάριο Εκτέλεσης (Εμφωλευμένα iframes προβάλλουν περιεχόμενα σελίδας) Το τελευταίο σενάριο περιλαμβάνει την ανίχνευση προβαλλόμενων ιστοσελίδων μέσα από εμφωλευμένα Iframes. Στο συγκεκριμένο παράδειγμα το βάθος εμφώλευσης είναι 2. Η διαδικασία όμως μπορεί να εξελιχθεί και για μεγαλύτερα βάθη. Ο WebSphinx αδυνατεί να επισκεφτεί κάποιον ιστότοπο στην συνέχεια και η εκτέλεση τερματίζει σε σχέση με τον JxSPhinx, ο οποίος συνεχίζει να εξάγει περιεχόμενο και συνδέσμους ανάλογα με τον σύνδεσμο που είναι πρώτος στη λίστα συνδέσμων που πρέπει να επισκεφτεί. Εικόνα 35. Σενάριο Εκτέλεσης(Εμφωλευμένα iframes προβάλλουν περιεχόμενα σελίδας) Εικόνα 36. Σενάριο Εκτέλεσης(Εμφωλευμένα iframes προβάλλουν περιεχόμενα σελίδας) Εικόνα 37. Σενάριο Εκτέλεσης(Εμφωλευμένα iframes προβάλλουν περιεχόμενα σελίδας) 72

73 Εικόνα 38. Σενάριο Εκτέλεσης (Εμφωλευμένα iframes προβάλλουν περιεχόμενα σελίδας) 73

74 5.6 Πολυπλοκότητα του παραγόμενου λογισμικού Σημαντικό θέμα αποτελεί η πολυπλοκότητα των μηχανισμών διάσχισης. Ο παρακάτω πίνακας δίνει τους χρόνους εκτέλεσης του WebSphinx και του JxSPhinx για 3300 επισκέψεις ιστοσελίδων. Πίνακας 5 Χρόνοι εκτέλεσης των WebSphinx και JxSPhinx PageVisits\ Execution Time (secs) WebSphinx JxSPhinx

75 Τα πειραματικά αποτελέσματα έδειξαν ότι ο JxSPhinx κάνει περίπου τον διπλάσιο χρόνο για να μπορέσει να κάνει crawl τον ίδιο αριθμό ιστοσελίδων. Η πτώση της απόδοσης οφείλεται τόσο στον χρόνο που χρειάζεται για να γίνει render η σελίδα από τον Headless Browser, όσο και στον όχι τόσο αποδοτικό μηχανισμό χειρισμού του περιεχομένου της σελίδας μέσω JDOM. Η εξαφάνιση της ελαφριάς εκθετικότητας που χαρακτηρίζει τον WebSphinx κατά την υλοποίηση του JxSPhinx στις παρακάτω καμπύλες οφείλεται στο γεγονός ότι αποδεσμεύουμε το περιεχόμενο των ιστοσελίδων, καθώς το περιεχόμενο κρατείται στο Dom αντικείμενο που επιστρέφει ο Headless Browser. Διάγραμμα 2 Πολυπλοκότητα των WebSphinx και JxSPhinx 5.7 Προβλήματα που προέκυψαν Ο JxSPhinx αποτελεί προϊόν συνδυασμού ενός WebCrawler και ενός Headless Browser, χρησιμοποιεί μια βάση δεδομένων για την αποθήκευση των αποτελεσμάτων του και του JDom API για να διαχειριστεί τα DOM αντικείμενα. Βασικά προβλήματα που αντιμετωπίσθηκαν αναφέρονται στην συνέχεια: 1. Πολλές σελίδες διαθέτουν αδόμητο html κώδικα με αποτέλεσμα να γίνεται render η σελίδα από την μηχανή του JXBroswer, αλλά να μην μπορεί να γίνει parse το DOM αντικείμενο σε όλο το βάθος του. 2. Δεδομένου ότι ο crawler πρέπει να λειτουργεί σε αρκετές εκδόσεις λειτουργικών (cross platform), κάναμε χρήση της μηχανής του Mozilla. Αυτό δημιούργησε πρόβλημα διαχείρισης μνήμης, καθώς η εν λόγω μηχανή έχει υλοποίηση μόνο για 75

76 32 bit έκδοση windows, γεγονός που δεν μας επέτρεπε να δεσμεύσουμε πάνω από 1.5GB μνήμης. 3. Δεν λειτουργούν όλες οι δομές και τεχνικές διάσχισης για το αντικείμενο DOM, καθώς κατά την μετατροπή του αντικειμένου από DOM σε JDOM χάνεται ένα μεγάλο μέρος της δυναμικής του και δημιουργούνται αρκετοί περιορισμοί. 4. Δεν επιτρέπεται η κατασκευή πολλών αντικειμένων τύπου μηχανής render Mozilla στη μνήμη, ακόμα και αν αυτά αποδεσμεύονται από την μνήμη. Για αυτό τον λόγο δημιουργήθηκε ένα αντικείμενο το οποίο ήταν ανοιχτό σε όλη την διάρκεια του προβλήματος. 5. Ο WebSphinx κάνει κακή διαχείριση μνήμης με αποτέλεσμα να δημιουργείται υπερφόρτωση αυτής. 6. Η πολυπλοκότητα του JxSPhinx είναι χειρότερη σε σχέση με αυτήν του WebSphinx. Οι προσπάθειες που έγιναν για βελτίωση του χρόνου βοήθησαν, αλλά όχι σημαντικά ώστε να αλλάξει η πολυπλοκότητα του αλγορίθμου. 7. Δεν ήταν δυνατή η αναζήτηση κατά πλάτος παρά μόνο κατά βάθος, καθώς η πολυπλοκότητα του αλγορίθμου γίνεται χειρότερη. 76

77 6. Πειράματα και τεκμηρίωση 6.1 Κατασκευή Πειραμάτων Στο προηγούμενο κεφάλαιο αναλύθηκε η μεθοδολογία που χρησιμοποιήθηκε. Αρχικά αναφερθήκαμε στην σχεδίαση της βάσης δεδομένων, στην συνέχεια μιλήσαμε για τον WebSphinx και πως παραμετροποιήθηκε ώστε να μπορέσουμε να τον επεκτείνουμε και τέλος μιλήσαμε για τον JxSPhinx και ποια πλεονεκτήματα παρέχει σε σχέση με έναν απλό Crawler. Για να αποδείξουμε την χρησιμότητα του JxSPhinx τρέξαμε πειράματα σε διάφορες κατηγορίες ιστοτόπων. Αυτές περιέχουν ιστοσελίδες από τον χώρο του ηλεκτρονικού εμπορίου, από τον αθλητικό χώρο, από ενημερωτικά και διαφημιστικά site. Η χρήση ιστοτόπων διαφορετικού τύπου θα μπορέσει να αναδείξει σε μεγάλο βαθμό την χρησιμότητα του Headless Crawling. Μέσα από την πειραματική διαδικασία αναδύεται, αλλού σε μεγάλο βαθμό και αλλού σε μικρότερο, η διαφορά ανάμεσα στο ευρετήριοιποιημένο περιεχόμενο μιας σελίδας και σε αυτό που πραγματικά μπορεί να διακρίνει ένας χρήστης. Παράλληλα, διαφημιστικά μηνύματα αλλά και αναδυόμενα παράθυρα μπορούν να γίνουν διακριτά με την νέα μεθοδολογία που χρησιμοποιήθηκε σε σχέση με την παραδοσιακή τεχνικής διάσχισης του διαδικτύου. Οι ιστότοποι που χρησιμοποιήθηκαν είναι οι εξής: Η πειραματική διαδικασία περιλαμβάνει το crawling κάθε ιστότοπου με τον WebSphinx και για κάθε ιστότοπο που επισκέπτεται ο WebSphinx να εκτελείται και ο JxSPhinx για να βρεθεί η ποσοτική διαφορά των συνδέσμων αλλά και η ποιοτική διαφορά στο προβαλλόμενο περιεχόμενο στο χρήση σε σχέση με αυτό το οποίο αποκτά εκτίμηση ένας crawler ότι υπάρχει σε μια σελίδα. Έτσι, για κάθε ένα από τα domains διατηρούνται τα εξής στοιχεία: Page visits: ο αριθμός των σελίδων που επισκέφτηκαν WebSphinx Links: ο αριθμός συνδέσμων που βρήκε ο WebSphinx για τα αντίστοιχα Page Visits. JxSPhinx Links: ο αριθμός συνδέσμων που βρήκε ο JxSPhinx για τα αντίστοιχα Page Visits. Διαφορά: η διαφορά ανάμεσα στον αριθμό των συνδέσμων που βρήκε ο WebSphinx και ο JxSPhinx για τα αντίστοιχα Page Visits. 77

78 Union s Similarity: η ομοιότητα ανάμεσα στο σύνολο των συνδέσμων που βρήκε ο WebSphinx αλλά και ο JxSPhinx. NotSameLinks: ο αριθμός των συνδέσμων που υπάρχουν στο σύνολο των συνδέσμων του JxSPhinx και δεν βρέθηκαν στο σύνολο του WebSphinx. HasJavaScript: ο αριθμός σελίδων που διαθέτουν JavaScript. HasMetaKeywords: ο αριθμός σελίδων που διαθέτουν TagMetaKeywords. HasMetaRobot: ο αριθμός σελίδων που διαθέτουν TagMetaRobot. HasMetaDescription: ο αριθμός σελίδων που διαθέτουν TagMetaDescription. 78

79 6.2 Αποτελέσματα πειραμάτων To μηχάνημα που χρησιμοποιικηκε για την παρακάτω χαρακτηριστικά: πραγματοποίηση των πειραμάτων είχε τα Επεξεργαστής: Intel ( R ) Core ( TM )i7 CPU RAM: 6.00 GB System: Windows 7 Ultimate 64-bit Να τονιστεί πως λόγω χρονικών περιορισμών και υψηλής χρονικής απαίτησης εκτέλεσης του μηχανισμού, τα πειράματα που πραγματοποιήθηκαν είναι περιορισμένης έκτασης. Πίνακας 6 Αποτελέσματα πειραμάτων για το sourceforge.net PageVisits WebSphinx Links JxSPhinx Links Διαφορά

80 Πίνακας 7 Αποτελέσματα πειραμάτων για το sourceforge.net PageVisits Union s Similarity NotSameLinks , , , , , , , , , , , , , , , , , , , , , , , , , , Πίνακας 8 Αποτελέσματα πειραμάτων για το sourceforge.net PageVisits HasJavaScript HasMetaKeywords HasMetaRobot HasMetaDescription

81 WSLinks JXLinks Διάγραμμα 3 Αριθμός συνδέσμων των WebSphinx και JxSPhinx για το συνάρτηση των επισκεπτόμενων σελίδων 81

82 Ανάπτυξη μηχανισμού διάσχισης του διαδικτύου (Web crawler) με βάση το προβαλλόμενο 0,9 0,8 0,7 0,6 0,5 0,4 0,3 0,2 0,1 0 Union's Similarity Διάγραμμα 4 Ομοιότητα του συνόλου συνδέσμων για τον συνάρτηση των επισκεπτόμενων σελίδων Διαφορα Διάγραμμα 5 Διαφορά του αριθμού συνδέσμων των δυο crawler συνάρτηση των επισκεπτόμενων σελίδων για το sourceforge.net 82

83 Ανάπτυξη μηχανισμού διάσχισης του διαδικτύου (Web crawler) με βάση το προβαλλόμενο HasJavascript HasMetaKeywords HasMetaRobot HasMetaDescription Διάγραμμα 6 Ποσοτικά χαρακτηριστικά μεταδεδομένων συνάρτηση των επισκεπτόμενων σελίδων για το NotSameLinks Διάγραμμα 7 Αριθμός ανόμοιων συνδέσμων των συνάρτηση των επισκεπτόμενων σελίδων για το 83

84 Πίνακας 9 Αποτελέσματα πειραμάτων για το uefa.com PageVisits WebSphinx Links JxSPhinx Links Διαφορά Πίνακας 10 Αποτελέσματα πειραμάτων για το uefa.com PageVisits Union s Similarity 0, , , , , , , , , , , ,

85 , , , , , , , , , , , , Πίνακας 11 Αποτελέσματα πειραμάτων για το uefa.com PageVisits HasJavaScript HasMetaRobot

86 Ανάπτυξη μηχανισμού διάσχισης του διαδικτύου (Web crawler) με βάση το προβαλλόμενο WSLinks JXLinks Διάγραμμα 8 Αριθμός συνδέσμων των WebSphinx και JxSPhinx για το συνάρτηση των επισκεπτόμενων σελίδων 0,595 Union's Similarity 0,59 0,585 0,58 0,575 0,57 0,565 Διάγραμμα 9 Ομοιότητα του συνόλου συνδέσμων για τον συνάρτηση των επισκεπτόμενων σελίδων 86

87 Ανάπτυξη μηχανισμού διάσχισης του διαδικτύου (Web crawler) με βάση το προβαλλόμενο Διαφορά Διάγραμμα 10 Διαφορά του αριθμού συνδέσμων των δυο crawler συνάρτηση των επισκεπτόμενων σελίδων για το HasMetaRobot HasJavascript Διάγραμμα 11 Αριθμός σελίδων που έχουν Javascript και το μεταδεδομένο Robot συνάρτηση των επισκεπτόμενων σελίδων για το 87

88 Πίνακας 12 Αποτελέσματα πειραμάτων για το skroutz.gr PageVisits WebSphinx Links JxSPhinx Links Διαφορά Πίνακας 13 Αποτελέσματα πειραμάτων για το skroutz.gr PageVisits Union s Similarity 0, , , , , , , , , ,

89 , , , , , , , , , , , , , , , , Πίνακας 14 Αποτελέσματα πειραμάτων για το skroutz.gr PageVisits HasJavaScript HasMetaKeywords HasMetaRobot HasMetaDescription

90 WSLinks JXLinks Διάγραμμα 12 Αριθμός συνδέσμων των WebSphinx και JxSPhinx για το Συνάρτηση των επισκεπτόμενων ιστοσελίδων 0,576 0,574 0,572 0,57 0,568 0,566 0,564 0,562 0,56 0,558 Union's Similarity Διάγραμμα 13 Ομοιότητα του συνόλου συνδέσμων για τον συνάρτηση των επισκεπτόμενων σελίδων 90

91 Ανάπτυξη μηχανισμού διάσχισης του διαδικτύου (Web crawler) με βάση το προβαλλόμενο Διαφορά Διάγραμμα 14 Διαφορά του αριθμού συνδέσμων των δυο crawler συνάρτηση των επισκεπτόμενων σελίδων για το HasJavascript Διάγραμμα 15 Αριθμός σελίδων που διαθέτουν javascript για το συνάρτηση των επισκεπτόμενων σελίδων 91

92 Ανάπτυξη μηχανισμού διάσχισης του διαδικτύου (Web crawler) με βάση το προβαλλόμενο 7000 HasMetaKeywords Διάγραμμα 16 Αριθμός σελίδων που διαθέτουν το μεταδεδομένο keywords για το συνάρτηση των επισκεπτόμενων σελίδων NotSameLinks Διάγραμμα 17 Αριθμός ανόμοιων συνδέσμων των συνάρτηση των επισκεπτόμενων σελίδων για το 92

93 Πίνακας 15 Αποτελέσματα πειραμάτων για sport-fm.gr PageVisits WebSphinx Links JxSPhinx Links Διαφορά Πίνακας 16 Αποτελέσματα πειραμάτων για sport-fm.gr PageVisits Union s Similarity 0, , , , , , , , , , , , ,

94 , , , , , , , , , , , Πίνακας 17 Αποτελέσματα πειραμάτων για sport-fm.gr PageVisits HasJavaScript HasMetaKeywords HasMetaRobot HasMetaDescription

95 Ανάπτυξη μηχανισμού διάσχισης του διαδικτύου (Web crawler) με βάση το προβαλλόμενο WSLinks JXLinks Διάγραμμα 18 Αριθμός συνδέσμων των WebSphinx και JxSPhinx για το 0,745 0,74 0,735 0,73 0,725 0,72 0,715 0,71 0,705 0,7 0,695 0,69 Union's Similarity Διάγραμμα 19 Ομοιότητα του συνόλου συνδέσμων για τον συνάρτηση των επισκεπτόμενων σελίδων 95

96 Ανάπτυξη μηχανισμού διάσχισης του διαδικτύου (Web crawler) με βάση το προβαλλόμενο Διαφορά Διάγραμμα 20 Διαφορά του αριθμού συνδέσμων των δυο crawler συνάρτηση των επισκεπτόμενων σελίδων για το HasJavascript HasMetaKeywords HasMetaRobot HasMetaDescription Διάγραμμα 21 Ποσοτικά χαρακτηριστικά μεταδεδομένων συνάρτηση των επισκεπτόμενων σελίδων για το 96

97 Πίνακας 18 Αποτελέσματα πειραμάτων για nooz.gr PageVisits Union s Similarity NotSameLinks , , , , , , , , , , , , , , , , , Πίνακας 19 Αποτελέσματα πειραμάτων για nooz.gr PageVisits HasJavaScript HasMetaKeywords HasMetaRobot HasMetaDescription

98 Ανάπτυξη μηχανισμού διάσχισης του διαδικτύου (Web crawler) με βάση το προβαλλόμενο WSLinks JXLinks Διάγραμμα 22 Αριθμός συνδέσμων των WebSphinx και JxSPhinx για το 0,621 0,62 0,619 0,618 0,617 0,616 0,615 0,614 0,613 Union's Similarity Διάγραμμα 23 Ομοιότητα του συνόλου συνδέσμων για τον συνάρτηση των επισκεπτόμενων σελίδων 98

99 Διαφορά Διάγραμμα 24 Διαφορά του αριθμού συνδέσμων των δυο crawler συνάρτηση των επισκεπτόμενων σελίδων για το NotSameLinks Διάγραμμα 25 Αριθμός ανόμοιων συνδέσμων των συνάρτηση των επισκεπτόμενων σελίδων για το 99

100 HasJavascript Διάγραμμα 26 Αριθμός των σελίδων που κάνουν χρήση Javascript συνάρτηση των επισκεπτόμενων σελίδων για το Αξιολόγηση Αποτελεσμάτων ενδεικτικών πειραμάτων Ουσιαστικά μπορούμε να χωρίσουμε τα πειράματά μας σε 5 σετ. Κάθε σετ πειραμάτων αντιστοιχίζεται με ένα domain για το οποίο εκτελούμε μια διαδικασία crawling τόσο με τον WebSphinxόσο και με τον JxSPhinx. Η αξιολόγηση των πειραμάτων θα γίνει για κάθε ιστότοπο ξεχωριστά. Έχοντας τερματιστεί η διαδικασία crawling παρατηρούμε ότι ο JxSPhinx έχει εντοπίσει συνδέσμους σε αντίθεση με τον WebSphinx ο οποίος έχει εντοπίσει συνδέσμους. Διαπιστώνουμε ότι υπάρχει μια διαφορά συνδέσμων. Από αυτούς τους συνδέσμους ένα ποσοστό είναι ίδιο ενώ υπάρχει και σημαντικός αριθμός συνδέσμων που υπάρχουν στο σύνολο που έχει εντοπίσει ο JxSPhinxκαι δεν έχει εντοπίσει ο WebSphinx. Οι δυο crawler επισκέφτηκαν 6500 σελίδες και διαπιστώθηκε ομοιότητα του συνόλου των συνδέσμων της τάξης του 76%. Το υπόλοιπο 24% αποτελεί περιεχόμενο που είναι ορατό μόνο από τον ανθρώπινο παράγοντα και ουσιαστικά δεν μπορεί να αποθηκευτεί από έναν crawler. Γενικά η καμπύλη ομοιότητας παρουσιάζει μια σταθερή τάση κατά την διάρκεια των πειραμάτων. Οι περισσότερες ιστοσελίδες εμπεριέχουν κώδικα javascript ενώ όσο αναφορά τα μεταδεδομένα που χρησιμοποιούν δίνεται βάση κυρίως στην τοποθέτηση κατά κύριο λόγο των μεταδεδομένων Description,Robot σε σχέση με το μεταδεδομένο Keywords που η παρουσία του υστερεί. Ξεκινώντας την διαδικασία crawling με ρίζα την σελίδα διαπιστώνουμε ότι έχοντας επισκεφτεί 6000 σελίδες ο JxSPhinx έχει εντοπίσει συνδέσμους σε αντίθεση 100

101 με τον WebSphinx που εντόπισε συνδέσμους. Παρατηρούμε δηλαδή μια ομοιότητα των δυο συνόλων που εμπεριέχουν τους συνδέσμους που βρήκε ο κάθε crawler της τάξης του 57%. Ποιοτικά αυτό μεταφράζεται σε μια αριθμητική διαφορά της τάξης των συνδέσμων. Αυτό μπορεί να ερμηνευθεί ως απόρροια του γεγονότος της ύπαρξης δυναμικών τεχνολογιών στον εν λόγω ιστότοπο. Αποτέλεσμα είναι η ύπαρξη μεγάλου όγκου δυναμικού περιεχομένου που παραμένει κρυφό από τις μηχανές διάσχισης. Όπως και στο προηγούμενο set έτσι και σε αυτό υπάρχει σταθερή τιμή της ομοιότητας των συνόλων συνδέσμων. Όσο αναφορά την τεχνολογία javascript έχουμε ευρεία χρήση της και εδώ που αγγίζει το 99,9%. Τέλος η χρήση μεταδεδομένων επικεντρώνεται μόνο στον καθορισμό του MetaRobot. Η χρήση των μεταδεδομένων description και Keywords είναι πολύ μικρή. Η πειραματική διαδικασία έδειξε ότι στο skroutz.grτο σύνολο που δίνει ως έξοδο ο WebSphinx αποτελεί το 56% του συνόλου του JxSPhinx. Για να γίνουμε πιο ακριβείς ο JxSPhinx εντοπίζει στη συγκεκριμένη πειραματική διαδικασία συνδέσμους σε αντίθεση με τον WebSphinx που εντοπίζει Πρόκειται πραγματικά για ένα μεγάλο σύνολο συνδέσμων με αρκετό πληροφοριακό περιεχόμενο που μένει ουσιαστικά αχαρτογράφητο από τον απλή έκδοση ενός crawler.μέσα από την επίσκεψη 6500 σελίδων παρατηρείται μια διαφορά συνδέσμων που ουσιαστικά δεν μπορούν να εντοπιστούν από τον WebSphinx. To 95% των σελίδων χρησιμοποιεί την τεχνολογία javascript για την προβολή περιεχομένου ενώ ταυτόχρονα ακολουθεί όλες τις τεχνικές που επιτάσσει το Search Engine Optimization καθώς το των σελίδων που επισκέφτηκαν οι crawlerδιέθεταν δηλώσεις των μεταδεδομένων που εξετάζουμε. Εξετάζοντας το nooz.gr έχοντας επισκεφτεί 4500 σελίδες παρατηρούμε την ανίχνευση περίπου συνδέσμων από τον JxSPhinx και συνδέσμων από τον WebSphinx. Αυτό μεταφράζεται σε ένα ποσοστό ομοιότητας των δυο συνόλων συνδέσμων της τάξης του 61%. Επιπλέον βρήκε ο JxSPhinx που δεν μπόρεσαν να εντοπισθούν από τον WebSphinx. Από τις σελίδες που επισκέφτηκαν οι crawler οι 4118 κάνουν χρήση Javascript, 4055 χρησιμοποιούν το μεταδεδομένο keywords ενώ 4078 το μεταδεδομένο Description. Τέλος 66 μόνο σελίδες χρησιμοποιούν το μεταδεδομένο Robot. Τα πειράματα για το sport-fm.gr έδειξαν ότι ένα σχετικά υψηλό ποσοστό των συνδέσμων εντοπίζεται και από τους 2 crawler. Το ποσοστό ομοιότητας των συνόλων που εμπεριέχουν τους συνδέσμους είναι 71%. Ο JxSPhinxεντόπισε συνδέσμους έχοντας επισκεφτεί 6000 σελίδες ενώ ο WebSphinxεντόπισε συνδέσμους. Η χρήση Javascript γίνεται στο 99,4% των σελίδων που έχουν επισκεφτεί οι δύο crawler ενώ των μεταδεδομένων Robot, Description, Keywordsσε ποσοστό 38%, 97%, 6% αντίστοιχα. 101

102 7. Συμπεράσματα-Μελλοντική εργασία 7.1 Σύνοψη - Συμπεράσματα Η διπλωματική αυτή ξεκίνησε ως μια προσπάθεια προσέγγιση του SEO εξετάζοντάς το από την σκοπιά του Headless Browsing. Δεχόμενοι το γεγονός ότι πλέον οι μηχανές αναζήτησης έχουν γίνει αναπόσπαστο κομμάτι της καθημερινότητας μας προσπαθήσαμε να προτείνουμε μια τεχνική η οποία ουσιαστικά θα συμμετέχει στην βελτιστοποίηση της κατάταξης ενός ιστότοπου. Σε αυτό κατατείνει το γεγονός ότι χαρτογραφώντας για την εκάστοτε ιστοσελίδα το ορατό από άνθρωπο περιεχόμενο η αναζήτηση ουσιαστικά θα έχει ως αποτέλεσμα μια πιο ανθρωποκεντρική προσέγγιση. Ο αρχικός στόχος της διπλωματικής ήταν να κατασκευάσουμε έναν crawler ο οποίος μπορεί να αναγνωρίσει περιεχόμενα πιο δυναμικά σε σχέση με έναν απλό crawler. Με βάση τη λογική αυτή ο στόχος πραγματοποιήθηκε κατασκευάζοντας τον JxSPhinx ο οποίος ακολουθεί τον μηχανισμό crawling του JxSPhinx ενώ χρησιμοποιεί τον JXBroswer για να μπορέσει να εκμεταλλευτεί όλες τις δυνατότητες που παρέχει ένας Headless Browser. Πραγματοποιήθηκε μια σειρά πειραμάτων συγκρίνοντας τον αριθμό των συνδέσμων οπότε και κατ επέκταση του ανθρώπινου προβαλλόμενου περιεχομένου σε σχέση με αυτό που ανιχνεύει ένας απλός crawler. Τα πειράματα έδειξαν ότι υπάρχει διαφορά ανάμεσα στο περιεχόμενο το οποίο βλέπει ο ανθρώπινος παράγοντας σε σχέση με έναν crawler. Η ομοιότητα αυτή ποικίλει ανάλογα με τους στόχους και το σκοπό που έχει θέσει ένας ιστότοπος. Αυτό που μπορεί να διασαφηνιστεί με βεβαιότητα είναι ότι όσο περισσότερο μπορούμε να γνωρίζουμε για το πραγματικό περιεχόμενο μιας σελίδας τόσο αποτελεσματικότερα μπορούν να γίνουν τα αποτελέσματα αναζήτησης. 7.2 Μελλοντική εργασία Είναι σαφές ότι ο σκοπός της διπλωματικής ήταν η εξαγωγή ορισμένων συμπερασμάτων πάνω στο crawling χρησιμοποιώντας το Headless Browsing. Βασικός στόχος ήταν η επιβεβαίωση της αρχικής μας υπόθεσης ότι δηλαδή διαφέρει το προβαλλόμενο περιεχόμενο μιας σελίδας σε σχέση με αυτό που εντοπίζουν οι crawler. Αποκτώντας πλέον μια πιο ποσοτική εικόνα θα θέλαμε μελλοντικά να προσεγγίσουμε τον εν λόγω τομέα και ποιοτικά εισάγοντας τεχνικές σημασιολογικής ανάλυσης του περιεχομένου της σελίδας. Για να γίνουμε πιο σαφής ως μελλοντική εργασία και επέκταση του JxSPhinx προτείνονται: WebSphinx polite crawling όπως αναφέρεται στο προηγούμενο κεφάλαιο Open source διάθεση του JxSPhinx Καλύτερη διαχείριση μνήμης Σημασιολογική ανάλυση περιεχομένου ιστοσελίδων Βελτιστοποίηση μηχανισμού parsing του DOM περιεχομένου 102

103 8. Παράρτημα 8.1 Polite Crawling για τον WebSphinx Ένα από τα σημαντικότερα στοιχεία που πρέπει να υιοθετεί η υλοποίηση ενός crawler είναι η σωστή διαχείριση της μνήμης και των πόρων. Με δεδομένο ότι ο WebSphinx παρέχει ένα σημαντικό αριθμό λειτουργιών όπως πολυνηματική επεξεργασία και υιοθέτηση του προτύπου robot exclusion. Ωστόσο, έχει ένα σημαντικό πρόβλημα: memory leaks (διαρροές μνήμης), δηλαδή χρήση μνήμης η οποία στη συνέχεια δεν μπορεί να επιστραφεί πίσω στο λειτουργικό σύστημα [31]. Όπως αναφέραμε και πιο πάνω η τρέχουσα έκδοση του WebSphinx μπορεί να επισκεφτεί μερικές χιλιάδες σελίδες εξαιτίας αυτού του προβλήματος. Στην συνέχεια θα αναπτυχθούν μερικές τεχνικές που μπορούν να παρέχουν μερική επίλυση το συγκεκριμένου προβλήματος. Αρχιτεκτονική Στην συνέχεια ακολουθεί ένα διάγραμμα που υποδεικνύει πως λειτουργεί το politeness για τον WebSphinx crawler. Εικόνα 39. Αρχιτεκτονική Polite Crawling 103

104 Crawler (run ()) Όταν καλείται η μέθοδος run τότε ο crawler δημιουργεί, αρχικοποιεί τα νήματα και τις ουρές αποθήκευσης(fetch queues) και αποστέλλει ένα root URL για να ξεκινήσει το crawling. Κάθε φορά που ο crawler επισκέπτεται πάνω από 1000 σελίδες αποθηκεύει τα τρέχοντα στατιστικά στο δίσκο. Αποθηκεύει 10 στατιστικά στοιχεία, για τις πρώτες 10 χιλιάδες σελίδες τα στατιστικά αποθηκεύονται στο αρχείο stats0.txt [31]. Τα στατιστικά από τις επόμενες χιλιάδες σελίδες θα αποθηκευτούν στο stats1.txt και το ίδιο ισχύει και για τα επόμενα στατιστικά. Δεδομένου ότι ο crawler μπορεί να σταματήσει με διάφορα προβλήματα, όπως λάθη λόγω έλλειψης μνήμης ή απρόσμενες εξαιρέσεις, ο crawler αποθηκεύει το περιεχόμενο του περιοδικά στο δίσκο έτσι ώστε όταν τρέξει το πρόγραμμα την επόμενη φορά να συνεχίσει να τρέχει με είσοδο την αποθηκευμένη πληροφορία και να μην χρειάζεται αν ξεκινήσει η εκτέλεση από την αρχή. Worm Fetch μέθοδος Η Worm είναι μια μέθοδος που κληρονομεί την κλάση thread της java. O crawler δημιουργεί worms και εκτελεί την μέθοδο run που υλοποιείται στην αντίστοιχη κλάση. Τα αντικείμενα worm καλούν την μέθοδο fetch, η οποία αποτελεί έναν ατέρμονα βρόγχο. Κάθε worm αντικείμενο στην μέθοδο του fetch παίρνει ένα link από την ουρά fetchqueue για crawling, αποθηκεύει την σελίδα στον δίσκο και εξάγει τα links από την εκάστοτε σελίδα. Όταν ένα worm παίρνει ένα Link για να ξεκινήσει το crawling ένα μετρητής χρόνου αρχικοποιείται και το worm προσπαθεί να αποθηκεύσει την σελίδα στον δίσκο. Εάν η χρονική περίοδος παρέλθει πριν να τελειώσει η αποθήκευση της σελίδας στον δίσκο το worm διαγράφεται από την μνήμη και ένα καινούριο worm συνεχίζει την διαδικασία του Crawling. Αποθήκευση σελίδων Υπάρχει ένας μεγάλος αριθμός εξαιρέσεων που μπορεί να προκύψει κατά την διαδικασία αποθήκευσης μιας σελίδας στον δίσκο. Μια από αυτές έχει να κάνει με το robot exclusion: υπάρχουν σελίδες όπου τα robot δεν πρέπει να τις κάνουν crawl, έτσι η σελίδα δεν θα γίνει crawl και θα αρθεί μια εξαίρεση. Επίσης πολλές εξαιρέσεις δικτύου μπορούν να προκύψουν. Όλες αυτές οι εξαιρέσεις μπορούν να ανιχνευθούν και το worm μπορεί να συνεχίσει παίρνοντας το επόμενο Link από την λίστα. Όταν ένα worm κατεβάσει επιτυχώς μια σελίδα αυτή αναλύεται και αποθηκεύεται στην κλάση Link[ 31]. Στην συνέχεια καλείται η μέθοδος process για να γίνει επεξεργασία της τρέχουσας σελίδας. Όταν ολοκληρωθεί η επεξεργασία της σελίδας το περιεχόμενο αυτής αποδεσμεύεται από τη μνήμη και το wormεπανέρχεται στην αρχή του βρόγχου με σκοπό να πάρει ένα νέο link για να συνεχιστεί η διαδικασία του crawling. 104

105 Process και Expand μέθοδοι Η μέθοδος expand ανακτά όλα τα Link από μια σελίδα και αρκετοί έλεγχοι γίνονται στα links μέχρι να αποσταλούν στις fetch ουρές. Το worm αρχικά εξετάζει εάν έχει ξανασυναντήσει το Link. Στην συνέχεια εξετάζει εάν πρέπει να επισκεφτεί το link μέσω της κατάλληλης μεθόδου. Τέλος ελέγχει το βάθος του link μήπως έχει ξεπεραστεί το μέγιστο επιτρεπτό βάθος των παραμέτρων που γίνεται το crawling. Όταν το link περάσει επιτυχώς όλους τους ελέγχους αποστέλλεται στην κατάλληλη ουρά. Visited και ShouldVisit μέθοδοι Οι πληροφορίες για τα URLs των επισκεπτόμενων σελίδων κρατιούνται μέσω της κλάσης TreeSet. Η αποθήκευση των URL ως αλφαριθμητικά απαιτεί αρκετό χώρο στη μνήμη ωστόσο έχουμε μια CRC32 τιμή για κάθε URL. Ο έλεγχος για το αν πρέπει ο crawler να επισκεφτεί ένα url είναι πολύ σημαντικός. Εάν ο crawler σχεδιάστηκε για να επισκεφτεί μόνο το domain του auth.gr πρέπει για το url να εξετάζεται εάν εμπεριέχει το auth.gr. O crawler μπορεί να επισκεφτεί διαφορετικό hostname μέσω της μεθόδου sethostroot. Ο λόγος που γίνεται έλεγχος της πόρτα 80 που βρίσκεται μια σελίδα είναι ο εξής: Σελίδες που δεν βρίσκονται στην πόρτα 80 είναι διαφορετικού σκοπού οπότε δεν χρειάζεται να τις επισκεφτούμε. Επίσης πρέπει να ελέγχουμε την επέκταση των αρχείων. Για παράδειγμα εάν δεν επεξεργαζόμαστε αρχεία εικόνων δεν χρειάζεται ο crawler να επισκεφτεί ένα τέτοιο link(με κατάληξη.bmp ή jpg). Το ίδιο ισχύει και για link που τελειώνουν σε καταλήξεις.php,.jsp, οι οποίες δηλώνουν δυναμικές ιστοσελίδες. 8.2 Λεπτομερής ανάλυση της Βάσης Δεδομένων Jxspinx_page Εικόνα 40. Ο πίνακας JxSPhinx_page `id` : τα αποτελεί το πρωτεύων κλειδί του πίνακα και δηλώνει τον αύξοντα αριθμό της εγγραφής `url`:η URLδιεύθυνση που αντιστοιχεί για κάθε σελίδα επίσκεψης του JxSPhinx `authority` :η authorityπου ανήκει η συγκεκριμένη σελίδα `title` : ο τίτλος της σελίδας 105

106 `description`:η περιγραφή που υπάρχει για την τρέχουσα σελίδα έτσι όπως έχει οριστεί και μπορεί να βλέπει κάποιος χρήστης κατά την αναζήτηση στις διάφορες μηχανές `words: η διαδρομή προς το δίσκο για το αρχείο το οποίο κρατάει όλες τις λέξεις που εμπεριέχονται σε μια σελίδα `depth` :το βάθος που βρίσκεται η σελίδα στο δέντρο διάσχισης `base`: το base url από το οποίο μπορούμε να κατεβάσουμε την σελίδα `link_origin: ο σύνδεσμος ο οποίος δείχνει στην συγκεκριμένη σελίδα `parent_url`: το όνομα του Hostπου βρίσκεται το url `hasjavascript`:παίρνει τιμή trueή false ανάλογα με το αν περιέχει JavaScriptπεριεχόμενο η σελίδα `hasflash` :παίρνει τιμή trueή false ανάλογα με το αν περιέχει flash περιεχόμενο η σελίδα Jxspinx_page_links Εικόνα 41. O πίνακας JxSPhinx_page_links Page_id το id της σελίδας( από τον πίνακα Jxspinx_page)που βρίσκεται ο συγκεκριμένος σύνδεσμος Link:το όνομα του συνδέσμου JxSPhinx_tags Εικόνα 42. Ο πίνακας JxSPhinx_tags Page_id:το id της σελίδας( από τον πίνακα Jxspinx_page)που βρίσκεται ο συγκεκριμένος σύνδεσμος Keywords:το μεταδεδoμένο το οποίο περιέχει λέξεις κλειδιά για μια σελίδα Robots:το περιεχόμενο του μεταδεδομένου Robotγια μια σελίδα Description: τοtag description της σελίδας 106

107 webspinx_page Εικόνα 43. Ο πίνακας WebSphinx_page `id` : τα αποτελεί το πρωτεύων κλειδί του πίνακα και δηλώνει τον αύξοντα αριθμό της εγγραφής `url`:η URL διεύθυνση που αντιστοιχεί για κάθε σελίδα επίσκεψης του WebSphinx `authority` :η authorityπου ανήκει η συγκεκριμένη σελίδα `title` : ο τίτλος της σελίδας `description`:η περιγραφή που υπάρχει για την τρέχουσα σελίδα έτσι όπως έχει οριστεί και μπορεί να βλέπει κάποιος χρήστης κατά την αναζήτηση στις διάφορες μηχανές `words: η διαδρομή προς το δίσκο για το αρχείο το οποίο κρατάει όλες τις λέξεις που εμπεριέχονται σε μια σελίδα `depth` :το βάθος που βρίσκεται η σελίδα στο δέντρο διάσχισης `base`: το base url από το οποίο μπορούμε να κατεβάσουμε την σελίδα `link_origin: ο σύνδεσμος ο οποίος δείχνει στην συγκεκριμένη σελίδα `parent_url`: το όνομα του Hostπου βρίσκεται το url `hasjavascript`:παίρνει τιμή trueή false ανάλογα με το αν περιέχει JavaScriptπεριεχόμενο η σελίδα `hasflash` :παίρνει τιμή true ή false ανάλογα με το αν περιέχει flashπ εριεχόμενο η σελίδα webspinx_page_links Εικόνα 44. Ο πίνακας WebSphinx_page_links Page_id το id της σελίδας( από τον πίνακα Webspinx_page)που βρίσκεται ο συγκεκριμένος σύνδεσμος Link:το όνομα του συνδέσμου 107

ΕΠΛ 002: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης

ΕΠΛ 002: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης ΕΠΛ 002: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Μηχανές αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιον λόγο μας είναι απαραίτητες οι μηχανές αναζήτησης στον Παγκόσμιο Ιστό. Να περιγράψουμε κάποιους από τους

Διαβάστε περισσότερα

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο FrontPage 2003 Πρακτικός Οδηγός Χρήσης Το FrontPage είναι ένα πρόγραμμα δημιουργίας ιστοσελίδων και δικτυακών τόπων που επιτρέπει το σχεδιασμό ιστοσελίδων μέσα από γραφικό περιβάλλον αλλά και την ταυτόχρονη

Διαβάστε περισσότερα

2 Μάρκετινγκ µηχανών αναζήτησης (Search Engine Marketing).

2 Μάρκετινγκ µηχανών αναζήτησης (Search Engine Marketing). 1 Εισαγωγή στο Internet Marketing 1.1. Τι πρέπει να γνωρίζετε πριν ξεκινήσετε. 1.2. Εξοικείωση µε τα εργαλεία βελτιστοποίησης των µηχανών αναζήτησης. 2 Μάρκετινγκ µηχανών αναζήτησης (Search Engine Marketing).

Διαβάστε περισσότερα

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

Βασικές Έννοιες Web Εφαρμογών ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Τεχνολογίες και Εφαρμογές Διαδικτύου Βασικές Έννοιες Web Εφαρμογών Κατερίνα Πραματάρη Τεχνολογίες και Εφαρμογές Διαδικτύου Περιεχόμενα

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Μηχανές αναζήτησης

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Μηχανές αναζήτησης ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Μηχανές αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιο λόγο μας είναι απαραίτητες οι μηχανές αναζήτησης στον Παγκόσμιο Ιστό. Να περιγράψουμε κάποιους

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ Δρ. Κουζαπάς Δημήτριος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Μηχανές Αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιον λόγο μας είναι απαραίτητες

Διαβάστε περισσότερα

E-commerce Networks & Applications. Η διαφήμιση στο Internet. Νίκος Κωνσταντίνου

E-commerce Networks & Applications. Η διαφήμιση στο Internet. Νίκος Κωνσταντίνου E-commerce Networks & Applications Η διαφήμιση στο Internet Νίκος Κωνσταντίνου Εισαγωγή Ηαπλήδημιουργίαενόςsite δεν είναι πλέον αρκετή Μια επένδυση σε ανάπτυξη και συντήρηση δεν αποδίδει χωρίς διαφήμιση

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Μηχανές αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιον λόγο μας είναι απαραίτητες οι μηχανές αναζήτησης στον Παγκόσμιο Ιστό. Να περιγράψουμε κάποιους από τους

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΜΑΡΚΕΤΙΝΓΚ

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΜΑΡΚΕΤΙΝΓΚ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΜΑΡΚΕΤΙΝΓΚ Ενότητα 8: Search Engine Marketing Βλαχοπούλου Μάρω Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως

Διαβάστε περισσότερα

Η HTML 5 θα αλλάξει το Web?

Η HTML 5 θα αλλάξει το Web? Η HTML 5 θα αλλάξει το Web? (ή αλλιώς, έρχεται το τέλος των plugins?) Αλέξανδρος Καράκος Εργαστήριο Προγραµµατισµού και Επεξεργασίας Πληροφοριών Internet 2... Είναι ένα ξεχωριστό µέσο δηµοσίευσης πληροφοριών

Διαβάστε περισσότερα

A J A X AJAX Γιάννης Αρβανιτάκης

A J A X AJAX Γιάννης Αρβανιτάκης A J A X AJAX Γιάννης Αρβανιτάκης 04/07/08 AJAX Στην πράξη 2 Autocomplete AJAX Στην πράξη 3 Webmail (google, yahoo) AJAX Στην πράξη 4 Flickr AJAX Στην πράξη 5 Google Docs AJAX Στην πράξη 6 Google maps http://maps.google.com/

Διαβάστε περισσότερα

Δικτυακοί τόποι. Η σχεδίαση ενός δικτυακού τόπου. Δρ. Ματθαίος Α. Πατρινόπουλος

Δικτυακοί τόποι. Η σχεδίαση ενός δικτυακού τόπου. Δρ. Ματθαίος Α. Πατρινόπουλος Δικτυακοί τόποι Η σχεδίαση ενός δικτυακού τόπου Δρ. Ματθαίος Α. Πατρινόπουλος Πώς χρησιμοποιούμε το διαδίκτυο; ΔΙΑΦΑΝΕΙΕΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΔΙΑΔΙΚΤΥΟΥ. 2 Από το www.smartinsights.

Διαβάστε περισσότερα

ΠΑΡΟΥΣΙΑΣΗ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΙΣΤΟΣΕΛΙΔΩΝ ΓΙΑ ΤΙΣ ΜΗΧΑΝΕΣ ΑΝΑΖΗΤΗΣΗΣ, ΠΟΙΟΤΙΚΗ ΕΡΕΥΝΑ ΣΕ ΕΙΔΙΚΟΥΣ SEO

ΠΑΡΟΥΣΙΑΣΗ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΙΣΤΟΣΕΛΙΔΩΝ ΓΙΑ ΤΙΣ ΜΗΧΑΝΕΣ ΑΝΑΖΗΤΗΣΗΣ, ΠΟΙΟΤΙΚΗ ΕΡΕΥΝΑ ΣΕ ΕΙΔΙΚΟΥΣ SEO Βαμβακάς Χρήστος Τασούλης Κωνσταντίνος ΠΑΡΟΥΣΙΑΣΗ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΙΣΤΟΣΕΛΙΔΩΝ ΓΙΑ ΤΙΣ ΜΗΧΑΝΕΣ ΑΝΑΖΗΤΗΣΗΣ, ΠΟΙΟΤΙΚΗ ΕΡΕΥΝΑ ΣΕ ΕΙΔΙΚΟΥΣ SEO INTERNET MARKETING Βασικότεροι τύποι: Social

Διαβάστε περισσότερα

Πώς λειτουργεί το Google?

Πώς λειτουργεί το Google? Πώς λειτουργεί το Google? Στα άδυτα του Γίγαντα της Αναζήτησης! Το να ψάξουμε κάτι στο Google είναι κάτι τόσο καθημερινό για τους περισσότερους από εμάς, που το θεωρούμε δεδομένο. Αυτό που ίσως ξεχνάμε

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ Κεφάλαιο 2. Το περιβάλλον του παγκόσμιου Ιστού Επιμέλεια: Καραγιάννης Σπύρος Καθηγητής ΠΕ19 Πλεονεκτήματα παγκόσμιου Ιστού Εξυπηρετητής Ιστού & Ιστοσελίδες Κύριες

Διαβάστε περισσότερα

Σεμινάριο Wordpress CMS (Δημιουργία Δυναμικών Ιστοσελίδων)

Σεμινάριο Wordpress CMS (Δημιουργία Δυναμικών Ιστοσελίδων) Σεμινάριο Wordpress CMS (Δημιουργία Δυναμικών Ιστοσελίδων) Τι είναι το Wordpress: To Wordpress είναι ένα δωρεάν ανοικτού κώδικα (open source) λογισμικό (εφαρμογή), με το οποίο μπορεί κάποιος να δημιουργεί

Διαβάστε περισσότερα

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Εργαλεία ανάπτυξης εφαρμογών internet Ι IEK ΟΑΕΔ ΚΑΛΑΜΑΤΑΣ ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΟΦΟΡΙΚΗΣ Εργαλεία ανάπτυξης εφαρμογών internet Ι Διδάσκουσα: Κανελλοπούλου Χριστίνα ΠΕ19 Πληροφορικής 4 φάσεις διαδικτυακών εφαρμογών 1.Εφαρμογές στατικής πληροφόρησης

Διαβάστε περισσότερα

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών Α.Ε.Ι.

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών Α.Ε.Ι. Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών Α.Ε.Ι. Παραδοτέο: Δημοσιότητα Ανάλυση Αρχείων Κίνησης Πληροφοριακού Κόμβου submit-atlas.grnet.gr Σελίδα 1 από 164 Σελίδα 2 από 164 Σύνοψη H

Διαβάστε περισσότερα

Τα είδη των ιστοσελίδων. Web Sites E-commerce Sites CMS & Blog Sites CMS Flash Facebook Layouts Tumblr Themes

Τα είδη των ιστοσελίδων. Web Sites E-commerce Sites CMS & Blog Sites CMS Flash Facebook Layouts Tumblr Themes Ορισμός ιστοσελίδας Ιστοσελίδα (αγγλικά: web page) είναι ένα είδος εγγράφου του παγκόσμιου ιστού (WWW) που περιλαμβάνει πληροφορίες με την μορφή κειμένου, υπερκειμένου, εικόνας, βίντεο και ήχου. Τα είδη

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος... 13. Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος... 13. Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος... 13 Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15 1.1 Εισαγωγή... 16 1.2 Διαδίκτυο και Παγκόσμιος Ιστός Ιστορική αναδρομή... 17 1.3 Αρχές πληροφοριακών συστημάτων

Διαβάστε περισσότερα

Speed-0 WMP: Web and Mobile Platform Software Requirements Specification

Speed-0 WMP: Web and Mobile Platform Software Requirements Specification Speed-0 Web and Mobile Platform Speed-0 WMP: Web and Mobile Platform Software Requirements Specification Version Revision History Date Version Description People 5/4/2012 Αρχικές Προδιαγραφές

Διαβάστε περισσότερα

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο Το περιβάλλον εργασίας Ανοίγοντας την Ελληνική Έκδοση του FrontPage, για πρώτη φορά, η εικόνα που θα συναντήσουμε είναι αυτή της Εικόνας 1 με τα Μενού Εντολών και τη Γραμμή Εργαλείων, στο πάνω μέρος της

Διαβάστε περισσότερα

Μεταπτυχιακή Διατριβή

Μεταπτυχιακή Διατριβή Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική» Μεταπτυχιακή Διατριβή Τίτλος Διατριβής Υπηρεσία Αυτόματης Ανάκτησης Συνδεδεμένης Δομής Θεματικών Επικεφαλίδων μέσω

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ της Πλατφόρμας Τηλεκατάρτισης ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή...2 2. Αρχική σελίδα, Εισαγωγή & Περιβάλλον Συστήματος...3 2.1. Αρχική σελίδα εισαγωγής...3 2.2. Εισαγωγή στην Πλατφόρμα Τηλε-κατάρτισης...4

Διαβάστε περισσότερα

Περιεχόμενα. Δημιουργία σύνδεσης... 27 5. ΤΙ ΕΙΝΑΙ ΙΣΤΟΣΕΛΙΔΕΣ ΚΑΙ ΤΙ ΤΟΠΟΘΕΣΙΕΣ ΙΣΤΟΥ... 37. Γνωριμία με μια ιστοσελίδα:... 38

Περιεχόμενα. Δημιουργία σύνδεσης... 27 5. ΤΙ ΕΙΝΑΙ ΙΣΤΟΣΕΛΙΔΕΣ ΚΑΙ ΤΙ ΤΟΠΟΘΕΣΙΕΣ ΙΣΤΟΥ... 37. Γνωριμία με μια ιστοσελίδα:... 38 Περιεχόμενα ΠΡΟΛΟΓΟΣ... 11 ΔΙΑΔΙΚΤΥΟ... 13 1. ΙΣΤΟΡΙΑ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ... 15 2. ΤΙ ΕΙΝΑΙ ΤΟ ΔΙΑΔΙΚΤΥΟ INTERNET;... 16 3. ΤΙ ΠΡΟΣΦΕΡΕΙ ΤΟ ΔΙΑΔΙΚΤΥΟ, ΤΙ ΜΠΟΡΕΙ ΝΑ ΒΡΕΙ ΚΑΝΕΙΣ... 19 4. ΤΙ ΑΠΑΙΤΕΙΤΑΙ ΓΙΑ ΝΑ

Διαβάστε περισσότερα

Πνευµατικά ικαιώµατα

Πνευµατικά ικαιώµατα Πνευµατικά ικαιώµατα Το παρόν είναι πνευµατική ιδιοκτησία της ACTA Α.Ε. και προστατεύεται από την Ελληνική και Ευρωπαϊκή νοµοθεσία που αφορά τα πνευµατικά δικαιώµατα. Απαγορεύεται ρητώς η δηµιουργία αντιγράφου,

Διαβάστε περισσότερα

hel-col@otenet.gr Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής (ΠΕ19 MSc) Ελληνικό Κολλέγιο Θεσσαλονίκης kparask@hellenic-college.

hel-col@otenet.gr Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής (ΠΕ19 MSc) Ελληνικό Κολλέγιο Θεσσαλονίκης kparask@hellenic-college. Χρήση της Διεπαφής Προγραμματισμού Εφαρμογής Google Maps για τη δημιουργία διαδραστικού χάρτη με τα Μνημεία Παγκόσμιας Πολιτιστικής Κληρονομιάς της ΟΥΝΕΣΚΟ στη Θεσσαλονίκη Εμμανουήλ Τσάμης 1, Κωνσταντίνος

Διαβάστε περισσότερα

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

ΑΣΚΗΣΗ. Συγκομιδή και δεικτοδότηση ιστοσελίδων Γλωσσική Τεχνολογία Ακαδημαϊκό Έτος 2010-2011 ΑΣΚΗΣΗ Συγκομιδή και δεικτοδότηση ιστοσελίδων Σκοπός της άσκησης είναι η υλοποίηση ενός ολοκληρωμένου συστήματος συγκομιδής και δεικτοδότησης ιστοσελίδων.

Διαβάστε περισσότερα

Εφαρμογή Ηλεκτρονικής Διαχείρισης Μετεγγραφών

Εφαρμογή Ηλεκτρονικής Διαχείρισης Μετεγγραφών Εφαρμογή Ηλεκτρονικής Διαχείρισης Μετεγγραφών Παραδοτέο: Αναφορά Συντήρησης και Λειτουργίας της Εφαρμογής Ανάλυση αρχείων κίνησης δικτυακού τόπου submit-meteggrafes.minedu.gov.gr Σύνοψη H αναφορά αυτή

Διαβάστε περισσότερα

Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη

Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη Όνοµα: Νικολαΐδης Αντώνιος Επιβλέπων: Τ. Σελλής Περίληψη ιπλωµατικής Εργασίας Συνεπιβλέποντες: Θ. αλαµάγκας, Γ. Γιαννόπουλος

Διαβάστε περισσότερα

Internet Business Hellas

Internet Business Hellas Internet Business Hellas Περιεχόμενα Εισαγωγή email marketing IBNEWSLETTER Χαρακτηριστικά Πλεονεκτήματα Επικοινωνία Εισαγωγή email marketing «Το μάρκετινγκ μέσω ηλεκτρονικού ταχυδρομείου συνίσταται στην

Διαβάστε περισσότερα

Υπηρεσία φωνητικής υποστήριξης των ιστοτόπων της ΕΡΤ Α.Ε.

Υπηρεσία φωνητικής υποστήριξης των ιστοτόπων της ΕΡΤ Α.Ε. Υπηρεσία φωνητικής υποστήριξης των ιστοτόπων της ΕΡΤ Α.Ε. ΙΑΝΟΥΑΡΙΟΣ 2017 Περιεχόμενα 1. ΑΝΤΙΚΕΙΜΕΝΟ ΔΙΑΓΩΝΙΣΜΟΥ... 3 2. ΑΞΙΟΛΟΓΗΣΗ ΚΑΤΑΚΥΡΩΣΗ... 4 2.1 Όλοι οι όροι είναι απαράβατοι και η μη τήρηση έστω

Διαβάστε περισσότερα

ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΟΥ Explorer & Outlook 2013

ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΟΥ Explorer & Outlook 2013 ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΟΥ Explorer & Outlook 2013 1. Δίκτυα Υπολογιστών και Διαδίκτυο... 3 1.1. Όροι Και Έννοιες... 3 1.2. Ασφάλεια Στο Διαδίκτυο... 5 2. Περιήγηση στον Παγκόσμιο Ιστό 7 Το Περιβάλλον Ενός Φυλλομετρητή...

Διαβάστε περισσότερα

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

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol HTTP Protocol Web and HTTP Βασικά Συστατικά: Web Server Web Browser HTTP Protocol Web Servers (1/2) Ένα πρόγραμμα (λογισμικό) που έχει εγκατασταθεί σε ένα υπολογιστικό σύστημα (έναν ή περισσότερους υπολογιστές)

Διαβάστε περισσότερα

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΩΝ

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΩΝ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΩΝ 1Τι είναι ο Παγκόσµιος Ιστός; Λόγω της µεγάλης απήχησης του Παγκόσµιου Ιστού πολλές φορές ταυτίζουµε τον Παγκόσµιο Ιστό µε το Διαδίκτυο. Στην πραγµατικότητα αυτή η αντίληψη

Διαβάστε περισσότερα

Οικονομική Προσφορά Προώθηση ιστοσελίδας

Οικονομική Προσφορά Προώθηση ιστοσελίδας Οικονομική Προσφορά Προώθηση ιστοσελίδας 2015 Η εταιρία μας Η Moving up είναι μια εταιρία που δραστηριοποιείται στον τομέα των ολοκληρωμένων μορφών επικοινωνίας και διαφήμισης.όποιο και αν είναι το διαφημιστικό

Διαβάστε περισσότερα

Προγραμματισμός Διαδικτύου

Προγραμματισμός Διαδικτύου Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Προγραμματισμός Διαδικτύου Δρ. Μηνάς Δασυγένης mdasygenis@uowm.gr Τμήμα της παρουσίασης δημιουργήθηκε από τον κ. Παναγιώτη

Διαβάστε περισσότερα

Δημιουργία. Ιστολογίου (blog) 7/5/2015. Χρυσάνθη Γιομέλου ΚΔΒΜ ΝΙΚΑΙΑΣ

Δημιουργία. Ιστολογίου (blog)  7/5/2015. Χρυσάνθη Γιομέλου ΚΔΒΜ ΝΙΚΑΙΑΣ Δημιουργία 7/5/2015 Ιστολογίου (blog) www.blogger.com Χρυσάνθη Γιομέλου ΚΔΒΜ ΝΙΚΑΙΑΣ ΠΕΡΙΕΧΟΜΕΝΑ TI EINAI TO ΙΣΤΟΛΟΓΙΟ... 2 ΓΙΑΤΙ ΙΣΤΟΛΟΓΙΟ;... 2 ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΗΣ ΧΡΗΣΗΣ ΙΣΤΟΛΟΓΙΟΥ... 2 ΔΗΜΙΟΥΡΓΙΑ ΛΟΓΑΡΙΑΣΜΟΥ

Διαβάστε περισσότερα

ΠΡΟΔΙΑΓΡΑΦΕΣ ΔΙΑΔΙΚΤΥΑΚΟΥ ΤΟΠΟΥ ΕΥΡΩΠΑΪΚΟΥ ΚΕΝΤΡΟΥ ΚΑΤΑΝΑΛΩΤΗ ΕΛΛΑΔΑΣ

ΠΡΟΔΙΑΓΡΑΦΕΣ ΔΙΑΔΙΚΤΥΑΚΟΥ ΤΟΠΟΥ ΕΥΡΩΠΑΪΚΟΥ ΚΕΝΤΡΟΥ ΚΑΤΑΝΑΛΩΤΗ ΕΛΛΑΔΑΣ ΠΡΟΔΙΑΓΡΑΦΕΣ ΔΙΑΔΙΚΤΥΑΚΟΥ ΤΟΠΟΥ ΕΥΡΩΠΑΪΚΟΥ ΚΕΝΤΡΟΥ ΚΑΤΑΝΑΛΩΤΗ ΕΛΛΑΔΑΣ Περιεχόμενα Εισαγωγή...2 Βασικές έννοιες και συντομογραφίες...2 Βασικά έγγραφα και συντομογραφίες...2 Στόχοι και Λειτουργίες του Διαδικτυακού

Διαβάστε περισσότερα

ΤΙΤΛΟΣ ΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ: GoNToggle: ΕΞΥΠΝΗ ΜΗΧΑΝΗ ΑΝΑΖΗΤΗΣΗΣ ΜΕ ΧΡΗΣΗ ΟΝΤΟΛΟΓΙΩΝ ΠΕΡΙΟΧΗ ΕΡΕΥΝΑΣ: ΣΥΓΓΡΑΦΕΑΣ:

ΤΙΤΛΟΣ ΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ: GoNToggle: ΕΞΥΠΝΗ ΜΗΧΑΝΗ ΑΝΑΖΗΤΗΣΗΣ ΜΕ ΧΡΗΣΗ ΟΝΤΟΛΟΓΙΩΝ ΠΕΡΙΟΧΗ ΕΡΕΥΝΑΣ: ΣΥΓΓΡΑΦΕΑΣ: ΤΙΤΛΟΣ ΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ: GoNToggle: ΕΞΥΠΝΗ ΜΗΧΑΝΗ ΑΝΑΖΗΤΗΣΗΣ ΜΕ ΧΡΗΣΗ ΟΝΤΟΛΟΓΙΩΝ ΠΕΡΙΟΧΗ ΕΡΕΥΝΑΣ: Υπολογιστικά Συστήµατα & Τεχνολογίες Πληροφορικής ΣΥΓΓΡΑΦΕΑΣ: Γιώργος Γιαννόπουλος, διδακτορικός φοιτητής

Διαβάστε περισσότερα

Περιεχόμενα. Τεχνικό εγχειρίδιο χρήσης IBNEWSLETTER

Περιεχόμενα. Τεχνικό εγχειρίδιο χρήσης IBNEWSLETTER Περιεχόμενα ΣΤΟΙΧΕΙΑ ΕΠΙΚΟΙΝΩΝΙΑΣ... 2 Τμήμα Υποστήριξης (Help Desk and Client Support)... 2 ΕΙΣΑΓΩΓΗ... 3 Εισαγωγή Email marketing... 3 Σχετικά με το IBNEWSLETTER... 3 Μεθοδολογία... 4 Χαρακτηριστικά...

Διαβάστε περισσότερα

ΑΝΑΚΟΙΝΩΣΕΙΣ ΠΡΟΜΗΘΕΙΩΝ/ΕΡΓΑΣΙΩΝ ΜΕ ΛΗΨΗ ΠΡΟΣΦΟΡΏΝ 10/16

ΑΝΑΚΟΙΝΩΣΕΙΣ ΠΡΟΜΗΘΕΙΩΝ/ΕΡΓΑΣΙΩΝ ΜΕ ΛΗΨΗ ΠΡΟΣΦΟΡΏΝ 10/16 ΤΕΙ ΘΕΣΣΑΛΙΑΣ ΔΙΕΥΘΥΝΣΗ ΟΙΚΟΝΟΜΙΚΟΥ ΤΜΗΜΑ ΜΙΣΘΟΔΟΣΙΑΣ ΑΠΟΖΗΜΙΩΣΕΩΝ Λάρισα 31/5/2016 ΠΡΟΜΗΘΕΙΩΝ & ΠΕΡΙΟΥΣΙΑΣ ΑΝΑΚΟΙΝΩΣΕΙΣ ΠΡΟΜΗΘΕΙΩΝ/ΕΡΓΑΣΙΩΝ ΜΕ ΛΗΨΗ ΠΡΟΣΦΟΡΏΝ 10/16 1. Με την αριθμ. 876/17-5-2016 απόφαση

Διαβάστε περισσότερα

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ Παραδοτέο: Δημοσιότητα Ανάλυση Αρχείων Κίνησης Διαδικτυακής Πύλης atlas.grnet.gr Σελίδα 1 από 163 Διαδικτυακής Πύλης atlas.grnet.gr» Σύνοψη

Διαβάστε περισσότερα

ICOP - ΥΠΗΡΕΣΙΕΣ INTERNET-WEBSOLUTIONS ΠΡΟΤΑΣΗ-ΑΝΑΘΕΣΗ ΕΡΓΟΥ(760) Εταιρεία:.. Προς:. Tηλ.:.. Πωλητής:

ICOP - ΥΠΗΡΕΣΙΕΣ INTERNET-WEBSOLUTIONS ΠΡΟΤΑΣΗ-ΑΝΑΘΕΣΗ ΕΡΓΟΥ(760) Εταιρεία:.. Προς:. Tηλ.:.. Πωλητής: Θρασυμάχου 14, Αθήνα - 6ος όροφος Τηλέφωνο: 210 2139880 Fax: 210 2139916 E-mail: sales@icop.gr www.icop.gr ICOP - ΥΠΗΡΕΣΙΕΣ INTERNET-WEBSOLUTIONS ΠΡΟΤΑΣΗ-ΑΝΑΘΕΣΗ ΕΡΓΟΥ(760) Ημερομηνία:.. E-mail: Εταιρεία:..

Διαβάστε περισσότερα

1. ΕΙΣΑΓΩΓΗ 2. ΠΕΡΙΓΡΑΦΗ

1. ΕΙΣΑΓΩΓΗ 2. ΠΕΡΙΓΡΑΦΗ 1. ΕΙΣΑΓΩΓΗ Το πακέτο λογισµικού AuctionDesigner είναι ένα από τα πολλά πακέτα που έχουν σχεδιαστεί και µπορεί να παραγγείλει κανείς µέσω του Internet µε σκοπό να αναπτύξει εφαρµογές ηλεκτρονικού εµπορίου.

Διαβάστε περισσότερα

Τεχνικός Εφαρμογών Πληροφορικής

Τεχνικός Εφαρμογών Πληροφορικής Τεχνικός Εφαρμογών Πληροφορικής ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΙΣΑΓΩΓΗ Εξάμηνο: 2014Β Διδάσκουσα: Ηλεκτρονική Τάξη: Κανελλοπούλου Χριστίνα_ΠΕ19 Πληροφορικής Περιεχόμενα 1.Τι είναι η Php; 2.Πως γίνετε η γραφή

Διαβάστε περισσότερα

Στρατηγική ανάπτυξη δικτυακού κόμβου

Στρατηγική ανάπτυξη δικτυακού κόμβου ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Παντελής Παντελίδης Στρατηγική ανάπτυξη δικτυακού κόμβου Επιβλέπουσα Καθηγήτρια: Μάρω Βλαχοπούλου Εξετάστρια:

Διαβάστε περισσότερα

Παγκόσμιος ιστός και Internet συχνά θεωρούνται το ίδιο πράγμα. Η αντίληψη αυτή είναι λανθασμένη καθώς ο ιστός αποτελεί μία μόνο εφαρμογή του

Παγκόσμιος ιστός και Internet συχνά θεωρούνται το ίδιο πράγμα. Η αντίληψη αυτή είναι λανθασμένη καθώς ο ιστός αποτελεί μία μόνο εφαρμογή του Ο Παγκόσμιος Ιστός Ο Παγκόσμιος Ιστός (World Wide Web - WWW) είναι η πιο δημοφιλής υπηρεσία του Διαδικτύου, που μας επιτρέπει με ιδιαίτερα εύκολο τρόπο να έχουμε πρόσβαση σε μια τεράστια συλλογή ψηφιακών

Διαβάστε περισσότερα

Website review lalemou.com

Website review lalemou.com Website review lalemou.com Generated on September 16 2017 11:58 AM The score is 52/100 SEO Content Title Κάνε Γνωριμίες στο chat μπαμ! Live & Ανώνυμα lalemou Length : 54 Perfect, your title contains between

Διαβάστε περισσότερα

Διαδίκτυο: Ιστορία, Δομή, Υπηρεσίες

Διαδίκτυο: Ιστορία, Δομή, Υπηρεσίες Διαδίκτυο: Ιστορία, Δομή, Υπηρεσίες 1 η Ερώτηση (Ορισμός): Τι είναι το Διαδίκτυο; Διαδίκτυο είναι το παγκόσμιο δίκτυο όλων των επιμέρους δικτύων που έχουν συμφωνήσει σε κοινούς κανόνες επικοινωνίας και

Διαβάστε περισσότερα

Tales & Trails. apps4thessaloniki 2016

Tales & Trails. apps4thessaloniki 2016 Tales & Trails apps4thessaloniki 2016 the digiwalkers team Πανισκάκη Κική, πτυχιούχος τμήματος Πληροφορικής ΑΠΘ, σχεδίαση & ανάπτυξη εφαρμογής Βακάλη Αθηνά, Kαθηγήτρια Πληροφορικής στο Αριστοτέλειο Πανεπιστήμιο

Διαβάστε περισσότερα

Άνοιγμα (και κλείσιμο) της εφαρμογής Εγγράφου Κειμένου

Άνοιγμα (και κλείσιμο) της εφαρμογής Εγγράφου Κειμένου 3.1.1.1 Άνοιγμα (και κλείσιμο) της εφαρμογής Εγγράφου Κειμένου Ως επί το πλείστον δεν υπάρχουν διαφορές στη χρήση του Εγγράφου Κειμένου στα λειτουργικά Windows ή Linux. Η σημαντικότερη διαφορά παρουσιάζεται

Διαβάστε περισσότερα

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή 1 Πίνακας Περιεχομένων 1. Εισαγωγή... 4 1.1 Περιβάλλον Moodle...4 1.2 Χρήση ονόματος χρήστη και κωδικού...4 1.3 Δημιουργία νέου μαθήματος...4 1.3.1

Διαβάστε περισσότερα

interactivecommunication Search Marketing White Paper Φεβρουάριος 2007 2007, Cybertechnics Ltd. All rights reserved.

interactivecommunication Search Marketing White Paper Φεβρουάριος 2007 2007, Cybertechnics Ltd. All rights reserved. interactivecommunication White Paper Φεβρουάριος 2007 2007, Cybertechnics Ltd. All rights reserved. ToSearchenginemarketing, ή SEM, αποτελείται απόμια σειρά marketing μεθόδων για την αύξηση τηςεμφάνισηςτου

Διαβάστε περισσότερα

Εισαγωγή στις ΤΠΕ ΙΙ Γιάννης Βρέλλης ΠΤΔΕ-Πανεπιστήμιο Ιωαννίνων. World Wide Web. Παγκόσμιος Ιστός

Εισαγωγή στις ΤΠΕ ΙΙ Γιάννης Βρέλλης ΠΤΔΕ-Πανεπιστήμιο Ιωαννίνων. World Wide Web. Παγκόσμιος Ιστός Εισαγωγή στις ΤΠΕ ΙΙ Γιάννης Βρέλλης ΠΤΔΕ-Πανεπιστήμιο Ιωαννίνων World Wide Web Παγκόσμιος Ιστός Internet - WWW Internet: παγκόσμιο δίκτυο υπολογιστών που βασίζεται στο πρωτόκολο επικοινωνίας TCP/IP και

Διαβάστε περισσότερα

Fragmentation and Exclusion: Understanding and Overcoming the Multiple Impacts of the European Crisis (Fragmex)

Fragmentation and Exclusion: Understanding and Overcoming the Multiple Impacts of the European Crisis (Fragmex) Fragmentation and Exclusion: Understanding and Overcoming the Multiple Impacts of the European Crisis (Fragmex) Π3.4: Website Έκδοση 0.1 R-2015-12 Νοέμβριος- 2015 . 2 ΠΙΝΑΚΑΣ ΙΣΤΟΡΙΚΟΥ ΕΚΔΟΣΗ ΗΜΕΡΟΜΗΝΙΑ

Διαβάστε περισσότερα

ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ. Αριθμ. Πρωτ.: /2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ

ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ. Αριθμ. Πρωτ.: /2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ Αριθμ. Πρωτ.: 129334/2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ ΤΟΥ ΑΡΙΣΤΟΤΕΛΕΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΑΚΟΙΝΩΝΕΙ Τη διενέργεια διαδικασίας ΑΠΕΥΘΕΙΑΣ

Διαβάστε περισσότερα

Σελίδα 2

Σελίδα 2 Περιεχόμενα Ασφαλής Πλοήγηση... 3 Internet Cookies... 3 Τι είναι τα cookies του internet;... 3 Πως μπορώ να αποκλείσω τα cookies;... 3 Ιδιωτική Περιήγηση... 9 Tι δεν αποθηκεύει η Ιδιωτική Περιήγηση;...

Διαβάστε περισσότερα

Vodafone Business Connect

Vodafone Business Connect Vodafone Business Connect Vodafone Business WebHosting Αναλυτικός Οδηγός Χρήσης EasySite Optimizer Αναλυτικός οδηγός χρήσης: EasySite Optimizer Vodafone Business Connect - Υπηρεσίες φιλοξενίας εταιρικού

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΕΣ ΣΧΕΔΙΑΣΗΣ ΔΙΑΔΙΚΤΥΑΚΟΥ ΤΟΠΟΥ (Web Site Design Technologies)

ΤΕΧΝΟΛΟΓΙΕΣ ΣΧΕΔΙΑΣΗΣ ΔΙΑΔΙΚΤΥΑΚΟΥ ΤΟΠΟΥ (Web Site Design Technologies) ΕΠΛ 012 ΤΕΧΝΟΛΟΓΙΕΣ ΣΧΕΔΙΑΣΗΣ ΔΙΑΔΙΚΤΥΑΚΟΥ ΤΟΠΟΥ (Web Site Design Technologies) Διδάσκων Καθηγητής: Δημήτριος Τσουμάκος Εαρινό Εξάμηνο 2010 Βασικές Πληροφορίες Πότε: Δευτέρα & Πέμπτη 10:30-12μμ Πού: ΧΩΔ01

Διαβάστε περισσότερα

Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου. Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I

Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου. Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I Διαδικτυακή Εφαρμογή (1/2) Ως διαδικτυακή εφαρμογή μπορούμε

Διαβάστε περισσότερα

Blog στο Wordpress. Επιμέλεια: Δέγγλερη Σοφία

Blog στο Wordpress. Επιμέλεια: Δέγγλερη Σοφία Blog στο Wordpress Επιμέλεια: Δέγγλερη Σοφία Περιεχόμενα Μετάβαση στο blog Σύνδεση ως διαχειριστής Πίνακας ελέγχου Εμφάνιση Ρυθμίσεις Άρθρα Σελίδες Πολυμέσα Σύνδεσμοι Μετάβαση στο blog Πληκτρολογούμε στη

Διαβάστε περισσότερα

Ηλεκτρονικό εμπόριο. HE 8 Εξατομίκευση

Ηλεκτρονικό εμπόριο. HE 8 Εξατομίκευση Ηλεκτρονικό εμπόριο HE 8 Εξατομίκευση Πληροφοριακός υπερφόρτος (information overload) Αδυναμία διαχείρισης μεγάλου όγκου πληροφοριών και εντοπισμού της χρήσιμης πληροφορίας Η εξατομίκευση στοχεύει στην

Διαβάστε περισσότερα

ΤΕΛΙΚΕΣ ΔΙΠΛΩΜΑΤΙΚΕΣ ΕΡΓΑΣΙΕΣ (6 Μονάδες ECTS)- Ακαδημαϊκό Έτος 2013 2014

ΤΕΛΙΚΕΣ ΔΙΠΛΩΜΑΤΙΚΕΣ ΕΡΓΑΣΙΕΣ (6 Μονάδες ECTS)- Ακαδημαϊκό Έτος 2013 2014 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Ηλεκτρολόγων Μηχανικών, Μηχανικών Η/Υ και Πληροφορικής ΤΕΛΙΚΕΣ ΔΙΠΛΩΜΑΤΙΚΕΣ ΕΡΓΑΣΙΕΣ (6 Μονάδες ECTS)- Ακαδημαϊκό Έτος 2013 2014 1. Ερευνητική Περιοχή: Επεξεργασία

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ

ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Α.Μ. 123/04 ΕΠΙΒΛΕΠΩΝ: ΣΑΜΑΡΑΣ ΝΙΚΟΛΑΟΣ ΘΕΣΣΑΛΟΝΙΚΗ, ΙΟΥΝΙΟΣ 2007 Περιεχόμενα

Διαβάστε περισσότερα

Χαρακτηριστικά ιστοσελίδας

Χαρακτηριστικά ιστοσελίδας Χαρακτηριστικά ιστοσελίδας COSMOS4U Web Site Pro Χαρακτηριστικά Επιπλέον Δυνατότητες Προφίλ Εταιρίας Παρουσίαση της εταιρίας σας με φωτογραφικό υλικό και κείμενα. Τήρηση προδιαγραφών και χρήση λέξεων κλειδιά

Διαβάστε περισσότερα

Δημιουργία μιας επιτυχημένης παρουσίας στο διαδίκτυο

Δημιουργία μιας επιτυχημένης παρουσίας στο διαδίκτυο Δημιουργία μιας επιτυχημένης παρουσίας στο διαδίκτυο 1 Πληροφορική: Τάσεις, Επιχειρηματικές Ευκαιρίες και Έρευνα ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ τμήματος Εφαρμοσμένης Πληροφορικής Πανεπιστημίου Μακεδονίας

Διαβάστε περισσότερα

Αναζήτηση στον Ιστό. Πληκτρολόγηση του URL: στο πλαίσιο αναζήτησης του Mozilla Firefox. Enter ή κλικ στο Αναζήτηση

Αναζήτηση στον Ιστό. Πληκτρολόγηση του URL:  στο πλαίσιο αναζήτησης του Mozilla Firefox. Enter ή κλικ στο Αναζήτηση Αναζήτηση στον Ιστό Χρήση μιας μηχανής αναζήτησης Επιλογή συγκεκριμένης μηχανής αναζήτησης Είναι συχνό το φαινόμενο να θέλει ο χρήστης να εντοπίσει πληροφορίες στο διαδίκτυο και να μην ξέρει που να κοιτάξει.

Διαβάστε περισσότερα

Παρακολούθηση και βελτιστοποίηση της επισκεψιμότητας ενός δικτυακού τόπου

Παρακολούθηση και βελτιστοποίηση της επισκεψιμότητας ενός δικτυακού τόπου Παρακολούθηση και βελτιστοποίηση της επισκεψιμότητας ενός δικτυακού τόπου Η περίπτωση του Σωμαράς Χρήστος Προγραμματιστής - Μηχανικός Μια φορά και έναν καιρό.. ήταν το Internet Marketing Digital Marketing,

Διαβάστε περισσότερα

Αν Ναι, δείτε πως με το λογισμικό axes μπορείτε!

Αν Ναι, δείτε πως με το λογισμικό axes μπορείτε! Θέλετε να μάθετε πως μπορείτε να έχετε πρόσβαση στις 5250 οθόνες μέσω browser, χωρίς αλλαγή στις υπάρχουσες εφαρμογές και χωρίς εγκατάσταση στον client? Αν Ναι, δείτε πως με το λογισμικό axes μπορείτε!

Διαβάστε περισσότερα

Ενότητες Γ3.1 - Γ3.2 - Γ3.3

Ενότητες Γ3.1 - Γ3.2 - Γ3.3 Ενότητες Γ3.1 - Γ3.2 - Γ3.3 3.1 Τo διαδίκτυο ως πηγή πληροφοριών 3.2 Αξιοποίηση- αξιολόγηση ιστοσελίδων, ιστοχώρων και πυλών 3.3 Σχεδίαση μαθημάτων με τη χρήση του διαδικτύου To Διαδίκτυο ως πηγή πληροφοριών

Διαβάστε περισσότερα

Social Network : Programming on FACEBOOK

Social Network : Programming on FACEBOOK Social Network : Programming on FACEBOOK Συντελεστές: Παύλος Τούλουπος Ευθυμία Παπαδοπούλου Ξάνθη Μάρκου Κοινωνικά Δίκτυα Κοινωνικό δίκτυο προέρχεται από την ψυχολογία αφορά μια κοινωνική δομή ατόμων τα

Διαβάστε περισσότερα

ΔΙΑΔΙΚΤΥΑΚΗ ΠΡΟΒΟΛΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ

ΔΙΑΔΙΚΤΥΑΚΗ ΠΡΟΒΟΛΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΙΔΡΥΜΑ ΝΕΟΛΑΙΑΣ ΚΑΙ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΓΕΝΙΚΗ ΔΙΕΥΘΥΝΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΩΝ ΚΑΙ ΤΕΧΝΙΚΩΝ ΕΡΓΩΝ ΤΜΗΜΑ ΤΕΧΝΙΚΗΣ ΣΤΗΡΙΞΗΣ ΕΥΡΩΠΑΙΚΩΝ ΠΡΟΓΡΑΜΜΑΤΩΝ ΚΕΝΤΡΑ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΑΠ 7/ΑΠ 8 ΔΙΑΔΙΚΤΥΑΚΗ ΠΡΟΒΟΛΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ

Διαβάστε περισσότερα

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED σχεδιασμός ιστοσελίδας ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED σχεδιασμός ιστοσελίδας ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED σχεδιασμός ιστοσελίδας ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ ADVANCED Οι Advanced θεματικές ενότητες είναι είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές στο χώρο της

Διαβάστε περισσότερα

Γαβαλάς Δαμιανός dgavalas@aegean.gr

Γαβαλάς Δαμιανός dgavalas@aegean.gr Δικτυακά Πολυμέσα ΙΙ Διάλεξη #1 η : Οργάνωση & στόχοι μαθήματος, καλές αρχές σχεδιασμού στο web, τα μεγαλύτερα λάθη στον web σχεδιασμό Γαβαλάς Δαμιανός dgavalas@aegean.gr 1 Στόχοι μαθήματος Κατανόηση της

Διαβάστε περισσότερα

φιλοξενία & διαχείριση ιστοσελίδων

φιλοξενία & διαχείριση ιστοσελίδων φιλοξενία & διαχείριση ιστοσελίδων για Ηλεκτρονικό Εμπόριο και Internet Marketing κατάλογος προϊόντων & υπηρεσιών 2015 Πακέτα φιλοξενίας - Περιγραφή Cloud Hosting - Κατοχύρωση ονόματος - Οικονομικό START

Διαβάστε περισσότερα

Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής

Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής oard Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής Πρόγραµµα Μεταπτυχιακών Σπουδών «Πληροφορική» Μεταπτυχιακή ιατριβή Τίτλος ιατριβής Masters Thesis Title Ονοµατεπώνυµο Φοιτητή Πατρώνυµο Ανάπτυξη διαδικτυακής

Διαβάστε περισσότερα

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

Το διαδίκτυο είναι ένα δίκτυο που αποτελείτε από πολλά μικρότερα δίκτυα υπολογιστών. Κεφάλαιο 2 Με το διαδίκτυο μπορεί κάποιος: να κάνει έρευνα, να ψωνίσει για διάφορες υπηρεσίες και προϊόντα, να δει καιρικούς χάρτες, να πάρει φωτογραφίες, ταινίες, και διάφορες άλλες πληροφορίες που βρίσκονται

Διαβάστε περισσότερα

Δικτυακά Πολυμέσα ΙΙ Διάλεξη #7 η : Μηχανές αναζήτησης: λειτουργία, αξιολόγηση. Γαβαλάς Δαμιανός

Δικτυακά Πολυμέσα ΙΙ Διάλεξη #7 η : Μηχανές αναζήτησης: λειτουργία, αξιολόγηση. Γαβαλάς Δαμιανός Δικτυακά Πολυμέσα ΙΙ Διάλεξη #7 η : Μηχανές αναζήτησης: λειτουργία, αξιολόγηση Γαβαλάς Δαμιανός dgavalas@aegean.gr 1 Πως οι χρήστες εντοπίζουν ιστοσελίδες στο web; Tα ποσοστά συμμετοχής των μηχανών αναζήτησης

Διαβάστε περισσότερα

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

1 Συστήματα Αυτοματισμού Βιβλιοθηκών 1 Συστήματα Αυτοματισμού Βιβλιοθηκών Τα Συστήματα Αυτοματισμού Βιβλιοθηκών χρησιμοποιούνται για τη διαχείριση καταχωρήσεων βιβλιοθηκών. Τα περιεχόμενα των βιβλιοθηκών αυτών είναι έντυπα έγγραφα, όπως βιβλία

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ web εφαρµογής - ηλεκτρονικού κατατήµατος για έξυπνα κινητά

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ web εφαρµογής - ηλεκτρονικού κατατήµατος για έξυπνα κινητά ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ web εφαρµογής - ηλεκτρονικού κατατήµατος για έξυπνα κινητά Για την STUDIO KOSTA BODA ILLUM Χανίων Πέµπτη, 9 Φεβρουαρίου 2012 Για την εταιρεία ACTS : Παπαγεωργίου

Διαβάστε περισσότερα

Ανάπτυξη ιστολογίου. Γνωστικό αντικείμενο: Ερευνητική Εργασία - Project. Δημιουργός: ΦΩΤΙΟΣ ΛΑΖΑΡΙΝΗΣ

Ανάπτυξη ιστολογίου. Γνωστικό αντικείμενο: Ερευνητική Εργασία - Project. Δημιουργός: ΦΩΤΙΟΣ ΛΑΖΑΡΙΝΗΣ Ανάπτυξη ιστολογίου Υποδειγματικό Σενάριο Γνωστικό αντικείμενο: Ερευνητική Εργασία - Project Δημιουργός: ΦΩΤΙΟΣ ΛΑΖΑΡΙΝΗΣ ΙΝΣΤΙΤΟΥΤΟ ΕΚΠΑΙΔΕΥΤΙΚΗΣ ΠΟΛΙΤΙΚΗΣ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ, ΕΡΕΥΝΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ

Διαβάστε περισσότερα

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων Γλωσσική Τεχνολογία Ακαδημαϊκό Έτος 2011-2012 Ημερομηνία Παράδοσης: Στην εξέταση του μαθήματος ΑΣΚΗΣΗ Δημιουργία Ευρετηρίων Συλλογής Κειμένων Σκοπός της άσκησης είναι η υλοποίηση ενός συστήματος επεξεργασίας

Διαβάστε περισσότερα

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική»

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική» Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική» Μεταπτυχιακή Διατριβή Τίτλος Διατριβής Ανάπτυξη Πλατφόρμας Διαδικτυακής Δημοσίευσης Χαρτογραφικών Δεδομένων Developing

Διαβάστε περισσότερα

Οδηγός γρήγορης εκκίνησης

Οδηγός γρήγορης εκκίνησης Οδηγός γρήγορης εκκίνησης Το Microsoft Word 2013 έχει διαφορετική εμφάνιση από προηγούμενες εκδόσεις. Γι αυτό το λόγο, δημιουργήσαμε αυτόν τον οδηγό για να ελαχιστοποιήσουμε την καμπύλη εκμάθησης. Γραμμή

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος... xiii

Περιεχόμενα. Πρόλογος... xiii Περιεχόμενα Πρόλογος... xiii Κεφάλαιο 1 ο Εισαγωγή στις τεχνολογίες Διαδικτύου... 1 1.1 Σύντομη ιστορία του Διαδικτύου... 3 1.2 Σύνδεση στο Διαδίκτυο μέσω Παρόχου (ISP)... 6 1.3 Μοντέλα Επικοινωνίας...

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ ΙΑ ΙΚΤΥΑΚΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΎ ΣΥΣΤΗΜΑΤΟΣ. Τρίτη, 7 Φεβρουαρίου 2012

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ ΙΑ ΙΚΤΥΑΚΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΎ ΣΥΣΤΗΜΑΤΟΣ. Τρίτη, 7 Φεβρουαρίου 2012 ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ ΙΑ ΙΚΤΥΑΚΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΎ ΣΥΣΤΗΜΑΤΟΣ Τρίτη, 7 Φεβρουαρίου 2012 Για την εταιρεία ACTS : Παπαγεωργίου Κων/νος Ποτιέ 21/ Χανιά, ΤΚ 73100 AΦΜ: 065439343 Τηλ./Fax:

Διαβάστε περισσότερα

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο) TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Στέλλα Λάμπουρα Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί

Διαβάστε περισσότερα

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΥΠΟΨΗΦΙΟΥ ΕΠΑΛ A Έκδοση 1.0, Ιούνιος 2015 ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΠΟΛΙΤΙΣΜΟΥ, ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΛΙΣΤΑ ΣΧΗΜΑΤΩΝ ΠΙΝΑΚΑΣ

Διαβάστε περισσότερα

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη

Διαβάστε περισσότερα

Ηλεκτρονικό Επιχειρείν & Νέες Τεχνολογίες για Επιχειρηματικότητα ΔΕΟ45

Ηλεκτρονικό Επιχειρείν & Νέες Τεχνολογίες για Επιχειρηματικότητα ΔΕΟ45 Ηλεκτρονικό Επιχειρείν & Νέες Τεχνολογίες για Επιχειρηματικότητα ΔΕΟ45 ΤΟΜΟΣ Α «Ηλεκτρονικό Επιχειρείν» πηγή: ibm.com Ηλεκτρονικό Επιχειρείν Η εφαρμογή τεχνολογιών πληροφορίας και επικοινωνίας (ΤΠΕ) για

Διαβάστε περισσότερα

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ -Για τους Φοιτητές- Έκδοση 1.2 Οκτώβριος 2015 Υπεύθυνος Σύνταξης: Χρήστος Λάζαρης (lazaris@aueb.gr) Πίνακας Περιεχομένων Εισαγωγή...

Διαβάστε περισσότερα

Οδηγός δημιουργίας καμπάνιας Pops / Interstitial Εισαγωγή:

Οδηγός δημιουργίας καμπάνιας Pops / Interstitial Εισαγωγή: Οδηγός δημιουργίας καμπάνιας Pops / Interstitial Εισαγωγή: Πρόκειται για Aναδυόμενες διαφημίσεις (Pop-up) πλήρους οθόνης που επικαλύπτουν το παράθυρο του browser σε μία ιστοσελίδα. O επισκέπτης πρέπει

Διαβάστε περισσότερα

Ανάπτυξη Δικτυακής Εφαρμογής Διάχυσης και Ανάλυσης Γεωχωρικών Δεδομένων και Πληροφοριών

Ανάπτυξη Δικτυακής Εφαρμογής Διάχυσης και Ανάλυσης Γεωχωρικών Δεδομένων και Πληροφοριών Ανάπτυξη Δικτυακής Εφαρμογής Διάχυσης και Ανάλυσης Γεωχωρικών Δεδομένων και Πληροφοριών Λοΐσιος ΔΗΜΗΤΡΙΟΣ (Αντισυνταγματάρχης) Αγρονόμος Τοπογράφος Μηχανικός ΕΜΠ, MSc στη Γεωπληροφορική Διευθυντής Διεύθυνσης

Διαβάστε περισσότερα

Blog στο Wordpress. Επιμέλεια: Δέγγλερη Σοφία

Blog στο Wordpress. Επιμέλεια: Δέγγλερη Σοφία Blog στο Wordpress Επιμέλεια: Δέγγλερη Σοφία Περιεχόμενα Μετάβαση στο blog Σύνδεση ως διαχειριστής Πίνακας ελέγχου Εμφάνιση Ρυθμίσεις Άρθρα Σελίδες Πολυμέσα Σύνδεσμοι Widgets Μετάβαση στο blog Πληκτρολογούμε

Διαβάστε περισσότερα

Ημερομηνία Παράδοσης: 4/4/2013

Ημερομηνία Παράδοσης: 4/4/2013 Δράση 9.14 / Υπηρεσία εντοπισμού λογοκλοπής Κυρίως Παραδοτέο / Σχεδιασμός και ανάπτυξη λογισμικού (λογοκλοπής) και βάσης δεδομένων (αποθετηρίου) Επιμέρους Παραδοτέο 9.14.1.4 / Πληροφοριακό σύστημα υπηρεσίας

Διαβάστε περισσότερα

Χαρακτηριστικά ιστοσελίδας

Χαρακτηριστικά ιστοσελίδας Χαρακτηριστικά ιστοσελίδας COSMOS4U Web Portal Χαρακτηριστικά Επιπλέον Δυνατότητες Έως 10 κατηγορίες αρθρογραφίας και 10 υποκατηγορίες Δημιουργούμε έως 10 κατηγορίες αρθρογραφίας που η κάθε μια μπορεί

Διαβάστε περισσότερα

Σχεδίαση και Ανάπτυξη Ιστότοπων

Σχεδίαση και Ανάπτυξη Ιστότοπων Σχεδίαση και Ανάπτυξη Ιστότοπων Ιστορική Εξέλιξη του Παγκόσμιου Ιστού Παρουσίαση 1 η 1 Βελώνης Γεώργιος Καθηγητής Περιεχόμενα Τι είναι το Διαδίκτυο Βασικές Υπηρεσίες Διαδικτύου Προηγμένες Υπηρεσίες Διαδικτύου

Διαβάστε περισσότερα

Η βασική εργαλειοθήκη του διαδικτύου

Η βασική εργαλειοθήκη του διαδικτύου Η βασική εργαλειοθήκη του διαδικτύου Ματθαίος Πατρινόπουλος 1 2 HTML Hyper Text Markup Language Σήμερα στην έκδοση 5 --> HTML5 Δεν είναι γλώσσα προγραμματισμού αλλά γλώσσα που καθορίζει η δομή και τις

Διαβάστε περισσότερα