Puppeteer Class - Isang Mahusay na Gabay sa Pag-aaral ng Puppeteer Tutorial 7

Klase ng Puppeteer

Ang puppeteer na isang open-source node js library, ay maaaring magamit bilang isang tool sa pag-scrap ng web. Ang pag-unawa sa utos ng utos, Javascript, at istraktura ng HTML DOM ay dapat na mahusay upang magsimula sa tutorial na ito ng puppeteer. Ang serye ng tutorial na Puppeteer ay ipinamamahagi sa ibaba ng seksyon ng Sub upang makakuha ng mahusay na paghawak sa Puppeteer. 

Tutorial ng Puppeteer

Tosca Tutorial # 1: Pangkalahatang-ideya ng Puppeteer

Tosca Tutorial # 2: Mga variable ng Kapaligiran ng Puppeteer

Tosca Tutorial # 3: Puppeteer Web Scraping at Pangkalahatang-ideya ng Puppeteer Test Pangkalahatang-ideya

Tosca Tutorial # 4: I-install ang Puppeteer

Tosca Tutorial # 5: Sample na Puppeteer Project

Tosca Tutorial # 6: Pagsubok sa Puppeteer Automation

Tosca Tutorial # 7: Klase ng Puppeteer

Tosca Tutorial # 8: Klase ng Browser ng Puppeteer

Tosca Tutorial # 9: Klase ng Pahina ng Puppeteer

Sa tutorial na "Puppeteer Class" na ito, ipaliwanag namin ang mga klase sa ibaba na may kasamang mga mahahalagang namespace (kung mayroon man), mga kaganapan (kung mayroon man), at mga pamamaraan na madalas na ginagamit sa mga diskarte sa pag-scrap ng web ng Puppeteer. 

Ipapaliwanag namin ang mahahalagang bahagi ng mga halimbawa sa buong artikulong ito.  

Klase ng Puppeteer

Konseptwal, ang klase ay isang blueprint ng isang bagay na tumutukoy sa isang hanay ng mga tagubilin (variable at pamamaraan). Dito, tinukoy ang klase ng Puppeteer gamit ang javascript upang maisagawa ang iba't ibang mga pagkilos upang maisagawa ang web scraping. Suriin natin ang halimbawa sa ibaba, ang module ng klase ng Puppeteer ay ginamit upang ilunsad ang isang halimbawa ng web sa Chromium.

const puppeteer = require('puppeteer');
(async () => {
  const browserChrome = await puppeteer.launch();
  const pageChrome = await browserChrome.newPage();
  await pageChrome.goto('https://www.google.com');
  // We can write steps here
  await browserChrome.close();
})();

Nagbibigay din ang klase ng puppeteer ng maraming Mga Namespace at Paraan, na sumusuporta sa proseso ng pag-scrap ng web. Ang mga madalas na ginagamit na Namespaces at Paraan ay ipinapaliwanag sa mga susunod na seksyon.

Puppeteer Class - Mga Namespace:

Ito ay isang lalagyan na tumutukoy sa maraming mga pagkakakilanlan, pamamaraan, variable, atbp., Sa javascript. Ito ay isang paraan upang maipangkat ang code sa isang lohikal at organisadong paraan. Sa ibaba ang mga namespace ay ibinibigay ng klase ng Puppeteer.

puppeteer.devices: Nagbabalik ito ng isang listahan ng mga aparato na maaaring magamit ng pamamaraan page.emulate (options) upang maisagawa ang pag-scrape sa mga mobile device. 

Halimbawa - Buksan at isara ang web page ng google sa isang mobile device -

const puppeteer = require('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'); 
  await browserChrome.close();
})();

puppeteer.errors: Habang nagtatrabaho kasama ang iba't ibang mga pamamaraan ng puppeteer, mayroong isang pagkakataon ng mga pagbubukod. Karamihan, kung ang mga pamamaraan ay hindi matupad ang mga kahilingan, nagtatapon ito ng mga pagkakamali. Mayroong iba't ibang mga klase na tinukoy upang mahawakan ang mga error sa pamamagitan ng namespace na 'puppeteer.errors'.

Halimbawa - para sa pahina ng pamamaraan.waitForSelector, kung ang elemento ng web ay hindi lilitaw sa loob ng tinukoy na oras, lilitaw ang error sa pag-timeout. Mangyaring dumaan sa halimbawa sa ibaba, na nagpapakita ng isang diskarte upang mahawakan ang pag-timeout,

