Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Υπάρχουν πολλές βιβλιοθήκες και πλαίσια Python για την εξαγωγή δεδομένων από τον Ιστό. Όλοι ξεκινούν με ένα συγκεκριμένο εργαλείο μέχρι να συνειδητοποιήσουν ότι μπορεί να μην είναι το καλύτερο για το επόμενο έργο τους. Αν και είναι πολύ απίθανο να χρησιμοποιήσετε όλα τα εργαλεία της Python σε ένα μόνο έργο, θα πρέπει να γνωρίζετε ποια να έχετε στη διάθεσή σας στην εργαλειοθήκη απόξεσης ιστού.

Εδώ είναι οι καλύτερες βιβλιοθήκες Python, πλαίσια και άλλα εργαλεία που θα σας βοηθήσουν να σκουπίσετε δεδομένα από τον Ιστό, χωρίς κόπο.

1. Όμορφη σούπα

Ξεκινώντας από τη λίστα με την καλύτερη βιβλιοθήκη web scraping για αρχάριους: Beautiful Soup. Είναι ουσιαστικά ένα εργαλείο που εξάγει δεδομένα από αναλυμένα αρχεία HTML και XML μετατρέποντας το έγγραφο σε αντικείμενο Python.

Η «ομορφιά» του Beautiful Soup βρίσκεται στην απλότητά του. Είναι εύκολο να το ρυθμίσετε και μπορείτε

instagram viewer
ξεκινήστε με το πρώτο σας έργο απόξεσης ιστού μεσα σε λιγα λεπτα. Το Beautiful Soup χρησιμοποιεί μια ιεραρχική προσέγγιση για την εξαγωγή δεδομένων από ένα έγγραφο HTML. Μπορείτε να εξαγάγετε στοιχεία χρησιμοποιώντας ετικέτες, κλάσεις, αναγνωριστικά, ονόματα και άλλα χαρακτηριστικά HTML.

Ωστόσο, το να περιμένουμε περισσότερα από το Beautiful Soup θα ήταν υπερβολικό. Δεν υπάρχει ενσωματωμένη υποστήριξη για ενδιάμεσα προγράμματα και άλλες προηγμένες λειτουργίες, όπως εναλλαγή διακομιστή μεσολάβησης ή πολλαπλή νήμα. Με το Beautiful Soup, χρειάζεστε βιβλιοθήκες για την αποστολή αιτημάτων HTTP, την ανάλυση του ληφθέντος εγγράφου και την εξαγωγή των αποκομμένων πληροφοριών σε ένα αρχείο εξόδου.

2. αιτήσεων

αιτήματα είναι αναμφίβολα η πιο χρησιμοποιούμενη βιβλιοθήκη Python για το χειρισμό αιτημάτων HTTP. Το εργαλείο ανταποκρίνεται στην περιγραφή του: HTTP for Humans™. Υποστηρίζει πολλούς τύπους αιτημάτων HTTP, που κυμαίνονται από GET και POST έως PATCH και DELETE. Όχι μόνο αυτό, μπορείτε να ελέγξετε σχεδόν κάθε πτυχή ενός αιτήματος, συμπεριλαμβανομένων των κεφαλίδων και των απαντήσεων.

Εάν αυτό ακούγεται εύκολο, να είστε σίγουροι, καθώς τα αιτήματα εξυπηρετούν επίσης προχωρημένους χρήστες με το πλήθος των δυνατοτήτων τους. Μπορείτε να παίξετε με ένα αίτημα και να προσαρμόσετε τις κεφαλίδες του, να ανεβάσετε ένα αρχείο σε έναν διακομιστή χρησιμοποιώντας POST και να χειριστείτε χρονικά όρια, ανακατευθύνσεις και περιόδους σύνδεσης, μεταξύ άλλων.

