background image

Σχεδιασμός και Υλοποίηση εξειδικευμένου chatbot για διαδικτυακές πλατφόρμες

 

77

 

5.1.1 Ο crawler 

Ο ανιχνευτής γράφτηκε με βάση τις βιβλιοθήκες asyncio και aiohttp, ώστε να στέλνει πολλά 

αιτήματα  ταυτόχρονα.  Στην  πράξη  λειτουργεί  με  μια  ουρά  διευθύνσεων  και  έναν  αριθμό 

εργατών  που  δουλεύουν  παράλληλα,  καθένας  από  τους  οποίους  παίρνει  μια  διεύθυνση, 

κατεβάζει το περιεχόμενο και προσθέτει στην ουρά τους νέους συνδέσμους που βρίσκει. Η 

εξαγωγή των συνδέσμων γίνεται με τη βιβλιοθήκη BeautifulSoup, ενώ ένας έλεγχος φροντίζει 

να παραμένουμε μέσα στην οικογένεια τομέων του ece.uowm.gr και να αγνοούμε αρχεία που 

δεν  μας  ενδιαφέρουν,  όπως  εικόνες  ή  βίντεο,  με  βάση  την  κατάληξή  τους  και  τον  τύπο 

περιεχομένου που επιστρέφει ο εξυπηρετητής. Όπως αναφέρθηκε και στη σχεδίαση, από τον 

κύριο ιστότοπο κρατάμε τις σελίδες HTML και τα PDF, ενώ από τους υποτομείς κρατάμε μόνο 

τα PDF, κάτι που υλοποιείται με έναν απλό έλεγχο του ονόματος του τομέα κάθε διεύθυνσης. 

Επειδή  ο  ιστότοπος  τρέχει  σε  WordPress,  αξιοποιούμε  επιπλέον  τους  διαθέσιμους  χάρτες 

ιστότοπου  για  να  εντοπίζονται  πιο  αξιόπιστα  οι  σελίδες.  Στο  τέλος  της  διαδικασίας,  ο 

ανιχνευτής  αποθηκεύει  το  αποτέλεσμα  σε  ένα  αρχείο  JSON,  που  περιέχει  χωριστά  τις 

διευθύνσεις HTML και τις διευθύνσεις των PDF. Όταν κάποιες διευθύνσεις αποτυγχάνουν, για 

παράδειγμα  λόγω  του  μηχανισμού  προσωρινής  μνήμης  του  πανεπιστημίου,  υπάρχει  η 

δυνατότητα μιας δεύτερης προσπάθειας που συγχωνεύει τα νέα ευρήματα με τα προηγούμενα. 

Η  ασύγχρονη  φύση  του  ανιχνευτή  απαιτεί  προσεκτική  διαχείριση  του  παραλληλισμού. 

Ένας σταθερός αριθμός εργατών αντλεί διευθύνσεις από μια κοινή ουρά, ενώ ένα σύνολο ήδη 

επισκεφθέντων διευθύνσεων αποτρέπει την επανεπεξεργασία και τους ατέρμονες βρόχους που 

προκαλούν οι κυκλικοί σύνδεσμοι. Ένας σηματοφόρος περιορίζει το πλήθος των ταυτόχρονων 

αιτημάτων,  ώστε  ο  εξυπηρετητής  του  πανεπιστημίου  να  μην  υπερφορτώνεται  και  να  μην 

ενεργοποιείται ο μηχανισμός προστασίας του. Σε περίπτωση παροδικών σφαλμάτων δικτύου ή 

απαντήσεων περιορισμού ρυθμού, ο εργάτης επαναπρογραμματίζει τη διεύθυνση με μια μικρή,