try {
  await page.waitForSelector('<web-element>');
} catch (err) {
  if (err instanceof puppeteer.errors.TimeoutError) {
    // Write code to handle the timeout error.
  }
} 

puppeteer.networkMga Kundisyon: Nagbabalik ito ng isang listahan ng mga kundisyon sa network na maaaring magamit sa pahina ng pamamaraan.emulateNetworkConditions (networkConditions). Ang kumpletong listahan ng mga kundisyon sa network ay tinukoy dito.

Halimbawa - Sa pamamagitan ng sample ng code na ito, bubuksan namin ang web page ng google gamit ang isang paunang natukoy na kundisyon ng network.

const puppeteer = require('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');
  await browserChrome.close();
})();

puppeteer.produkto: Ibinabalik nito ang pangalan ng browser, na gagamitin para sa pag-aautomat (Chrome o Firefox). Ang produkto para sa browser ay itinatakda ng alinman sa variable ng kapaligiran PUPPETEER_PRODUCT o ang pagpipilian ng produkto na magagamit sa puppeteer class na pamamaraan puppeteer.launch ([options]). Ang default na halaga ay Chrome.

Sanggunian: I-click ang dito upang matuto nang higit pa sa mga namespace ng Class ng Puppeteer.

Klase ng Puppeteer - Mga Paraan:

Naglalaman ang mga pamamaraan ng mga pahayag upang maisagawa ang tukoy na aksyon. Ang klase ng puppeteer ay may mga pamamaraan sa ibaba,

puppeteer.clearCustomQueryHandlers () - Nilinaw nito ang lahat ng mga nakarehistrong handler.

puppeteer.connect (mga pagpipilian) - Ginagamit ang pamamaraang ito upang ikonekta ang puppeteer sa anumang umiiral na mga browser. Nagbabalik ito ng isang bagay ng pangako ng uri na nagsasaad ng katayuan ng asynchronous na proseso na ito. Halimbawa - Sa halimbawa sa ibaba, idiskonekta ng puppeteer mula sa kasalukuyang browser at kumonekta muli,

const puppeteer = require('puppeteer');
(async () => {
  const browserChrome = await puppeteer.launch();
  // Copy the endpoint reference which will be reconnected later
  const endpoint = browserChrome.wsEndpoint();
  // Disconnect puppeteer
  browserChrome.disconnect();
  // Use the endpoint to re-connect
  const browserChrome2 = await puppeteer.connect({endpoint});
  // Close second instance of Chromium
  await browserChrome2.close();
})();

puppeteer.createBrowserFetcher ([mga pagpipilian]) - Lumilikha ito ng isang object fetcher ng browser upang mag-download at pamahalaan ang iba't ibang mga bersyon ng mga browser (Chrome at Firefox).

const browserFetcher = puppeteer.createBrowserFetcher ();

puppeteer.customQueryHandlerNames () - Nagbabalik ito ng isang hanay ng lahat ng nakarehistrong pasadyang mga handler ng query.

puppeteer.defaultArgs ([mga pagpipilian]) - Ibinabalik nito ang mga default na pagpipilian ng pagsasaayos ng chrome browser bilang isang array habang inilulunsad. Gayundin, maitatakda namin ang maaaring mai-configure na mga pagpipilian ng isang browser gamit ang opsyonal na opsyon na argument.

const args = puppeteer.defaultArgs ();

puppeteer.executablePath () - Ibinabalik nito ang landas na inaasahan ng puppeteer para sa naka-bundle na halimbawa ng browser. Ang landas na hindi magagamit sa pag-download ay nilaktawan ng variable ng kapaligiran PUPPETEER_SKIP_DOWNLOAD. Gayundin, maaari naming gamitin ang mga variable ng kapaligiran na PUPPETEER_EXECUTABLE_PATH at PUPPETEER_CHROMIUM_REVISION upang mabago ang landas.

const args = puppeteer.executablePath ();

puppeteer.launch ([options]) - Ang pamamaraang klase ng puppeteer class na ito ay ginagamit upang ilunsad ang web browser. Sa pamamagitan ng opsyonal na argument, maaari naming ipasa ang iba't ibang mga pagsasaayos ng browser, tulad ng produkto (pangalan ng browser), walang ulo, mga devtool, atbp. Ang pamamaraang ito ay nagbabalik ng pangako na bagay, na humahawak sa sanggunian ng inilunsad na browser.