Τα αιτήματα συνήθως συνδέονται με το Beautiful Soup όταν πρόκειται για την απόξεση ιστού, καθώς άλλα πλαίσια Python έχουν ενσωματωμένη υποστήριξη για το χειρισμό αιτημάτων HTTP. Για να λάβετε το HTML για μια ιστοσελίδα, θα χρησιμοποιούσατε αιτήματα για να στείλετε ένα αίτημα GET στον διακομιστή, στη συνέχεια να εξαγάγετε τα δεδομένα κειμένου από την απάντηση και να τα μεταβιβάσετε στο Beautiful Soup.

3. Scrapy

Όπως υποδηλώνει το όνομα, το Scrapy είναι ένα πλαίσιο Python για την ανάπτυξη μεγάλης κλίμακας web scrapers. Είναι το ελβετικό μαχαίρι για την εξαγωγή δεδομένων από τον Ιστό. Το Scrapy χειρίζεται τα πάντα, από την αποστολή αιτημάτων και την υλοποίηση διακομιστή μεσολάβησης έως την εξαγωγή και την εξαγωγή δεδομένων.

Σε αντίθεση με το Beautiful Soup, η πραγματική δύναμη του Scrapy είναι ο εξελιγμένος μηχανισμός του. Αλλά μην αφήσετε αυτή την πολυπλοκότητα να σας εκφοβίσει. Το Scrapy είναι το πιο αποτελεσματικό πλαίσιο απόξεσης ιστού σε αυτήν τη λίστα, όσον αφορά την ταχύτητα, την αποτελεσματικότητα και τις δυνατότητες. Έρχεται με επιλογείς που σας επιτρέπουν να επιλέξετε δεδομένα από ένα έγγραφο HTML χρησιμοποιώντας στοιχεία XPath ή CSS.

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

Εκτός από τις βασικές δυνατότητες, λαμβάνετε επίσης υποστήριξη για τα ενδιάμεσα, τα οποία είναι ένα πλαίσιο αγκίστρων που εισάγει πρόσθετη λειτουργικότητα στον προεπιλεγμένο μηχανισμό Scrapy. Δεν μπορείτε να αφαιρέσετε ιστοτόπους που βασίζονται σε JavaScript με το Scrapy, αλλά μπορείτε να χρησιμοποιήσετε ενδιάμεσα προγράμματα όπως scrapy-selenium, scrapy-splash και scrapy-scrapingbee για να εφαρμόσετε αυτή τη λειτουργικότητα στο έργο σας.

Τέλος, όταν ολοκληρώσετε την εξαγωγή των δεδομένων, μπορείτε να τα εξαγάγετε σε διάφορες μορφές αρχείων. CSV, JSON και XML, για να αναφέρουμε μερικά.

Το Scrapy είναι ένας από τους πολλούς λόγους για τους οποίους η Python είναι η καλύτερη γλώσσα προγραμματισμού για οποιονδήποτε ασχολείται με το web scraping. Ρύθμιση του πρώτου σας έργου Scrapy μπορεί να πάρει λίγο χρόνο, ειδικά αν δεν έχετε εμπειρία με τάξεις και πλαίσια Python. Η ροή εργασιών του Scrapy διαχωρίζεται σε πολλά αρχεία και για αρχάριους, κάτι που μπορεί να χαρακτηριστεί ως ανεπιθύμητη πολυπλοκότητα.

4. Σελήνιο

Αν θέλετε να αποτυπώσετε δυναμικό περιεχόμενο που αποδίδεται με JavaScript, τότε το Selenium είναι αυτό που χρειάζεστε. Ως πλαίσιο δοκιμών ιστού μεταξύ πλατφορμών, το Selenium σάς βοηθά να αποδώσετε HTML, CSS και JavaScript και να εξαγάγετε ό, τι απαιτείται. Μπορείτε επίσης να μιμηθείτε τις αλληλεπιδράσεις πραγματικών χρηστών μέσω ενεργειών πληκτρολογίου και ποντικιού με σκληρή κωδικοποίηση, κάτι που αλλάζει πλήρως το παιχνίδι.

