Great Learning Guide of Puppeteer Class (Φροντιστήριο 7)

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

Εκπαιδευτικό κουκλοθέατρο

Κουτάβι Οδηγός #1: Επισκόπηση Puppeteer

Οδηγός Κουκλοθέατρου #2: Μεταβλητές Περιβάλλοντος Puppeteer

Κουτάβι Οδηγός #3: Επισκόπηση αυτοματισμού Puppeteer Web Scraping και Puppeteer Test

Κουτάβι Οδηγός #4: Εγκαταστήστε το Puppeteer

Κουτάβι Οδηγός #5: Δείγμα έργου Puppeteer

Κουτάβι Οδηγός #6: Δοκιμή Αυτοματισμού Κουκλοθεάτρου

Κουτάβι Οδηγός #7: Μάθημα κουκλοθεάτρου

Κουτάβι Οδηγός #8: Κατηγορία προγράμματος περιήγησης Puppeteer

Κουτάβι Φροντιστήριο #9: Τάξη σελίδων κουκλοθέατρου

Σε αυτό το σεμινάριο «Puppeteer Class», θα εξηγήσουμε τα παρακάτω μαθήματα που περιλαμβάνουν τους σημαντικούς χώρους ονομάτων (εάν υπάρχουν), τα συμβάντα (εάν υπάρχουν) και τις μεθόδους που χρησιμοποιούνται συχνά στις τεχνικές ξύρωσης του Puppeteer. 

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

Μάθημα κουκλοθεάτρου

Εννοιολογικά, η κλάση είναι ένα σχεδιάγραμμα ενός αντικειμένου που καθορίζει ένα σύνολο οδηγιών (μεταβλητές και μέθοδοι). Εδώ, η τάξη Puppeteer ορίζεται χρησιμοποιώντας javascript για την εκτέλεση διαφορετικών ενεργειών για την εκτέλεση web scraping. Ας δούμε το παρακάτω παράδειγμα, η ενότητα Class Puppeteer χρησιμοποιήθηκε για την εκκίνηση μιας παρουσίας ιστού Chromium.