Const browser = naghihintay sa puppeteer.launch ();

puppeteer.registerCustomQueryHandler (pangalan, queryHandler) - Ginagamit ito upang magrehistro ng isang pasadyang handler ng query. Narito ang "pangalan" ay nagbibigay ng pangalan ng humahawak ng query, at tinutukoy ng "queryHandler" ang aktwal na handler ng pasadyang query.

puppeteer.unregisterCustomQueryHandler (pangalan) - Ginagamit ito upang i-rehistro ang anumang pasadyang tagapamahala ng query.

Sanggunian: I-click ang dito upang mabasa nang higit pa sa mga pamamaraan ng Puppeteer Class.

Target na Klase

Ang target na klase ay nagbibigay ng mga pamamaraan upang gumana sa mga target. Ang mga pinaka-madalas na ginagamit na pamamaraan na magagamit na may target na klase ay ipinaliwanag sa susunod na seksyon.

Target na Klase - Mga Paraan:

Ang mga pamamaraan sa ibaba ay magagamit sa mga target na klase -

  • Target.browser () - Ibinabalik nito ang object ng browser na na-link sa target.
  • Target.browserContext () - Nagbabalik ito ng isang object ng uri ng browserContext na naka-link sa target.
  • Target.createCDPSession () - Lumilikha ito at nagbabalik ng sesyon ng devtool protocol ng chrome, na nakakabit sa target.
  • Target.opener () - Ibinabalik nito ang target na magbubukas sa target na ito. Talaga, ang pamamaraang ito ay ginagamit upang makuha ang target ng magulang. Bumabalik itong null para sa target na nangungunang antas.
  • Target.page () - Ibinabalik nito ang object ng pahina ng target. Kung ang uri ng target ay hindi isang pahina, magbabalik ito ng isang null na halaga.
  • Target.type () - Ginagamit ito upang makuha ang uri ng target. Ang halaga ng pagbabalik ay maaaring alinman sa mga pagpipilian - 'background_page', 'pahina', 'shared_worker', 'service_worker', 'browser' o 'iba pa'.
  • Target.url () - Ibinabalik nito ang url ng target.
  • Target.worker () - Ibinabalik nito ang object ng webworker. Ang halaga ng pagbabalik ay walang bisa kung ang target ay hindi 'service_worker' o 'shared_worker'.

Sanggunian: I-click ang dito upang mabasa ang higit pa sa mga pamamaraan ng Target na klase.

Klase ng ConsoleMessage

Ang mga bagay sa klase ng ConsoleMessage ay naipadala ng pahina sa pamamagitan ng kaganapan ng console. Ang mga madalas na ginagamit na pamamaraan ng klase ng consoleMessage ay ipinapaliwanag sa susunod na seksyon.

Class ng ConsoleMessage - Mga Paraan:

Ang mga pamamaraan sa ibaba ay magagamit sa klase ng ConsoleMessage -

  • consoleMessage.args () - Nagbabalik ito ng isang hanay ng JSHandler object. Pinipigilan ng JSHandler ang naka-link na object ng JS mula sa pagkolekta ng basura hanggang sa itapon ang hawakan. Awtomatiko itong nawasak kapag nawasak ang konteksto ng magulang browser.
  • consoleMessage.location () - Nagbabalik ito ng isang bagay ng mapagkukunan, na kasama ang mga parameter sa ibaba.
  • url - Nagsasaad ito ng URL ng kilalang mapagkukunan. Kung hindi alam, mananatili ito isang hindi natukoy halaga.
  • LineNumber - Ito ang 0-based na numero ng linya na magagamit sa mapagkukunan. Kung hindi magagamit, mananatili ito isang hindi natukoy halaga.
  • columNumber - Ito ang 0-based na numero ng haligi na magagamit sa mapagkukunan. Kung hindi magagamit, mananatili ito isang hindi natukoy halaga.
  • consoleMessage.stackTrace () - Nagbabalik ito ng isang listahan ng mga bagay (ang bawat bagay ay tumutukoy sa isang mapagkukunan) na kasama ang mga parameter sa ibaba.
  • url - Nagsasaad ito ng URL ng kilalang mapagkukunan. Kung hindi alam, mananatili ito isang hindi natukoy halaga.
  • LineNumber - Ito ang 0-based na numero ng linya na magagamit sa mapagkukunan. Kung hindi magagamit, mananatili ito isang hindi natukoy halaga.
  • columNumber - Ito ang 0-based na numero ng haligi na magagamit sa mapagkukunan. Kung hindi magagamit, mananatili ito isang hindi natukoy halaga.
  • consoleMessage.text () - Ibinabalik nito ang teksto ng console.
  •  consoleMessage.type () - Ibinabalik nito ang string bilang uri ng mensahe ng console. Ang uri ay maaaring alinman sa mga halaga - mag-log, mag-debug, impormasyon, error, babala, dir, dirxml, talahanayan, bakas, malinaw, startGroup, startGroupCollapsed, endGroup, igiit, profile, profileEnd, count, timeEnd.

