Skvělý průvodce výukou třídy loutkářů (výukový program 7)

Puppeteer, což je knihovna uzlů js s otevřeným zdrojovým kódem, lze použít jako nástroj pro škrábání webu. Pochopení struktury příkazového řádku, Javascript a HTML DOM by mělo být dobré začít tímto tutoriálem loutkáře. Výukový program Série loutkářů je distribuován mezi podčástí, aby se loutkář dobře uchytil. 

Výukový program pro loutkáře

Loutkář Výukový program č. 1: Loutkář - přehled

Výukový program pro loutkáře č. 2: Proměnné prostředí loutkáře

Loutkář Výukový program č. 3: Přehled škrábání webu Puppeteer a Puppeteer Test Automation

Loutkář Výukový program č. 4: Nainstalujte si Puppeteer

Loutkář Výukový program č. 5: Ukázka projektu Loutkář

Loutkář Výukový program č. 6: Testování automatizace loutkářů

Loutkář Výukový program č. 7: Loutkářská třída

Loutkář Výukový program č. 8: Třída prohlížeče loutkářů

Loutkář Kurz č. 9: Třída loutkářských stránek

V tomto výukovém programu „Třída loutkářů“ vysvětlíme níže uvedené třídy, které zahrnují důležité jmenné prostory (pokud existují), události (jsou-li nějaké) a metody, které se často používají v technikách škrabání webu Puppeteer. 

V tomto článku vysvětlíme důležité součásti pomocí příkladů.  

Loutkářská třída

Koncepčně je třída plánem objektu, který definuje sadu pokynů (proměnné a metody). Tady je třída Puppeteer definována pomocí JavaScriptu k provádění různých akcí k provádění škrábání webu. Podívejme se na níže uvedený příklad, ke spuštění webové instance Chromium byl použit modul třídy Puppeteer.

