Świetny przewodnik edukacyjny klasy lalkarza (samouczek 7)

Puppeteer, który jest biblioteką node js typu open source, może być używany jako narzędzie do skrobania stron internetowych. Zrozumienie linii poleceń, JavaScript i struktury HTML DOM powinno być dobre na początek tego samouczka lalkarza. Samouczek dotyczący serii Puppeteer jest dystrybuowany w poniższych sekcjach, aby dobrze poznać Puppeteer. 

Samouczek lalkarza

Lalkarz Samouczek nr 1: Przegląd lalkarza

Samouczek lalkarza nr 2: Zmienne środowiskowe lalkarza

Lalkarz Samouczek nr 3: Przeszukiwanie sieci lalkarza i automatyzacja testów lalkarza - przegląd

Lalkarz Samouczek nr 4: Zainstaluj Puppeteer

Lalkarz Samouczek nr 5: Przykładowy projekt lalkarza

Lalkarz Samouczek nr 6: Testowanie automatyzacji lalkarza

Lalkarz Samouczek nr 7: Klasa lalkarzy

Lalkarz Samouczek nr 8: Klasa lalkarza w przeglądarce

Lalkarz Samouczek nr 9: Klasa lalkarza

W tym samouczku „Puppeteer Class” wyjaśnimy poniższe klasy, które zawierają ważne przestrzenie nazw (jeśli istnieją), zdarzenia (jeśli istnieją) i metody, które są często używane w technikach skrobania sieci. 

W tym artykule wyjaśnimy ważne elementy z przykładami.  

Klasa lalkarzy

Koncepcyjnie klasa jest planem obiektu, który definiuje zestaw instrukcji (zmienne i metody). Tutaj klasa Puppeteer jest zdefiniowana za pomocą javascript do wykonywania różnych działań w celu przeszukiwania sieci. Sprawdźmy na poniższym przykładzie, moduł klasy Puppeteer został użyty do uruchomienia instancji internetowej Chromium.