Το Selenium δημιουργεί μια παρουσία προγράμματος περιήγησης χρησιμοποιώντας το πρόγραμμα οδήγησης web και φορτώνει τη σελίδα. Μερικά δημοφιλή προγράμματα περιήγησης που υποστηρίζονται από το Selenium είναι τα Google Chrome, Mozilla Firefox, Opera, Microsoft Edge, Apple Safari και Internet Explorer. Χρησιμοποιεί εντοπιστές CSS και XPath, παρόμοιους με τους επιλογείς Scrapy, για την εύρεση και εξαγωγή περιεχομένου από στοιχεία HTML στη σελίδα.

Εάν δεν έχετε εμπειρία με Python αλλά γνωρίζετε άλλες γλώσσες προγραμματισμού, μπορείτε να χρησιμοποιήσετε το Selenium με C#, JavaScript, PHP, Perl, Ruby και Java.

Ο μόνος περιορισμός είναι επειδή το Selenium εκκινεί ένα πρόγραμμα περιήγησης ιστού στο παρασκήνιο, οι πόροι που απαιτούνται για την εκτέλεση του scraper αυξάνονται σημαντικά, σε σύγκριση με το Scrapy ή την όμορφη σούπα. Αλλά δεδομένων των πρόσθετων χαρακτηριστικών που φέρνει το Selenium στο τραπέζι, είναι απολύτως δικαιολογημένο.

5. urllib

Η βιβλιοθήκη urllib της Python είναι ένα απλό αλλά απαραίτητο εργαλείο που μπορείτε να έχετε στο οπλοστάσιό σας απόξεσης ιστού. Σας επιτρέπει να χειρίζεστε και να επεξεργάζεστε διευθύνσεις URL στα σενάρια Python σας.

Μια κατάλληλη πρακτική εφαρμογή του urllib είναι η τροποποίηση URL. Σκεφτείτε ότι ξύνετε έναν ιστότοπο με πολλές σελίδες και πρέπει να τροποποιήσετε ένα μέρος της διεύθυνσης URL για να μεταβείτε στην επόμενη σελίδα.

Το urllib μπορεί να σας βοηθήσει να αναλύσετε τη διεύθυνση URL και να τη διαιρέσετε σε πολλά μέρη, τα οποία στη συνέχεια μπορείτε να τροποποιήσετε και να καταργήσετε την ανάλυση για να δημιουργήσετε μια νέα διεύθυνση URL. Ενώ η χρήση μιας βιβλιοθήκης για την ανάλυση συμβολοσειρών μπορεί να φαίνεται υπερβολική, το urllib είναι ένα σωτήριο για άτομα που κωδικοποιούν web scrapers για διασκέδαση και δεν θέλουν να μπουν στο χοντρό ίχνος των δομών δεδομένων.

Επίσης, εάν θέλετε να εξετάσετε το robots.txt ενός ιστότοπου, το οποίο είναι ένα αρχείο κειμένου που περιέχει κανόνες πρόσβασης για τον ανιχνευτή Google και άλλα scrapers, το urllib μπορεί να σας βοηθήσει και σε αυτό. Συνιστάται να ακολουθείτε το robots.txt ενός ιστότοπου και να ξύνετε μόνο τις σελίδες που επιτρέπονται.

6. Βιβλιοθήκες JSON, CSV και XML

Δεδομένου ότι το Beautiful Soup ή το Selenium δεν έχουν ενσωματωμένες λειτουργίες για την εξαγωγή των δεδομένων, θα χρειαστείτε μια βιβλιοθήκη Python για να εξάγετε τα δεδομένα σε JSON, αρχείο CSV ή XML. Ευτυχώς, υπάρχει μια πληθώρα βιβλιοθηκών που μπορείτε να κάνετε για να το πετύχετε και προτείνονται οι πιο βασικές, δηλαδή json, csv και xml για αρχεία JSON, CSV και XML, αντίστοιχα.

