Απλός Ανιχνευτής Ιστού με Python, Page Ranker και Οπτικοποιητής Αυτό είναι ένα σύνολο προγραμμάτων που μιμούνται ορισμένες από τις λειτουργίες μιας μηχανής αναζήτησης. Αποθηκεύουν τα δεδομένα τους σε μια βάση δεδομένων SQLITE3 που ονομάζεται 'spider.sqlite'. Αυτό το αρχείο μπορεί να αφαιρεθεί ανά πάσα στιγμή για να επανεκκινηθεί η διαδικασία. Θα πρέπει να εγκαταστήσετε το πρόγραμμα περιήγησης SQLite, για να προβάλετε και να τροποποιήσετε τις βάσεις δεδομένων από: http://sqlitebrowser.org/ Αυτό το πρόγραμμα ανιχνεύει έναν ιστότοπο και τραβάει μια σειρά σελίδων στη βάση δεδομένων, καταγράφοντας τους συνδέσμους μεταξύ των σελίδων. Σημείωση: Τα Windows δυσκολεύονται να εμφανίσουν χαρακτήρες UTF-8 στην κονσόλα, επομένως για κάθε παράθυρο κονσόλας που ανοίγετε, ίσως χρειαστεί να πληκτρολογήσετε την ακόλουθη εντολή πριν εκτελέσετε αυτόν τον κώδικα: chcp 65001 http://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how Mac: rm spider.sqlite Mac: python3 spider.py Win: del spider.sqlite Win: spider.py Εισαγάγετε τη διεύθυνση url ιστού ή enter: http://www.dr-chuck.com/ ['http://www.dr-chuck.com'] Πόσες σελίδες:2 1 http://www.dr-chuck.com/ 12 2 http://www.dr-chuck.com/csev-blog/ 57 Πόσες σελίδες: Σε αυτό το δείγμα εκτέλεσης, ζητήσαμε να ανιχνεύσει έναν ιστότοπο και να ανακτήσει δύο σελίδες. Εάν κάνετε επανεκκίνηση του προγράμματος και του πείτε να ανιχνεύσει περισσότερες σελίδες, δεν θα ανιχνεύσει ξανά καμία σελίδα που υπάρχει ήδη στη βάση δεδομένων. Με την επανεκκίνηση πηγαίνει σε μια τυχαία σελίδα που δεν ανιχνεύθηκε και ξεκινά από εκεί. Έτσι, κάθε διαδοχική εκτέλεση του spider.py λειτουργεί προσθετικά. Mac: python3 spider.py Win: spider.py Εισαγάγετε τη διεύθυνση url ιστού ή enter: http://www.dr-chuck.com/ ['http://www.dr-chuck.com'] Πόσες σελίδες:3 3 http://www.dr-chuck.com/csev-blog 57 4 http://www.dr-chuck.com/dr-chuck/resume/speaking.htm 1 5 http://www.dr-chuck.com/dr-chuck/resume/index.htm 13 Πόσες σελίδες: Μπορείτε να έχετε πολλαπλά σημεία εκκίνησης στην ίδια βάση δεδομένων — εντός του προγράμματος, αυτά ονομάζονται "ιστοί". Το spider επιλέγει τυχαία μεταξύ όλων των συνδέσμων που δεν έχουν επισκεφτεί, σε όλους τους ιστούς, για να καθορίσει την επόμενη σελίδα προς ανίχνευση. Εάν θέλετε να καταργήσετε τα περιεχόμενα του αρχείου spider.sqlite, μπορείτε να εκτελέσετε το spdump.py ως εξής: Mac: python3 spdump.py Win: spdump.py (5, None, 1.0, 3, u'http://www.dr-chuck.com/csev-blog') (3, None, 1.0, 4, u'http://www.dr-chuck.com/dr-chuck/resume/speaking.htm') (1, None, 1.0, 2, u'http://www.dr-chuck.com/csev-blog/') (1, None, 1.0, 5, u'http://www.dr-chuck.com/dr-chuck/resume/index.htm') 4 γραμμές. Αυτό δείχνει τον αριθμό των εισερχόμενων συνδέσμων, την παλιά κατάταξη της σελίδας, τη νέα κατάταξη της σελίδας, το αναγνωριστικό της σελίδας και τη διεύθυνση url της σελίδας. Το πρόγραμμα spdump.py εμφανίζει μόνο σελίδες που έχουν τουλάχιστον έναν εισερχόμενο σύνδεσμο προς αυτές. Αφού έχετε μερικές σελίδες στη βάση δεδομένων, μπορείτε να εκτελέσετε το page rank στις σελίδες αυτές, χρησιμοποιώντας το πρόγραμμα sprank.py. Απλώς του λέτε πόσες επαναλήψεις κατάταξης σελίδων θα εκτελεστούν. Mac: python3 sprank.py Win: sprank.py Πόσες επαναλήψεις:2 1 0.546848992536 2 0.226714939664 [(1, 0.559), (2, 0.659), (3, 0.985), (4, 2.135), (5, 0.659)] Μπορείτε να διαγράψετε ξανά τη βάση δεδομένων, για να δείτε ότι η κατάταξη σελίδας ενημερώνεται: Mac: python3 spdump.py Win: spdump.py (5, 1.0, 0.985, 3, u'http://www.dr-chuck.com/csev-blog') (3, 1.0, 2.135, 4, u'http://www.dr-chuck.com/dr-chuck/resume/speaking.htm') (1, 1.0, 0.659, 2, u'http://www.dr-chuck.com/csev-blog/') (1, 1.0, 0.659, 5, u'http://www.dr-chuck.com/dr-chuck/resume/index.htm') 4 γραμμές. Μπορείτε να εκτελέσετε το sprank.py όσες φορές θέλετε και απλά αυτό θα, βελτιώνει την κατάταξη της σελίδας κάθε φορά που το εκτελείτε. Μπορείτε ακόμη και να εκτελέσετε το sprank.py μερικές φορές και, στη συνέχεια, να κάνετε spider μερικές ακόμα σελίδες με το spider.py και, στη συνέχεια, να εκτελέσετε το *sprank.py* για να επανασυγκλίνετε οι τιμές κατάταξης σελίδας. Εάν θέλετε να επανεκκινήσετε τους υπολογισμούς κατάταξης σελίδας χωρίς να επαναφέρετε τις ιστοσελίδες, μπορείτε να χρησιμοποιήσετε το spreset.py. Mac: python3 spreset.py Win: spreset.py Όλες οι σελίδες έχουν οριστεί σε κατάταξη 1.0 Mac: python3 sprank.py Win: sprank.py Πόσες επαναλήψεις:50 1 0.546848992536 2 0.226714939664 3 0.0659516187242 4 0.0244199333 5 0.0102096489546 6 0.00610244329379 ... 42 0.000109076928206 43 9.91987599002e-05 44 9.02151706798e-05 45 8.20451504471e-05 46 7.46150183837e-05 47 6.7857770908e-05 48 6.17124694224e-05 49 5.61236959327e-05 50 5.10410499467e-05 [(512, 0.02963718031139026), (1, 12.790786721866658), (2, 28.939418898678284), (3, 6.808468390725946), (4, 13.469889092397006)] Για κάθε επανάληψη του αλγορίθμου κατάταξης σελίδας εκτυπώνει τη μέση αλλαγή στην κατάταξη σελίδας ανά σελίδα. Το δίκτυο αρχικά είναι αρκετά ασταθές και έτσι οι μεμονωμένες τιμές κατάταξης σελίδας αλλάζουν δραματικά, ​​μεταξύ των επαναλήψεων. Αλλά μετά από μερικές επαναλήψεις, η κατάταξη σελίδας συγκλίνει. Θα πρέπει να εκτελέσετε το sprank.py αρκετές φορές, ώστε οι τιμές της κατάταξης σελίδας να συγκλίνουν. Εάν θέλετε να απεικονίσετε τις τρέχουσες κορυφαίες σελίδες, ως προς την κατάταξη σελίδων, εκτελέστε το spjson.py για να διαβάσει τη βάση δεδομένων και να εξάγει τα δεδομένα, για τις πιο συνδεδεμένες σελίδες, σε μορφή JSON για προβολή σε ένα πρόγραμμα περιήγησης ιστού. Mac: python3 spjson.py Win: spjson.py Δημιουργία εξόδου JSON στο spider.js... Πόσους κόμβους? 30 Ανοίξτε το force.html σε ένα πρόγραμμα περιήγησης για να προβάλετε την οπτικοποίηση Μπορείτε να δείτε αυτά τα δεδομένα ανοίγοντας το αρχείο force.html, στο πρόγραμμα περιήγησής σας. Αυτό δείχνει μια αυτόματη διάταξη των κόμβων και των συνδέσμων. Μπορείτε να κάνετε κλικ και να σύρετε οποιονδήποτε κόμβο και μπορείτε επίσης να κάνετε διπλό κλικ σε έναν κόμβο για να εντοπίσετε τη διεύθυνση URL που αντιπροσωπεύεται από τον κόμβο. Αυτή η απεικόνιση παρέχεται χρησιμοποιώντας τη δυναμική διάταξη του: http://mbostock.github.com/d3/ Εάν εκτελέσετε ξανά τα άλλα βοηθητικά προγράμματα, τότε εκτελέστε ξανά το spjson.py και πατήστε το refresh στο πρόγραμμα περιήγησης για να λάβετε τα νέα δεδομένα από το spider.json.