const puppeteer = require('loutkář'); (async () => { const browserChrome = wait puppeteer.launch(); const pageChrome = wait browserChrome.newPage(); wait pageChrome.goto('https://www.google.com'); // Můžeme psát kroky zde čekají browserChrome.close(); })();

Třída Puppeteer také poskytuje více jmenných prostorů a metod, které podporují proces škrábání webu. V následujících částech jsou vysvětleny často používané jmenné prostory a metody.

Třída loutkářů - obory jmen:

Je to kontejner, který definuje více identifikátorů, metod, proměnných atd., V JavaScriptu. Je to způsob, jak seskupit kód logickým a organizovaným způsobem. Níže jmenné prostory poskytuje třída Puppeteer.

loutkář. zařízení: Vrátí seznam zařízení, která lze metodou použít page.emulate (možnosti) provádět škrábání v mobilních zařízeních. 

Příklad - otevření a zavření webové stránky google na mobilním zařízení -

const puppeteer = require('loutkář'); const samsung = puppeteer.devices['Samsung J5']; (async () => { const browserChrome = wait puppeteer.launch(); const pageChrome = wait browserChrome.newPage(); wait pageChrome.emulate(samsung); wait pageChrome.goto('https://www.google.com '); čekat browserChrome.close(); })();

chyby puppeteer: Při práci s různými metodami loutkářů existuje šance na výjimky. Většinou, pokud metody nejsou schopny splnit požadavky, vyvolá chyby. Existují různé třídy definované pro zpracování chyb prostřednictvím oboru názvů 'puppeteer.errors'.

Příklad - pro metodu page.waitForSelector, pokud se webový prvek neobjeví ve stanoveném čase, objeví se chyba časového limitu. Projděte si níže uvedený příklad, který ukazuje přístup ke zpracování časového limitu,

try { wait page.waitForSelector(' '); } catch (err) { if (err instanceof puppeteer.errors.TimeoutError) { // Napište kód pro zpracování chyby časového limitu. } } 

puppeteer.networkPodmínky: Vrátí seznam síťových podmínek, které lze použít na stránce metody. EmulateNetworkConditions (networkConditions). Je definován úplný seznam podmínek sítě zde.

Příklad - Prostřednictvím této ukázky kódu otevřeme webovou stránku google pomocí předdefinovaného stavu sítě.

const puppeteer = require('loutkář'); const net = puppeteer.networkConditions['Fast 3G']; (async () => { const browserChrome = wait puppeteer.launch(); const pageChrome = wait browserChrome.newPage(); wait pageChrome.emulateNetworkConditions(net); wait pageChrome.goto('https://www.google.com '); čekat browserChrome.close(); })();

loutkář. produkt: Vrátí název prohlížeče, který bude použit pro automatizaci (Chrome nebo Firefox). Produkt pro prohlížeč je nastaven buď proměnnou prostředí PUPPETEER_PRODUCT, nebo volbou produktu dostupnou metodou třídy loutkářů puppeteer.launch ([možnosti]). Výchozí hodnota je Chrome.

Reference: klikněte zde se dozvědět více o jmenných prostorech třídy Puppeteer.

Třída loutkářů - Metody:

Metody obsahují příkazy k provedení konkrétní akce. Třída loutkářů má níže uvedené metody,

puppeteer.clearCustomQueryHandlers () - Vymaže všechny registrované obslužné programy.

puppeteer.connect (možnosti) - Tato metoda se používá k propojení loutkáře s existujícími prohlížeči. Vrátí objekt typu příslib, který označuje stav tohoto asynchronního procesu. Příklad - V níže uvedeném příkladu se loutkář odpojí od aktuálního prohlížeče a znovu se připojí,

const puppeteer = require('loutkář'); (async () => { const browserChrome = wait puppeteer.launch(); // Zkopírujte odkaz na koncový bod, který bude později znovu připojen const endpoint = browserChrome.wsEndpoint(); // Odpojit loutkář browserChrome.disconnect(); // Použít koncový bod pro opětovné připojení const browserChrome2 = wait puppeteer.connect({endpoint}); // Zavřít druhou instanci prohlížeče Chromium wait browserChrome2.close(); })();

puppeteer.createBrowserFetcher ([možnosti]) - Vytvoří objekt načítání prohlížeče ke stažení a správě různých verzí prohlížečů (Chrome a Firefox).

const browserFetcher = puppeteer.createBrowserFetcher ();

puppeteer.customQueryHandlerNames() – Vrací an řada všech registrovaných vlastních obslužných rutin dotazů.

puppeteer.defaultArgs ([možnosti]) - Při spuštění vrátí výchozí možnosti konfigurace prohlížeče Chrome jako pole. Můžeme také nastavit konfigurovatelné možnosti prohlížeče pomocí možnosti volitelného argumentu.

const args = puppeteer.defaultArgs ();

puppeteer.executablePath () - Vrátí cestu, kterou loutkář očekává pro instanci přiloženého prohlížeče. Cesta, která by nebyla k dispozici při stahování, byla přeskočena proměnnou prostředí PUPPETEER_SKIP_DOWNLOAD. Můžeme také použít proměnné prostředí PUPPETEER_EXECUTABLE_PATH a PUPPETEER_CHROMIUM_REVISION ke změně cesty.

const args = puppeteer.executablePath ();

puppeteer.launch ([možnosti]) - Tato metoda třídy loutkářů se používá ke spuštění webového prohlížeče. Prostřednictvím volitelného argumentu můžeme předat různé konfigurace prohlížeče, například product (název prohlížeče), headless, devtools atd. Tato metoda vrací objekt slib, který obsahuje odkaz na spuštěný prohlížeč.

const prohlížeč = čekat puppeteer.launch ();

puppeteer.registerCustomQueryHandler (jméno, queryHandler) - Používá se k registraci vlastní obslužné rutiny dotazu. Zde „name“ poskytuje název obslužné rutiny dotazu a „queryHandler“ definuje skutečnou vlastní obslužnou rutinu dotazu.

puppeteer.unregisterCustomQueryHandler (jméno) - Používá se k zrušení registrace jakéhokoli vlastního obslužného programu dotazů.

Reference: klikněte zde číst více o metodách Puppeteer Class.

Cílová třída

Cílová třída poskytuje metody pro práci s cíli. Nejčastěji používané metody, které jsou k dispozici s cílovou třídou, jsou vysvětleny v následující části.

Cílová třída - metody:

Níže uvedené metody jsou k dispozici ve třídě cílů -

  • Target.browser () - Vrátí objekt prohlížeče, který je propojen s cílem.
  • Target.browserContext () - Vrací objekt typu browserContext, který je propojen s cílem.
  • Target.createCDPSession () - Vytvoří a vrátí relaci protokolu devtool chromu, který je připojen k cíli.
  • Target.opener () - Vrátí cíl, který tento cíl otevře. V zásadě se tato metoda používá k získání nadřazeného cíle. Vrací null pro cíl nejvyšší úrovně.
  • Target.page() – Vrací objekt stránky cíle. Pokud typem cíle není stránka, vrátí hodnotu null.
  • Target.type () - Používá se k získání typu cíle. Návratovou hodnotou může být jedna z možností - 'background_page', 'page', 'shared_worker', 'service_worker', 'browser' nebo 'other'.
  • Target.url () - Vrací adresu URL cíle.
  • Target.worker () - Vrátí objekt webworkera. Návratová hodnota má hodnotu null, pokud cíl není „service_worker“ ani „shared_worker“.

Reference: klikněte zde číst více o metodách třídy Target.

Třída ConsoleMessage

Objekty třídy ConsoleMessage jsou odesílány po stránce prostřednictvím události konzoly. Často používané metody třídy consoleMessage jsou vysvětleny v následující části.

ConsoleMessage Class - Metody:

Níže uvedené metody jsou k dispozici ve třídě ConsoleMessage -

  • consoleMessage.args () - Vrací pole objektu JSHandler. JSHandler zabrání tomu, aby byl propojený objekt JS odstraněn z paměti, dokud nebude vyřazen popisovač. Automaticky se zničí, když se zničí kontext nadřazeného prohlížeče.
  • consoleMessage.location () - Vrátí objekt prostředku, který obsahuje níže uvedené parametry.
  • url - označuje adresu URL známého zdroje. Pokud není známo, zůstane nedefinovaný hodnota.
  • LineNumber - Je to číslo řádku založené na 0, které je k dispozici ve zdroji. Pokud není k dispozici, uchová se nedefinovaný hodnota.
  • columNumber - Je to číslo sloupce založeného na 0, které je k dispozici ve zdroji. Pokud není k dispozici, uchová se nedefinovaný hodnota.
  • consoleMessage.stackTrace () - Vrátí seznam objektů (každý objekt odkazuje na prostředek), který obsahuje níže uvedené parametry.
  • url - označuje adresu URL známého zdroje. Pokud není známo, zůstane nedefinovaný hodnota.
  • LineNumber - Je to číslo řádku založené na 0, které je k dispozici ve zdroji. Pokud není k dispozici, uchová se nedefinovaný hodnota.
  • columNumber - Je to číslo sloupce založeného na 0, které je k dispozici ve zdroji. Pokud není k dispozici, uchová se nedefinovaný hodnota.
  • consoleMessage.text () - Vrátí text konzoly.
  •  consoleMessage.type () - Vrátí řetězec jako typ zprávy konzoly. Typ může být některá z hodnot - log, debug, info, error, warning, dir, dirxml, table, trace, clear, startGroup, startGroupCollapsed, endGroup, assert, profile, profileEnd, count, timeEnd.

Reference: klikněte zde dozvědět se více o metodách třídy consoleMessage.

Třída TimeoutError

Při práci s různými loutkáři existuje šance na výjimky. Většinou, pokud metody nejsou schopny splnit požadavky, vyvolá chyby. Třída TimeoutError se používá ke zpracování tohoto druhu výjimky.

Příklad třídy TimeoutError - pro metodu page.waitForSelector, pokud se webový prvek neobjeví ve stanoveném čase, objeví se chyba časového limitu. Projděte si níže uvedený příklad, který ukazuje přístup ke zpracování časového limitu,

try { wait page.waitForSelector(' '); } catch (e) { if (e instanceof puppeteer.errors.TimeoutError) { // Napište kód pro zpracování chyby. } } 

Třída FileChooser

Objekt třídy pro výběr souborů je vytvořen pomocí metody page.waitForFileChooser. Třída FileChooser se používá k interakci se soubory. Často používané metody třídy FileChooser jsou vysvětleny v následující části.

Třída FileChooser - metody:

Níže jsou k dispozici metody pro třídu FileChooser -

  • fileChooser.accept (file_with_path) - Tato metoda se používá k nahrání libovolného souboru (jehož cesta je uvedena jako argument).
  • fileChooser.cancel () - Tato metoda se používá ke zrušení procesu nahrávání souboru.
  • fileChooser.isMultiple () - Tato metoda kontroluje, zda fileChooser umožňuje vybrat více hodnot. Vrátí logický výraz (true nebo false).

Příklad třídy FileChooser -

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

Závěr:

V tomto tutoriálu „Třída Puppeteer“ jsme vysvětlili třídu Puppeteer, třídu Target, třídu MessageConsole a třídu TimeoutError, která zahrnuje důležité jmenné prostory (pokud existují), události (jsou-li nějaké) a metody, které se často používají v technikách škrabání webů Puppeteer s příklady. V příštím článku vysvětlíme BrowserContext, Browser a BrowserContext Class.

Zanechat komentář