Τέτοιες βιβλιοθήκες σάς επιτρέπουν να δημιουργήσετε ένα αρχείο, να προσθέσετε δεδομένα σε αυτό και, τέλος, να εξαγάγετε το αρχείο στον τοπικό σας χώρο αποθήκευσης ή στον απομακρυσμένο διακομιστή.

7. Μηχανική σούπα

Μηχανική σούπα; Είναι αυτό ένα φτηνό Ripoff Beautiful Soup; Όχι. Εμπνευσμένο από Μηχανοποιώ και με βάση τα αιτήματα Python και το Beautiful Soup, το MechanicalSoup σάς βοηθά να αυτοματοποιήσετε την ανθρώπινη συμπεριφορά και να εξάγετε δεδομένα από μια ιστοσελίδα. Μπορείτε να το θεωρήσετε στα μισά του δρόμου μεταξύ της όμορφης σούπας και του σεληνίου. Το μόνο πιάσιμο; Δεν χειρίζεται JavaScript.

Αν και τα ονόματα είναι παρόμοια, η σύνταξη και η ροή εργασίας του MechanicalSoup είναι εξαιρετικά διαφορετικά. Δημιουργείτε μια περίοδο λειτουργίας προγράμματος περιήγησης χρησιμοποιώντας το MechanicalSoup και όταν γίνεται λήψη της σελίδας, χρησιμοποιείτε τις μεθόδους του Beautiful Soup όπως εύρημα() και find_all() για εξαγωγή δεδομένων από το έγγραφο HTML.

Ένα άλλο εντυπωσιακό χαρακτηριστικό του MechanicalSoup είναι ότι σας επιτρέπει να συμπληρώνετε φόρμες χρησιμοποιώντας ένα σενάριο. Αυτό είναι ιδιαίτερα χρήσιμο όταν χρειάζεται να εισαγάγετε κάτι σε ένα πεδίο (για παράδειγμα, μια γραμμή αναζήτησης) για να φτάσετε στη σελίδα που θέλετε να ξύσετε. Ο χειρισμός αιτημάτων του MechanicalSoup είναι υπέροχος, καθώς μπορεί να χειριστεί αυτόματα ανακατευθύνσεις και να ακολουθεί συνδέσμους σε μια σελίδα, εξοικονομώντας σας την προσπάθεια να κωδικοποιήσετε με μη αυτόματο τρόπο μια ενότητα για να το κάνετε αυτό.

Δεδομένου ότι βασίζεται στο Beautiful Soup, υπάρχει σημαντική επικάλυψη στα μειονεκτήματα και των δύο αυτών βιβλιοθηκών. Για παράδειγμα, δεν υπάρχει ενσωματωμένη μέθοδος χειρισμού της εξόδου δεδομένων, της εναλλαγής διακομιστή μεσολάβησης και της απόδοσης JavaScript. Το μόνο πρόβλημα με το Beautiful Soup που έχει διορθώσει το MechanicalSoup είναι η υποστήριξη για το χειρισμό αιτημάτων, το οποίο έχει λυθεί με την κωδικοποίηση ενός περιτυλίγματος για τη βιβλιοθήκη αιτημάτων Python.

Η απόξεση ιστού στην Python έγινε πιο εύκολη

Η Python είναι μια ισχυρή γλώσσα προγραμματισμού για την απόξεση του ιστού, αναμφίβολα, αλλά τα εργαλεία που χρησιμοποιούνται είναι μόνο ένα μέρος του προβλήματος. Το πιο σημαντικό ζήτημα που αντιμετωπίζουν οι άνθρωποι κατά την κωδικοποίηση ενός scraper είναι η εκμάθηση της ιεραρχίας εγγράφων HTML.

Η κατανόηση της δομής μιας ιστοσελίδας και η γνώση του πώς να εντοπίζετε γρήγορα ένα στοιχείο είναι απαραίτητο εάν θέλετε να αναπτύξετε προηγμένα web scrapers.