const lalkarz = require('lalkarz'); (async() => { const browserChrome = await puppeteer.launch(); const pageChrome = await browserChrome.newPage(); await pageChrome.goto('https://www.google.com'); // Możemy pisać kroki tutaj czekają na przeglądarkęChrome.close();})();

Klasa Puppeteer zapewnia również wiele przestrzeni nazw i metod, które obsługują proces pobierania z sieci. Często używane przestrzenie nazw i metody są wyjaśnione w następnych sekcjach.

Klasa lalkarza - przestrzenie nazw:

Jest to kontener, który definiuje wiele identyfikatorów, metod, zmiennych itp. W javascript. Jest to sposób na zgrupowanie kodu w logiczny i zorganizowany sposób. Poniższe przestrzenie nazw są dostarczane przez klasę Puppeteer.

lalkarz. urządzenia: Zwraca listę urządzeń, których może używać ta metoda page.emulate (opcje) do wykonywania skrobania w urządzeniach mobilnych. 

Przykład - otwieranie i zamykanie strony internetowej Google na urządzeniu przenośnym -

const lalkarz = require('lalkarz'); const samsung = lalkarz.urządzenia['Samsung J5']; (async() => { const browserChrome = await puppeteer.launch(); const pageChrome = await browserChrome.newPage(); await pageChrome.emulate(samsung); await pageChrome.goto('https://www.google.com '); czekaj na przeglądarkęChrome.close();})();

lalkarz.błędy: Podczas pracy różnymi metodami lalkarskimi istnieje szansa na wyjątki. Przeważnie, jeśli metody nie są w stanie spełnić żądań, generuje błędy. Istnieją różne klasy zdefiniowane do obsługi błędów za pośrednictwem przestrzeni nazw „puppeteer.errors”.

Przykład - dla metody page.waitForSelector, jeśli element web nie pojawi się w określonym czasie, to pojawi się błąd timeout. Proszę przejść przez poniższy przykład, który pokazuje podejście do obsługi limitu czasu,

spróbuj { await page.waitForSelector(' '); } catch (err) { if (err instanceof puppeteer.errors.TimeoutError) { // Napisz kod obsługujący błąd przekroczenia limitu czasu. } } 

puppeteer.network Warunki: Zwraca listę warunków sieciowych, których można użyć na stronie metody. EmulateNetworkConditions (networkConditions). Zdefiniowano pełną listę warunków sieciowych tutaj.

Przykład - za pomocą tego przykładowego kodu otworzymy stronę internetową Google przy użyciu predefiniowanych warunków sieciowych.

const lalkarz = require('lalkarz'); const net = puppeteer.networkConditions['Szybkie 3G']; (async() => { const browserChrome = await puppeteer.launch(); const pageChrome = await browserChrome.newPage(); await pageChrome.emulateNetworkConditions(net); await pageChrome.goto('https://www.google.com '); czekaj na przeglądarkęChrome.close();})();

lalkarz.produkt: Zwraca nazwę przeglądarki, która będzie używana do automatyzacji (Chrome lub Firefox). Produkt dla przeglądarki jest ustawiany przez zmienną środowiskową PUPPETEER_PRODUCT lub opcję produktu dostępną w metodzie klasy lalkarza puppeteer.launch ([opcje]). Wartość domyślna to Chrome.

Numer referencyjny: Kliknij tutaj aby dowiedzieć się więcej o przestrzeniach nazw klas lalkarzy.

Klasa lalkarzy - Metody:

Metody zawierają instrukcje do wykonania określonej akcji. Klasa lalkarzy ma poniższe metody,

puppeteer.clearCustomQueryHandlers () - Czyści wszystkie zarejestrowane programy obsługi.

puppeteer.connect (opcje) - Ta metoda służy do łączenia lalkarza z dowolnymi istniejącymi przeglądarkami. Zwraca obiekt typu obietnica, który wskazuje stan tego procesu asynchronicznego. Przykład - W poniższym przykładzie lalkarz rozłącza się z bieżącą przeglądarką i łączy się ponownie,

const lalkarz = require('lalkarz'); (async() => { const browserChrome = await puppeteer.launch(); // Skopiuj odwołanie do punktu końcowego, które zostanie ponownie połączone później const endpoint = browserChrome.wsEndpoint(); // Rozłącz przeglądarkę lalkarza BrowserChrome.disconnect(); // Użyj punkt końcowy do ponownego połączenia const browserChrome2 = await puppeteer.connect({endpoint}); // Zamknij drugą instancję Chromium await browserChrome2.close(); })();

puppeteer.createBrowserFetcher ([opcje]) - Tworzy obiekt pobierania przeglądarki do pobierania i zarządzania różnymi wersjami przeglądarek (Chrome i Firefox).

const browserFetcher = puppeteer.createBrowserFetcher ();

puppeteer.customQueryHandlerNames() – Zwraca an szyk wszystkich zarejestrowanych niestandardowych programów obsługi zapytań.

puppeteer.defaultArgs ([opcje]) - Zwraca domyślne opcje konfiguracji przeglądarki Chrome jako tablicę podczas uruchamiania. Możemy również ustawić konfigurowalne opcje przeglądarki za pomocą opcjonalnej opcji argumentu.

const args = puppeteer.defaultArgs ();

puppeteer.executablePath () - Zwraca ścieżkę, której oczekuje lalkarz dla dołączonej instancji przeglądarki. Ścieżka, która nie byłaby dostępna do pobrania, została pominięta przez zmienną środowiskową PUPPETEER_SKIP_DOWNLOAD. Możemy również użyć zmiennych środowiskowych PUPPETEER_EXECUTABLE_PATH i PUPPETEER_CHROMIUM_REVISION, aby zmienić ścieżkę.

const args = puppeteer.executablePath ();

puppeteer.launch ([opcje]) - Ta metoda klasy lalkarza służy do uruchamiania przeglądarki internetowej. Za pomocą opcjonalnego argumentu możemy przekazać różne konfiguracje przeglądarki, takie jak produkt (nazwa przeglądarki), headless, devtools itp. Ta metoda zwraca obiekt promise, który zawiera odniesienie do uruchomionej przeglądarki.

const browser = await puppeteer.launch ();

puppeteer.registerCustomQueryHandler (nazwa, queryHandler) - Służy do rejestrowania niestandardowego modułu obsługi zapytań. Tutaj „name” zawiera nazwę obsługi zapytań, a „queryHandler” definiuje rzeczywistą niestandardową obsługę zapytań.

puppeteer.unregisterCustomQueryHandler (nazwa) - Służy do wyrejestrowania dowolnego niestandardowego modułu obsługi zapytań.

Numer referencyjny: Kliknij tutaj aby dowiedzieć się więcej o metodach w klasie lalkarzy.

Klasa docelowa

Klasa docelowa udostępnia metody do pracy z elementami docelowymi. Najczęściej używane metody, które są dostępne z klasą docelową, są wyjaśnione w następnej sekcji.

Klasa docelowa - metody:

Poniższe metody są dostępne w klasie targetów -

  • Target.browser () - Zwraca obiekt przeglądarki, który jest powiązany z celem.
  • Target.browserContext () - Zwraca obiekt typu browserContext, który jest powiązany z celem.
  • Target.createCDPSession () - Tworzy i zwraca sesję protokołu Devtool Chrome, która jest podłączona do celu.
  • Target.opener () - Zwraca cel, który otwiera ten cel. Zasadniczo ta metoda jest używana do uzyskania celu nadrzędnego. Zwraca wartość null dla celu najwyższego poziomu.
  • Target.page() – Zwraca obiekt strony celu. Jeśli typem celu nie jest strona, zwraca wartość null.
  • Target.type () - Służy do określenia typu celu. Wartość zwracana może być jedną z opcji - „background_page”, „page”, „shared_worker”, „service_worker”, „browser” lub „other”.
  • Target.url () - Zwraca adres URL celu.
  • Target.worker () - Zwraca obiekt webworkera. Wartość zwracana jest zerowa, jeśli celem nie jest ani „service_worker”, ani „shared_worker”.

Numer referencyjny: Kliknij tutaj aby dowiedzieć się więcej o metodach klas docelowych.

Klasa ConsoleMessage

Obiekty klasy ConsoleMessage są wywoływane według strony za pośrednictwem zdarzenia konsoli. Często używane metody klasy consoleMessage są wyjaśnione w następnej sekcji.

Klasa ConsoleMessage - metody:

Poniższe metody są dostępne w klasie ConsoleMessage -

  • consoleMessage.args () - Zwraca tablicę obiektu JSHandler. JSHandler zapobiega gromadzeniu elementów bezużytecznych połączonego obiektu JS, dopóki uchwyt nie zostanie usunięty. Jest automatycznie niszczony, gdy kontekst przeglądarki nadrzędnej zostanie zniszczony.
  • consoleMessage.location () - Zwraca obiekt zasobu, który zawiera poniższe parametry.
  • url - oznacza adres URL znanego zasobu. Jeśli nie jest znany, zachowa niezdefiniowany wartość.
  • LineNumber - jest to numer wiersza liczony od 0, który jest dostępny w zasobie. Jeśli nie będzie dostępny, zachowa niezdefiniowany wartość.
  • columNumber - jest to numer kolumny liczony od 0, który jest dostępny w zasobie. Jeśli nie będzie dostępny, zachowa niezdefiniowany wartość.
  • consoleMessage.stackTrace () - Zwraca listę obiektów (każdy obiekt odnosi się do zasobu), która zawiera poniższe parametry.
  • url - oznacza adres URL znanego zasobu. Jeśli nie jest znany, zachowa niezdefiniowany wartość.
  • LineNumber - jest to numer wiersza liczony od 0, który jest dostępny w zasobie. Jeśli nie będzie dostępny, zachowa niezdefiniowany wartość.
  • columNumber - jest to numer kolumny liczony od 0, który jest dostępny w zasobie. Jeśli nie będzie dostępny, zachowa niezdefiniowany wartość.
  • consoleMessage.text () - Zwraca tekst konsoli.
  •  consoleMessage.type () - Zwraca łańcuch jako typ komunikatu konsoli. Typ może być jedną z wartości - log, debug, info, error, warning, dir, dirxml, table, trace, clear, startGroup, startGroupCollapsed, endGroup, assert, profile, profileEnd, count, timeEnd.

Numer referencyjny: Kliknij tutaj aby dowiedzieć się więcej o metodach klasy consoleMessage.

Klasa TimeoutError

Przy pracy z innym lalkarzem jest szansa na wyjątki. W większości przypadków, jeśli metody nie są w stanie spełnić żądań, generuje błędy. Do obsługi tego rodzaju wyjątków używana jest klasa TimeoutError.

Przykład klasy TimeoutError - dla metody page.waitForSelector, jeśli element web nie pojawi się w określonym czasie, pojawi się błąd timeout. Proszę przejść przez poniższy przykład, który pokazuje podejście do obsługi limitu czasu,

spróbuj { await page.waitForSelector(' '); } catch (e) { if (e instanceof puppeteer.errors.TimeoutError) { // Napisz kod do obsługi błędu. } } 

Klasa FileChooser

Obiekt klasy selektora plików jest tworzony przy użyciu metody page.waitForFileChooser. Klasa FileChooser służy do interakcji z plikami. Często używane metody klasy FileChooser zostały wyjaśnione w następnej sekcji.

Klasa FileChooser - Metody:

Poniższe metody są dostępne dla klasy FileChooser -

  • fileChooser.accept (plik_z_ścieżką) - Ta metoda służy do przesyłania dowolnego pliku (do którego ścieżka jest podana jako argument).
  • fileChooser.cancel () - Ta metoda służy do anulowania procesu przesyłania plików.
  • fileChooser.isMultiple () - Ta metoda sprawdza, czy fileChooser pozwala wybrać wiele wartości. Zwraca wyrażenie logiczne (prawda lub fałsz).

Przykład klasy FileChooser -

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

Wnioski:

W tym samouczku „Klasa Puppeteer” wyjaśniliśmy klasę Puppeteer, klasę Target, klasę MessageConsole i klasę TimeoutError, która zawiera ważne przestrzenie nazw (jeśli istnieją), zdarzenia (jeśli występują) i metody często używane w technikach skrobania sieci Puppeteer z przykładami. W następnym artykule wyjaśnimy klasę BrowserContext, Browser i BrowserContext.

Zostaw komentarz