Nagyszerű tanulási útmutató a bábos osztályhoz (7. oktatóanyag)

A Puppeteer, amely egy nyílt forráskódú csomópont js könyvtár, webkaparó eszközként használható. A parancssor, a Javascript és a HTML DOM-struktúra megértése jó lehet, ha elkezdi ezt a bábos oktatóanyagot. A Series of Puppeteer oktatóanyag az alábbi alrészek között van elosztva, hogy jobban megismerje a Puppeteer-t. 

Bábos bemutató

Bábjátékos 1. oktatóanyag: Bábos áttekintése

2. bábos oktatóanyag: Bábos környezeti változók

Bábjátékos 3. oktatóanyag: A Puppeteer Web Scraping és Puppeteer Test Automation áttekintése

Bábjátékos 4. oktatóanyag: Telepítse a Puppeteer programot

Bábjátékos 5. oktatóanyag: Minta bábos projekt

Bábjátékos 6. oktatóanyag: Bábos automatizálási tesztelés

Bábjátékos 7. oktatóanyag: Bábos osztály

Bábjátékos 8. oktatóanyag: Bábos böngésző osztály

Bábjátékos 9. oktatóanyag: Bábos oldal osztály

Ebben a „Bábos osztály” oktatóanyagban elmagyarázzuk az alábbi osztályokat, amelyek magukban foglalják a fontos névtereket (ha vannak), eseményeket (ha vannak), és módszereket, amelyeket gyakran használnak a Puppeteer webkaparási technikáiban. 

Ebben a cikkben példákkal magyarázzuk el a fontos összetevőket.  

Bábos osztály

Elvileg az osztály egy objektum tervrajza, amely utasításokat (változókat és metódusokat) határoz meg. Itt a Puppeteer osztály Javascript használatával van definiálva, hogy különböző műveleteket hajtson végre a webkaparás végrehajtásához. Nézzük meg az alábbi példát, a Puppeteer osztály modult használták egy Chromium webpéldány elindítására.