Sanggunian: I-click ang dito upang matuto nang higit pa sa mga pamamaraan ng klase ng consoleMessage.

Klase ng TimeoutError

Habang nagtatrabaho kasama ang iba't ibang mga tuta, mayroong isang pagkakataon ng mga pagbubukod. Karamihan, kung ang mga pamamaraan ay hindi matupad ang mga kahilingan, nagtatapon ito ng mga pagkakamali. Ginagamit ang klase ng TimeoutError upang hawakan ang ganitong uri ng pagbubukod.

Halimbawa ng TimeoutError Class - para sa pahina ng pamamaraan.waitForSelector, kung ang elemento ng web ay hindi lilitaw sa loob ng tinukoy na oras, lilitaw ang error sa pag-timeout. Mangyaring dumaan sa halimbawa sa ibaba, na nagpapakita ng isang diskarte upang mahawakan ang pag-timeout,

try {
  await page.waitForSelector('<element>');
} catch (e) {
  if (e instanceof puppeteer.errors.TimeoutError) {
    // Write code to handle the error.
  }
} 

Klase ng FileChooser

Ang object ng file chooser class ay nilikha gamit ang pamamaraan pahina.waitForFileChooser. Ang klase ng FileChooser ay ginagamit upang makipag-ugnay sa mga file. Ang mga madalas na ginagamit na pamamaraan ng klase ng FileChooser ay ipinaliwanag sa susunod na seksyon.

ClassChooser Class - Mga Paraan:

Ang mga pamamaraan sa ibaba ay magagamit para sa klase ng FileChooser -

  • fileChooser.accept (file_with_path) - Ginagamit ang pamamaraang ito upang mag-upload ng anumang file (kung aling landas ang ibinibigay bilang isang pagtatalo).
  • fileChooser.cancel () - Ginagamit ang pamamaraang ito upang kanselahin ang proseso ng pag-upload ng file.
  • fileChooser.isMultiple () - Sinusuri ng pamamaraang ito kung pinapayagan ng fileChooser na pumili ng maraming mga halaga. Nagbabalik ito ng isang boolean expression (totoo o hindi).

Isang halimbawa ng klase ng FileChooser -

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

Paghihinuha:

Sa tutorial na "Puppeteer Class" na ito, ipinaliwanag namin ang klase ng Puppeteer, Target na klase, klase ng MessageConsole at klase ng TimeoutError na kasama ang mahahalagang mga namespace (kung mayroon man), mga kaganapan (kung mayroon man), at mga pamamaraan na madalas na ginagamit sa mga diskarte sa pag-scrap ng web ng Puppeteer may mga halimbawa. Sa susunod na artikulo, ipaliwanag namin ang BrowserContext, Browser, at BrowserContext Class.

Tungkol kay K Mondal

Puppeteer Class - Isang Mahusay na Gabay sa Pag-aaral ng Puppeteer Tutorial 7Kumusta, ako si K. Mondal, naiugnay ako sa isang nangungunang samahan. Mayroon akong 12+ taon na karanasan sa pagtatrabaho sa mga domain hal, pag-unlad ng application, pagsubok sa automation, IT Consultant. Lubhang interesado akong matuto ng iba't ibang mga teknolohiya. Narito ako upang matupad ang aking hangarin at kasalukuyang nagbibigay ng kontribusyon bilang isang May-akda at Developer ng Website kapwa sa LambdaGeeks.
Kumonekta sa LinkedIn- https://www.linkedin.com/in/kumaresh-mondal/

Mag-iwan ng komento

Ang iyong email address ay hindi ilalathala. Ang mga kailangang field ay may markang *

en English
X