const puppeteer = απαιτώ('κουκλοπαίκτης'); (async () => { const browserChrome = await puppeteer.launch(); const pageChrome = await browserChrome.newPage(); await pageChrome.goto('https://www.google.com'); // Μπορούμε να γράψουμε τα βήματα εδώ περιμένουν τον browserChrome.close(); })();

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

Τάξη κουκλοπαίδων - Χώροι ονομάτων:

Είναι ένα κοντέινερ που ορίζει πολλαπλά αναγνωριστικά, μεθόδους, μεταβλητές κ.λπ. σε javascript. Είναι ένας τρόπος ομαδοποίησης του κώδικα με λογικό και οργανωμένο τρόπο. Παρακάτω παρέχονται χώροι ονομάτων από την τάξη Puppeteer.

puppeteer.devices: Επιστρέφει μια λίστα συσκευών που μπορούν να χρησιμοποιηθούν με τη μέθοδο page.emulate (επιλογές) για να εκτελέσετε ξύσιμο σε κινητές συσκευές. 

Παράδειγμα - Άνοιγμα και κλείσιμο ιστοσελίδας google σε κινητή συσκευή -

const puppeteer = απαιτώ('κουκλοπαίκτης'); const samsung = puppeteer.devices['Samsung J5']; (async () => { const browserChrome = await puppeteer.launch(); const pageChrome = await browserChrome.newPage(); await pageChrome.emulate(samsung); await pageChrome.goto('https://www.google.com '); αναμονή του browserChrome.close(); })();

κουκλοπαίχτης. λάθη: Ενώ εργάζεστε με διαφορετικές μεθόδους κουκλοπαικτών, υπάρχει πιθανότητα εξαιρέσεων. Κυρίως, εάν οι μέθοδοι δεν μπορούν να ικανοποιήσουν τα αιτήματα, ρίχνει λάθη. Υπάρχουν διαφορετικές κατηγορίες που ορίζονται για τον χειρισμό σφαλμάτων μέσω του χώρου ονομάτων «puppeteer.errors».

Παράδειγμα - για τη μέθοδο page.waitForSelector, εάν το στοιχείο ιστού δεν εμφανίζεται εντός του καθορισμένου χρόνου, τότε θα εμφανιστεί το σφάλμα χρονικού ορίου. Ακολουθήστε το παρακάτω παράδειγμα, το οποίο δείχνει μια προσέγγιση για τη διαχείριση του χρονικού ορίου,

δοκιμάστε { await page.waitForSelector(' '); } catch (err) { if (err instanceof puppeteer.errors.TimeoutError) { // Γράψτε κώδικα για να χειριστείτε το σφάλμα χρονικού ορίου. } } 

puppeteer.networkΌροι: Επιστρέφει μια λίστα συνθηκών δικτύου που μπορούν να χρησιμοποιηθούν στη σελίδα μεθόδου.emulateNetworkConditions (networkConditions). Ορίζεται η πλήρης λίστα των συνθηκών δικτύου εδώ.

Παράδειγμα - Μέσω αυτού του δείγματος κώδικα, θα ανοίξουμε την ιστοσελίδα της Google χρησιμοποιώντας μια προκαθορισμένη κατάσταση δικτύου.

const puppeteer = απαιτώ('κουκλοπαίκτης'); const net = puppeteer.networkConditions['Fast 3G']; (async () => { const browserChrome = await puppeteer.launch(); const pageChrome = await browserChrome.newPage(); await pageChrome.emulateNetworkConditions(net); await pageChrome.goto('https://www.google.com '); αναμονή του browserChrome.close(); })();

κουκλοπαίχτης. προϊόν: Επιστρέφει το όνομα του προγράμματος περιήγησης, το οποίο θα χρησιμοποιηθεί για αυτοματοποίηση (Chrome ή Firefox). Το προϊόν για το πρόγραμμα περιήγησης ορίζεται είτε από τη μεταβλητή περιβάλλοντος PUPPETEER_PRODUCT είτε από την επιλογή προϊόντος που είναι διαθέσιμη στη μέθοδο κλάσης κουκλοπαικτών puppeteer.launch ([επιλογές]). Η προεπιλεγμένη τιμή είναι το Chrome.

Παραπομπή: Πατήστε εδώ για να μάθετε περισσότερα σχετικά με τους χώρους ονομάτων της Puppeteer Class.

Τάξη Puppeteer - Μέθοδοι:

Οι μέθοδοι περιέχουν δηλώσεις για την εκτέλεση της συγκεκριμένης ενέργειας. Η τάξη μαριονέτας έχει τις παρακάτω μεθόδους,

puppeteer.clearCustomQueryHandlers () - Διαγράφει όλους τους εγγεγραμμένους χειριστές.

puppeteer.connect (επιλογές) - Αυτή η μέθοδος χρησιμοποιείται για να συνδέσετε το κουκλοθέατρο με τυχόν υπάρχοντα προγράμματα περιήγησης. Επιστρέφει ένα αντικείμενο υπόσχεσης τύπου που δείχνει την κατάσταση αυτής της ασύγχρονης διαδικασίας. Παράδειγμα - Στο παρακάτω παράδειγμα, το puppeteer αποσυνδέεται από το τρέχον πρόγραμμα περιήγησης και επανασυνδέεται,

const puppeteer = απαιτώ('κουκλοπαίκτης'); (async () => { const browserChrome = await puppeteer.launch(); // Αντιγράψτε την αναφορά τελικού σημείου που θα επανασυνδεθεί αργότερα const endpoint = browserChrome.wsEndpoint(); // Αποσύνδεση puppeteer browserChrome.disconnect(); // Χρήση το τελικό σημείο για επανασύνδεση const browserChrome2 = await puppeteer.connect({endpoint}); // Κλείσιμο δεύτερης παρουσίας του Chromium await browserChrome2.close(); })();

puppeteer.createBrowserFetcher ([επιλογές]) - Δημιουργεί ένα αντικείμενο λήψης προγράμματος περιήγησης για λήψη και διαχείριση των διαφορετικών εκδόσεων των προγραμμάτων περιήγησης (Chrome και Firefox).

const browserFetcher = puppeteer.createBrowserFetcher ();

puppeteer.customQueryHandlerNames() – Επιστρέφει ένα παράταξη όλων των εγγεγραμμένων χειριστών προσαρμοσμένων ερωτημάτων.

puppeteer.defaultArgs ([επιλογές]) - Επιστρέφει τις προεπιλεγμένες επιλογές διαμόρφωσης του προγράμματος περιήγησης chrome ως πίνακα κατά την εκκίνηση. Επίσης, μπορούμε να ορίσουμε τις διαμορφώσιμες επιλογές ενός προγράμματος περιήγησης χρησιμοποιώντας την προαιρετική επιλογή ορίσματος.

const args = puppeteer.defaultArgs ();

puppeteer.executablePath () - Επιστρέφει τη διαδρομή που αναμένεται από το puppeteer για την παρουσία του προγράμματος περιήγησης. Η διαδρομή που δεν θα ήταν διαθέσιμη στη λήψη παραλείφθηκε από τη μεταβλητή περιβάλλοντος PUPPETEER_SKIP_DOWNLOAD. Επίσης, μπορούμε να χρησιμοποιήσουμε τις μεταβλητές περιβάλλοντος PUPPETEER_EXECUTABLE_PATH και PUPPETEER_CHROMIUM_REVISION για να αλλάξουμε τη διαδρομή.

const args = puppeteer.executablePath ();

puppeteer.launch ([επιλογές]) - Αυτή η μέθοδος μαριονέτας χρησιμοποιείται για την εκκίνηση του προγράμματος περιήγησης ιστού. Μέσα από το προαιρετικό όρισμα, μπορούμε να περάσουμε τις διάφορες διαμορφώσεις του προγράμματος περιήγησης, όπως προϊόν (όνομα προγράμματος περιήγησης), χωρίς κεφαλή, devtools κ.λπ. Αυτή η μέθοδος επιστρέφει το αντικείμενο υπόσχεσης, το οποίο διατηρεί την αναφορά του εκκινητή που ξεκίνησε.

const browser = αναμονή puppeteer.launch ();

puppeteer.registerCustomQueryHandler (όνομα, ερώτημαHandler) - Χρησιμοποιείται για την καταχώριση ενός προσαρμοσμένου χειριστή ερωτημάτων. Εδώ το "name" παρέχει το όνομα του χειριστή ερωτημάτων και το "queryHandler" καθορίζει τον πραγματικό προσαρμοσμένο διαχειριστή ερωτημάτων

puppeteer.unregisterCustomQueryHandler (όνομα) - Χρησιμοποιείται για την κατάργηση της καταχώρησης προσαρμοσμένου χειριστή ερωτημάτων.

Παραπομπή: Πατήστε εδώ για να διαβάσετε περισσότερα σχετικά με τις μεθόδους Puppeteer Class.

Κατηγορία στόχου

Η τάξη στόχος παρέχει μεθόδους εργασίας με στόχους. Οι πιο συχνά χρησιμοποιούμενες μέθοδοι που είναι διαθέσιμες με την κατηγορία-στόχο εξηγούνται στην επόμενη ενότητα.

Κατηγορία στόχου - Μέθοδοι:

Οι παρακάτω μέθοδοι είναι διαθέσιμες στην κατηγορία στόχων -

  • Target.browser () - Επιστρέφει το αντικείμενο του προγράμματος περιήγησης που είναι συνδεδεμένο με τον στόχο.
  • Target.browserContext () - Επιστρέφει ένα αντικείμενο τύπου browserContext που συνδέεται με τον στόχο.
  • Target.createCDPSession () - Δημιουργεί και επιστρέφει τη συνεδρία πρωτοκόλλου devtool του chrome, το οποίο είναι προσαρτημένο στον στόχο.
  • Target.opener () - Επιστρέφει τον στόχο που ανοίγει αυτόν τον στόχο. Βασικά, αυτή η μέθοδος χρησιμοποιείται για την επίτευξη του γονικού στόχου. Επιστρέφει μηδέν για τον στόχο ανώτατου επιπέδου.
  • Target.page() – Επιστρέφει το αντικείμενο σελίδας του στόχου. Εάν ο τύπος του στόχου δεν είναι σελίδα, επιστρέφει μηδενική τιμή.
  • Target.type () - Χρησιμοποιείται για να πάρει τον τύπο του στόχου. Η τιμή επιστροφής μπορεί να είναι μία από τις επιλογές - 'background_page', 'page', 'shared_worker', 'service_worker', 'browser' ή 'other'.
  • Target.url () - Επιστρέφει τη διεύθυνση URL του στόχου.
  • Target.worker () - Επιστρέφει το αντικείμενο του webworker. Η τιμή επιστροφής είναι μηδενική εάν ο στόχος δεν είναι ούτε "service_worker" ούτε "shared_worker".

Παραπομπή: Πατήστε εδώ για να διαβάσετε περισσότερα σχετικά με τις μεθόδους Κατηγορίας στόχου.

Class ConsoleMessage

Τα αντικείμενα της κατηγορίας ConsoleMessage αποστέλλονται ανά σελίδα μέσω του συμβάντος της κονσόλας. Οι συχνά χρησιμοποιούμενες μέθοδοι της κλάσης ConsoleMessage εξηγούνται στην επόμενη ενότητα.

Class ConsoleMessage - Μέθοδοι:

Οι παρακάτω μέθοδοι είναι διαθέσιμες στην τάξη ConsoleMessage -

  • consoleMessage.args () - Επιστρέφει έναν πίνακα αντικειμένου JSHandler. Το JSHandler εμποδίζει τη συλλογή απορριμμάτων JS από το σκουπίδια έως ότου απορριφθεί η λαβή. Καταστρέφεται αυτόματα όταν το περιβάλλον του γονικού προγράμματος περιήγησης καταστρέφεται
  • consoleMessage.location () - Επιστρέφει ένα αντικείμενο του πόρου, το οποίο περιλαμβάνει τις παρακάτω παραμέτρους.
  • url - Δηλώνει τη διεύθυνση URL του γνωστού πόρου. Εάν δεν είναι γνωστό, θα διατηρηθεί ένα απροσδιόριστο αξία.
  • LineNumber - Είναι ο αριθμός γραμμής με βάση το 0 που είναι διαθέσιμος στον πόρο. Εάν δεν είναι διαθέσιμο, θα διατηρηθεί ένα απροσδιόριστο αξία.
  • columNumber - Είναι ο αριθμός στήλης με βάση το 0 που είναι διαθέσιμος στον πόρο. Εάν δεν είναι διαθέσιμο, θα διατηρηθεί ένα απροσδιόριστο αξία.
  • consoleMessage.stackTrace () - Επιστρέφει μια λίστα αντικειμένων (κάθε αντικείμενο αναφέρεται σε έναν πόρο) που περιλαμβάνει τις παρακάτω παραμέτρους.
  • url - Δηλώνει τη διεύθυνση URL του γνωστού πόρου. Εάν δεν είναι γνωστό, θα διατηρηθεί ένα απροσδιόριστο αξία.
  • LineNumber - Είναι ο αριθμός γραμμής με βάση το 0 που είναι διαθέσιμος στον πόρο. Εάν δεν είναι διαθέσιμο, θα διατηρηθεί ένα απροσδιόριστο αξία.
  • columNumber - Είναι ο αριθμός στήλης με βάση το 0 που είναι διαθέσιμος στον πόρο. Εάν δεν είναι διαθέσιμο, θα διατηρηθεί ένα απροσδιόριστο αξία.
  • consoleMessage.text () - Επιστρέφει το κείμενο της κονσόλας.
  •  consoleMessage.type () - Επιστρέφει τη συμβολοσειρά ως τύπο μηνύματος κονσόλας. Ο τύπος μπορεί να είναι μία από τις τιμές - log, debug, info, error, προειδοποίηση, dir, dirxml, table, trace, clear, startGroup, startGroupCollapsed, endGroup, assert, profile, profileEnd, count, timeEnd.

Παραπομπή: Πατήστε εδώ για να μάθετε περισσότερα σχετικά με τις μεθόδους τάξης της κονσόλας.

Τάξη TimeoutError

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

Παράδειγμα TimeoutError Class - για τη μέθοδο page.waitForSelector, εάν το στοιχείο ιστού δεν εμφανίζεται εντός του καθορισμένου χρόνου, τότε θα εμφανιστεί το σφάλμα χρονικού ορίου. Ακολουθήστε το παρακάτω παράδειγμα, το οποίο δείχνει μια προσέγγιση για τη διαχείριση του χρονικού ορίου,

δοκιμάστε { await page.waitForSelector(' '); } catch (e) { if (e instanceof puppeteer.errors.TimeoutError) { // Γράψτε κώδικα για να χειριστείτε το σφάλμα. } } 

Κατηγορία FileChooser

Το αντικείμενο κλάσης επιλογής αρχείων δημιουργείται χρησιμοποιώντας τη μέθοδο page.waitForFileChooser. Η κλάση FileChooser χρησιμοποιείται για την αλληλεπίδραση με αρχεία. Οι μέθοδοι που χρησιμοποιούνται συχνά στην κατηγορία FileChooser εξηγούνται στην επόμενη ενότητα.

Κατηγορία FileChooser - Μέθοδοι:

Οι παρακάτω μέθοδοι είναι διαθέσιμες για την κατηγορία FileChooser -

  • fileChooser.accept (αρχείο_with_path) - Αυτή η μέθοδος χρησιμοποιείται για την αποστολή οποιουδήποτε αρχείου (για το οποίο η διαδρομή παρέχεται ως όρισμα).
  • fileChooser.cancel () - Αυτή η μέθοδος χρησιμοποιείται για την ακύρωση της διαδικασίας αποστολής αρχείων.
  • fileChooser.isMultiple () - Αυτή η μέθοδος ελέγχει εάν το fileChooser επιτρέπει την επιλογή πολλαπλών τιμών. Επιστρέφει μια δυαδική έκφραση (true ή false).

Ένα παράδειγμα της κατηγορίας FileChooser -

const [fileChooser] = αναμονή Promise.all([ page.waitForFileChooser(), page.click('#attach-button'), ]); await fileChooser.accept(['/puppeteer_proj/data/sample_file.pdf']);

Συμπέρασμα:

Σε αυτό το σεμινάριο "Puppeteer Class", έχουμε εξηγήσει την τάξη Puppeteer, την τάξη Target, την τάξη MessageConsole και την τάξη TimeoutError που περιλαμβάνει τους σημαντικούς χώρους ονομάτων (εάν υπάρχουν), τα συμβάντα (εάν υπάρχουν) και τις μεθόδους που χρησιμοποιούνται συχνά στις τεχνικές απόξεσης ιστοσελίδων Puppeteer με παραδείγματα. Στο επόμενο άρθρο, θα εξηγήσουμε την κατηγορία BrowserContext, Browser και BrowserContext.

Αφήστε ένα σχόλιο

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται *

Μεταβείτε στην κορυφή