Θέλετε να μάθετε την απόξεση ιστού με την Python, αλλά είστε μπερδεμένοι σχετικά με το αν θα χρησιμοποιήσετε το Beautiful Soup, το Selenium ή το Scrapy για το επόμενο έργο σας; Ενώ όλες αυτές οι βιβλιοθήκες και τα πλαίσια Python είναι ισχυρά από μόνα τους, δεν εξυπηρετούν όλες οι ανάγκες απόξεσης ιστού και, ως εκ τούτου, είναι σημαντικό να γνωρίζετε ποιο εργαλείο πρέπει να χρησιμοποιήσετε για ένα συγκεκριμένο δουλειά.
Ας ρίξουμε μια ματιά στις διαφορές μεταξύ του Beautiful Soup, του Scrapy και του Selenium, ώστε να μπορείτε να πάρετε μια σοφή απόφαση πριν ξεκινήσετε το επόμενο έργο απόξεσης ιστού Python.
1. Ευκολία στη χρήση
Εάν είστε αρχάριος, η πρώτη σας απαίτηση θα είναι μια βιβλιοθήκη που είναι εύκολη στην εκμάθηση και τη χρήση. Το Beautiful Soup σας προσφέρει όλα τα στοιχειώδη εργαλεία που χρειάζεστε για να ξύσετε τον ιστό και είναι ιδιαίτερα χρήσιμο για άτομα που έχουν ελάχιστη εμπειρία με την Python, αλλά θέλουν να χτυπήσουν το έδαφος με τον ιστό απόξεση.
Η μόνη προειδοποίηση είναι ότι, λόγω της απλότητάς του, το Beautiful Soup δεν είναι τόσο ισχυρό σε σύγκριση με το Scrapy ή το Selenium. Οι προγραμματιστές με εμπειρία ανάπτυξης μπορούν εύκολα να κυριαρχήσουν τόσο στο Scrapy όσο και στο Selenium, αλλά για αρχάριους, το Το πρώτο έργο μπορεί να πάρει πολύ χρόνο για να κατασκευαστεί εάν επιλέξουν να ακολουθήσουν αυτά τα πλαίσια αντί για το Beautiful Σούπα.
Για να ξύσετε το περιεχόμενο της ετικέτας τίτλου στο example.com χρησιμοποιώντας το Beautiful Soup, θα χρησιμοποιήσετε τον ακόλουθο κώδικα:
url = "https://example.com/"
res = requests.get (url).text
σούπα = BeautifulSoup (res, 'html.parser')
τίτλος = σούπα.find("τίτλος").κείμενο
Τυπώνω(τίτλος)
Για να επιτύχετε παρόμοια αποτελέσματα χρησιμοποιώντας το σελήνιο, θα πρέπει να γράψετε:
url = "https://example.com"
οδηγός = webdriver. Χρώμιο("διαδρομή/προς/chromedriver")
οδηγός.παίρνω(url)
title = driver.find_element (Από. TAG_NAME, "τίτλος").get_attribute('κείμενο')
Τυπώνω(τίτλος)
Η δομή του αρχείου ενός έργου Scrapy αποτελείται από πολλά αρχεία, γεγονός που αυξάνει την πολυπλοκότητά του. Ο παρακάτω κώδικας ξύνει τον τίτλο από το example.com:
εισαγωγή σκαρίςτάξηTitleSpider(σκίσιμο. Αράχνη):
όνομα = 'τίτλος'
start_urls = ['https://example.com']
defαναλύω λέξη(εαυτός, απάντηση):
απόδοση παραγωγής {
'όνομα': answer.css('τίτλος'),
}
Εάν θέλετε να εξαγάγετε δεδομένα από μια υπηρεσία που προσφέρει ένα επίσημο API, ίσως είναι μια σοφή απόφαση χρησιμοποιήστε το API αντί να αναπτύξετε ένα web scraper.
2. Ταχύτητα απόξεσης και Παραλληλισμός
Από τα τρία, ο Scrapy είναι ο ξεκάθαρος νικητής όσον αφορά την ταχύτητα. Αυτό συμβαίνει επειδή υποστηρίζει την παραλληλοποίηση από προεπιλογή. Χρησιμοποιώντας το Scrapy, μπορείτε να στείλετε πολλά αιτήματα HTTP ταυτόχρονα και όταν το σενάριο κατεβάσει τον κώδικα HTML για το πρώτο σύνολο αιτημάτων, είναι έτοιμο να στείλει άλλη μια παρτίδα.
Με το Beautiful Soup, μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη νημάτων για την αποστολή ταυτόχρονων αιτημάτων HTTP, αλλά δεν είναι βολικό και θα πρέπει να μάθετε την πολυνηματική για να το κάνετε. Στο Selenium, είναι αδύνατο να επιτευχθεί παραλληλισμός χωρίς την εκκίνηση πολλαπλών παρουσιών προγράμματος περιήγησης.
Αν κατατάξετε αυτά τα τρία εργαλεία απόξεσης ιστού όσον αφορά την ταχύτητα, το Scrapy είναι το ταχύτερο, ακολουθούμενο από το Beautiful Soup και το Selenium.
3. Χρήση μνήμης
Το Selenium είναι ένα API αυτοματισμού προγράμματος περιήγησης, στο οποίο έχει βρει τις εφαρμογές του το πεδίο απόξεσης ιστού. Όταν χρησιμοποιείτε το Selenium για να ξύσετε έναν ιστότοπο, δημιουργεί ένα παράδειγμα προγράμματος περιήγησης χωρίς κεφάλι που εκτελείται στο παρασκήνιο. Αυτό καθιστά το Selenium ένα εργαλείο έντασης πόρων σε σύγκριση με το Beautiful Soup and Scrapy.
Δεδομένου ότι τα τελευταία λειτουργούν εξ ολοκλήρου στη γραμμή εντολών, χρησιμοποιούν λιγότερους πόρους συστήματος και προσφέρουν καλύτερη απόδοση από το Selenium.
4. Απαιτήσεις εξάρτησης
Το Beautiful Soup είναι μια συλλογή εργαλείων ανάλυσης που σας βοηθούν να εξάγετε δεδομένα από αρχεία HTML και XML. Αποστέλλεται με τίποτα άλλο. Πρέπει να χρησιμοποιήσετε βιβλιοθήκες όπως αιτήσεων ή urllib για να κάνετε αιτήματα HTTP, ενσωματωμένους αναλυτές για την ανάλυση του HTML/XML και πρόσθετες βιβλιοθήκες για την υλοποίηση διακομιστών μεσολάβησης ή υποστήριξης βάσης δεδομένων.
Το Scrapy, από την άλλη, έρχεται με ολόκληρο το shebang. Λαμβάνετε εργαλεία για την αποστολή αιτημάτων, την ανάλυση του ληφθέντος κώδικα, την εκτέλεση λειτουργιών στα εξαγόμενα δεδομένα και την αποθήκευση των αποκομμένων πληροφοριών. Μπορείτε να προσθέσετε άλλες λειτουργίες στο Scrapy χρησιμοποιώντας επεκτάσεις και ενδιάμεσο λογισμικό, αλλά αυτό θα έρθει αργότερα.
Με το Selenium, κατεβάζετε ένα πρόγραμμα οδήγησης web για το πρόγραμμα περιήγησης που θέλετε να αυτοματοποιήσετε. Για να εφαρμόσετε άλλες δυνατότητες, όπως αποθήκευση δεδομένων και υποστήριξη διακομιστή μεσολάβησης, θα χρειαστείτε λειτουργικές μονάδες τρίτων.
5. Ποιότητα τεκμηρίωσης
Συνολικά, κάθε τεκμηρίωση του έργου είναι καλά δομημένη και περιγράφει κάθε μέθοδο χρησιμοποιώντας παραδείγματα. Αλλά η αποτελεσματικότητα της τεκμηρίωσης ενός έργου εξαρτάται σε μεγάλο βαθμό και από τον αναγνώστη.
Η τεκμηρίωση του Beautiful Soup είναι πολύ καλύτερη για αρχάριους που ξεκινούν με την απόξεση ιστού. Το Selenium και το Scrapy έχουν λεπτομερή τεκμηρίωση, αναμφίβολα, αλλά η τεχνική ορολογία μπορεί να πιάσει πολλούς νεοφερμένους απροσδόκητους.
Εάν είστε έμπειροι με έννοιες και ορολογίες προγραμματισμού, τότε οποιαδήποτε από τις τρεις τεκμηρίωση θα ήταν πολύ καλή για να διαβάσετε.
6. Υποστήριξη για Extensions και Middleware
Το Scrapy είναι το πιο επεκτάσιμο πλαίσιο Python απόξεσης ιστού, τελεία. Υποστηρίζει ενδιάμεσο λογισμικό, επεκτάσεις, διακομιστή μεσολάβησης και πολλά άλλα και σας βοηθά να αναπτύξετε έναν ανιχνευτή για έργα μεγάλης κλίμακας.
Μπορείτε να γράψετε αλάνθαστους και αποτελεσματικούς ανιχνευτές εφαρμόζοντας ενδιάμεσα προγράμματα στο Scrapy, τα οποία είναι βασικά άγκιστρα που προσθέτουν προσαρμοσμένη λειτουργικότητα στον προεπιλεγμένο μηχανισμό του πλαισίου. Για παράδειγμα, το HttpErrorMiddleware φροντίζει για τα σφάλματα HTTP, ώστε οι αράχνες να μην χρειάζεται να τα αντιμετωπίζουν κατά την επεξεργασία των αιτημάτων.
Το Middleware και οι επεκτάσεις είναι αποκλειστικά για το Scrapy, αλλά μπορείτε να επιτύχετε παρόμοια αποτελέσματα με το Beautiful Soup και το Selenium χρησιμοποιώντας πρόσθετες βιβλιοθήκες Python.
7. Απόδοση JavaScript
Το Selenium έχει μία περίπτωση χρήσης όπου ξεπερνά άλλες βιβλιοθήκες απόξεσης ιστού, και αυτή είναι η απόξεση ιστότοπων με δυνατότητα JavaScript. Αν και μπορείτε να ξύσετε στοιχεία JavaScript χρησιμοποιώντας ενδιάμεσα προγράμματα Scrapy, η ροή εργασίας Selenium είναι η πιο εύκολη και βολική από όλες.
Χρησιμοποιείτε ένα πρόγραμμα περιήγησης για να φορτώσετε έναν ιστότοπο, να αλληλεπιδράσετε μαζί του χρησιμοποιώντας κλικ και πατήματα κουμπιών και πότε έχετε το περιεχόμενο που χρειάζεστε για να ξύσετε στην οθόνη, εξάγετε το χρησιμοποιώντας το CSS και το XPath του Selenium επιλογείς.
Το Beautiful Soup μπορεί να επιλέξει στοιχεία HTML χρησιμοποιώντας είτε επιλογείς XPath είτε CSS. Ωστόσο, δεν προσφέρει λειτουργικότητα για την απόξεση στοιχείων που έχουν αποδοθεί με JavaScript σε μια ιστοσελίδα.
Η απόξεση Ιστού έγινε εύκολη με την Python
Το διαδίκτυο είναι γεμάτο ακατέργαστα δεδομένα. Η απόξεση ιστού βοηθά στη μετατροπή αυτών των δεδομένων σε ουσιαστικές πληροφορίες που μπορούν να χρησιμοποιηθούν σωστά. Το σελήνιο είναι πιθανότατα το πιο ασφαλές στοίχημά σας εάν θέλετε να ξύσετε έναν ιστότοπο με JavaScript ή πρέπει να ενεργοποιήσετε ορισμένα στοιχεία στην οθόνη πριν εξαγάγετε τα δεδομένα.
Το Scrapy είναι ένα πλήρες πλαίσιο απόξεσης ιστού για όλες τις ανάγκες σας, είτε θέλετε να γράψετε ένα μικρό πρόγραμμα ανίχνευσης είτε ένα scraper μεγάλης κλίμακας που ανιχνεύει επανειλημμένα στο διαδίκτυο για ενημερωμένα δεδομένα.
Μπορείτε να χρησιμοποιήσετε το Beautiful Soup εάν είστε αρχάριοι ή πρέπει να αναπτύξετε γρήγορα μια ξύστρα. Όποιο πλαίσιο ή βιβλιοθήκη κι αν χρησιμοποιείτε, είναι εύκολο να ξεκινήσετε να μαθαίνετε web scraping με την Python.