const bábszínész = követelmény('bábos'); (async () => { const browserChrome = await puppeteer.launch(); const pageChrome = await browserChrome.newPage(); várjon pageChrome.goto('https://www.google.com'); // Írhatunk az itt leírt lépések böngészőChrome.close(); })();

A Puppeteer osztály több névteret és módszert is biztosít, amelyek támogatják a webkaparási folyamatot. A gyakran használt névtereket és metódusokat a következő szakaszok ismertetik.

Bábos osztály – Névterek:

Ez egy olyan tároló, amely több azonosítót, metódust, változót stb. határoz meg javascriptben. Ez egy módszer a kód logikus és szervezett csoportosítására. Az alábbi névtereket a Puppeteer osztály biztosítja.

bábjátékos.eszközök: Visszaadja a metódus által használható eszközök listáját page.emulate(options) kaparás végrehajtásához mobil eszközökön. 

Példa – Google weboldal megnyitása és bezárása mobileszközön –

const bábszínész = követelmény('bábos'); const samsung = bábjátékos.devices['Samsung J5']; (async () => { const browserChrome = await puppeteer.launch(); const pageChrome = await browserChrome.newPage(); await pageChrome.emulate(samsung); várjon pageChrome.goto('https://www.google.com) '); várja a browserChrome.close(); })();

bábjátékos.errors: Különböző bábos módszerekkel való munka közben van esély kivételekre. Leginkább, ha a metódusok nem tudják teljesíteni a kéréseket, akkor hibát dob. Különféle osztályok vannak meghatározva a hibák kezelésére a „puppeteer.errors” névtéren keresztül.

Példa – a page.waitForSelector metódushoz, ha a webelem nem jelenik meg a megadott időn belül, akkor megjelenik az időtúllépési hiba. Kérjük, nézze meg az alábbi példát, amely bemutatja az időtúllépés kezelésének megközelítését,

try { await page.waitForSelector(' '); } catch (err) { if (err instanceof puppeteer.errors.TimeoutError) { // Írjon kódot az időtúllépési hiba kezelésére. } } 

puppeteer.networkFeltételek: Visszaadja a hálózati feltételek listáját, amelyek a metódus oldalon használhatók.emulateNetworkConditions(networkConditions). Meg van határozva a hálózati feltételek teljes listája itt.

Példa – Ezen a kódmintán keresztül megnyitjuk a Google weboldalát egy előre meghatározott hálózati feltétellel.

const bábszínész = követelmény('bábos'); const net = puppeteer.networkConditions['Fast 3G']; (async () => { const browserChrome = await puppeteer.launch(); const pageChrome = await browserChrome.newPage(); várjon pageChrome.emulateNetworkConditions(net); várjon pageChrome.goto('https://www.google.com) '); várja a browserChrome.close(); })();

bábjátékos.termék: Az automatizáláshoz használt böngésző nevét adja vissza (Chrome vagy Firefox). A böngésző termékét vagy a PUPPETEER_PRODUCT környezeti változó vagy a bábos osztály metódusában elérhető termékopció állítja be puppeteer.launch([opciók]). Az alapértelmezett érték a Chrome.

Referencia: Kattints itt ha többet szeretne megtudni a Puppeteer Class névterekről.

Bábos osztály – Módszerek:

A metódusok utasításokat tartalmaznak az adott művelet végrehajtásához. A bábos osztálynak az alábbi módszerei vannak,

puppeteer.clearCustomQueryHandlers() – Törli az összes regisztrált kezelőt.

puppeteer.connect(opciók) – Ezzel a módszerrel a bábjátékot bármilyen meglévő böngészőhöz csatlakoztatják. Egy ígéret típusú objektumot ad vissza, amely jelzi az aszinkron folyamat állapotát. Példa – Az alábbi példában a bábjátékos lekapcsolja az aktuális böngészőt, és újra csatlakozik,

const bábszínész = követelmény('bábos'); (async () => { const browserChrome = await pupppeteer.launch(); // Másolja ki a végpont hivatkozást, amely később újracsatlakozik const endpoint = browserChrome.wsEndpoint(); // Bontsa le a bábjátékos böngészőChrome.disconnect() kapcsolatát; // Használja a végpont az újracsatlakozáshoz const browserChrome2 = await puppeteer.connect({endpoint}); // A Chromium második példányának bezárása await browserChrome2.close(); })();

puppeteer.createBrowserFetcher([opciók]) – Létrehoz egy böngésző lekérő objektumot a böngészők különböző verzióinak (Chrome és Firefox) letöltéséhez és kezeléséhez.

const browserFetcher = bábjátékos.createBrowserFetcher();

puppeteer.customQueryHandlerNames() – Egy sor az összes regisztrált egyéni lekérdezéskezelő közül.

puppeteer.defaultArgs([opciók]) – Indításkor tömbként adja vissza a Chrome böngésző alapértelmezett konfigurációs beállításait. Ezenkívül beállíthatjuk a böngésző konfigurálható beállításait az opcionális argumentum opcióval.

const args = bábjátékos.defaultArgs();

puppeteer.executablePath() – Visszaadja azt az elérési utat, amelyet a bábjátékos vár a kötegelt böngészőpéldányhoz. A letöltésben nem elérhető elérési utat a PUPPETEER_SKIP_DOWNLOAD környezeti változó kihagyta. A PUPPETEER_EXECUTABLE_PATH és PUPPETEER_CHROMIUM_REVISION környezeti változókat is használhatjuk az elérési út megváltoztatásához.

const args = pupppeteer.executablePath();

puppeteer.launch([opciók]) – Ez a bábos osztály metódusa a webböngésző elindítására szolgál. Az opcionális argumentumon keresztül átadhatjuk a böngésző különböző konfigurációit, mint például a termék(böngésző neve), headless, devtools stb. Ez a metódus visszaadja az ígéret objektumot, amely az elindított böngésző hivatkozását tartalmazza.

const böngésző = await puppeteer.launch();

puppeteer.registerCustomQueryHandler(név, lekérdezéskezelő) – Egyéni lekérdezéskezelő regisztrálására szolgál. Itt a „name” a lekérdezéskezelő nevét, a „queryHandler” pedig a tényleges egyéni lekérdezéskezelőt határozza meg.

puppeteer.unregisterCustomQueryHandler(név) – Az egyéni lekérdezéskezelők regisztrációjának törlésére szolgál.

Referencia: Kattints itt hogy többet olvashat a Bábos osztály módszereiről.

Célosztály

A célosztály módszereket biztosít a célokkal való munkavégzéshez. A célosztállyal elérhető leggyakrabban használt módszereket a következő részben ismertetjük.

Célcsoport – Módszerek:

Az alábbi módszerek érhetők el a targets osztályban -

  • Target.browser() – Visszaadja a célhoz kapcsolódó böngészőobjektumot.
  • Target.browserContext() – Egy browserContext típusú objektumot ad vissza, amely a célhoz kapcsolódik.
  • Target.createCDPSession() – Létrehozza és visszaadja a chrome devtool protokoll munkamenetét, amely a célhoz van csatolva.
  • Target.nyitó() – Visszaadja azt a célpontot, amely megnyitja ezt a célt. Alapvetően ezt a módszert használják a szülő cél megszerzésére. A legfelső szintű cél nullát ad vissza.
  • Target.page() – Visszaadja a oldal objektum a cél. Ha a cél típusa nem oldal, akkor null értéket ad vissza.
  • Target.type() – A célpont típusának meghatározására szolgál. A visszatérési érték a következő lehetőségek közül választhat: 'background_page' , 'page' , 'shared_worker', 'service_worker', 'browser' vagy 'egyéb'.
  • Target.url() – Visszaadja a cél URL-jét.
  • Target.worker() – Visszaadja a webworker objektumot. A visszatérési érték nulla, ha a cél nem 'service_worker' és nem 'shared_worker'.

Referencia: Kattints itt hogy többet megtudjon a Target osztály metódusairól.

ConsoleMessage osztály

A ConsoleMessage osztály objektumai oldalanként, a konzoleseményen keresztül kerülnek kiküldésre. A consoleMessage osztály gyakran használt metódusait a következő részben ismertetjük.

ConsoleMessage osztály – Módszerek:

Az alábbi módszerek érhetők el a ConsoleMessage osztályban -

  • consoleMessage.args() – JSHandler objektum tömbjét adja vissza. A JSHandler megakadályozza, hogy a csatolt JS-objektum szemetet gyűjtsön, amíg a fogantyút meg nem semmisítik. Ez automatikusan megsemmisül, ha a szülőböngésző kontextus megsemmisül.
  • consoleMessage.location() – Az erőforrás egy objektumát adja vissza, amely tartalmazza az alábbi paramétereket.
  • url – Az ismert erőforrás URL-jét jelöli. Ha nem ismert, akkor megmarad egy undefined értéket.
  • LineNumber – Az erőforrásban elérhető 0-alapú sorszám. Ha nem elérhető, akkor megmarad egy undefined értéket.
  • columNumber – Az erőforrásban elérhető 0 alapú oszlopszám. Ha nem elérhető, akkor megmarad egy undefined értéket.
  • consoleMessage.stackTrace() – Visszaadja az objektumok listáját (minden objektum egy erőforrásra hivatkozik), amely az alábbi paramétereket tartalmazza.
  • url – Az ismert erőforrás URL-jét jelöli. Ha nem ismert, akkor megmarad egy undefined értéket.
  • LineNumber – Az erőforrásban elérhető 0-alapú sorszám. Ha nem elérhető, akkor megmarad egy undefined értéket.
  • columNumber – Az erőforrásban elérhető 0 alapú oszlopszám. Ha nem elérhető, akkor megmarad egy undefined értéket.
  • consoleMessage.text() – Visszaadja a konzol szövegét.
  •  consoleMessage.type() – A karakterláncot adja vissza a konzolüzenet típusaként. A típus a következő értékek bármelyike ​​lehet: log, debug, info, error, warning, dir, dirxml, table, trace, clear, startGroup, startGroupCollapsed, endGroup, assert, profile, profileEnd, count, timeEnd.

Referencia: Kattints itt ha többet szeretne megtudni a consoleMessage osztály metódusairól.

Timeout Error Class

Különböző bábszínészekkel való munka során előfordulhat kivétel. Leginkább, ha a metódusok nem tudják teljesíteni a kéréseket, akkor hibát dob. A TimeoutError osztály az ilyen kivételek kezelésére szolgál.

Példa a TimeoutError osztályra – a page.waitForSelector metódushoz, ha a webelem nem jelenik meg a megadott időn belül, akkor megjelenik az időtúllépési hiba. Kérjük, nézze meg az alábbi példát, amely bemutatja az időtúllépés kezelésének megközelítését,

try { await page.waitForSelector(' '); } catch (e) { if (e instanceof puppeteer.errors.TimeoutError) { // Írjon kódot a hiba kezelésére. } } 

FileChooser osztály

A fájlválasztó osztály objektum a metódus segítségével jön létre page.waitForFileChooser. A FileChooser osztály a fájlokkal való interakcióra szolgál. A FileChooser osztály gyakran használt metódusait a következő részben ismertetjük.

FileChooser osztály – Módszerek:

Az alábbi módszerek állnak rendelkezésre a FileChooser osztályhoz -

  • fileChooser.accept(fájl_útvonallal) – Ezzel a módszerrel bármilyen fájl feltölthető (amelyhez az elérési út argumentumként van megadva).
  • fileChooser.cancel() – Ez a módszer a fájlfeltöltési folyamat megszakítására szolgál.
  • fileChooser.isMultiple() – Ez a módszer ellenőrzi, hogy a fileChooser engedélyezi-e több érték kiválasztását. Logikai kifejezést ad vissza (igaz vagy hamis).

Példa a FileChooser osztályra -

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

Következtetés:

Ebben a „Puppeteer osztály” oktatóanyagban elmagyaráztuk a Puppeteer osztályt, a Target osztályt, a MessageConsole osztályt és a TimeoutError osztályt, amelyek tartalmazzák a fontos névtereket (ha vannak), eseményeket (ha vannak), és módszereket, amelyeket gyakran használnak a Puppeteer webkaparási technikáiban. példákkal. A következő cikkben elmagyarázzuk a BrowserContext-et, a Browser-t és a BrowserContext osztályt.

Írj hozzászólást

E-mail címed nem kerül nyilvánosságra. Kötelező kitölteni *

Lapozzon a lap tetejére