የአሻንጉሊት ክፍል ታላቅ የመማሪያ መመሪያ (መማሪያ 7)

Puppeteer ክፍት ምንጭ መስቀለኛ መንገድ js ላይብረሪ፣ እንደ ድር መቧጠጫ መሳሪያ ሊያገለግል ይችላል። የትእዛዝ መስመርን፣ ጃቫስክሪፕትን እና HTML DOM መዋቅርን መረዳት በዚህ የአሻንጉሊት ትምህርት ለመጀመር ጥሩ መሆን አለበት። በአሻንጉሊት ላይ በጥሩ ሁኔታ ለመያዝ ተከታታይ የአሻንጉሊት መማሪያ ከዚህ በታች ባለው ንዑስ ክፍል ተሰራጭቷል። 

የአሻንጉሊት ትምህርት

ቡችላ አጋዥ ስልጠና #1፡ የአሻንጉሊቶች አጠቃላይ እይታ

የአሻንጉሊት ትምህርት ቁጥር 2፡ የአሻንጉሊት አካባቢ ተለዋዋጮች

ቡችላ አጋዥ ስልጠና #3፡ የአሻንጉሊት ድር መቧጨር እና የአሻንጉሊት ሙከራ አውቶሜሽን አጠቃላይ እይታ

ቡችላ አጋዥ ስልጠና #4፡ Puppeteer ጫን

ቡችላ አጋዥ ስልጠና #5፡ ናሙና የአሻንጉሊት ፕሮጀክት

ቡችላ አጋዥ ስልጠና #6፡ የአሻንጉሊት አውቶሜሽን ሙከራ

ቡችላ አጋዥ ስልጠና #7፡ የአሻንጉሊት ክፍል

ቡችላ አጋዥ ስልጠና #8፡ የአሻንጉሊት አሳሽ ክፍል

ቡችላ አጋዥ ትምህርት #9፡ የአሻንጉሊት ገፅ ክፍል

በዚህ "የአሻንጉሊት ክፍል" አጋዥ ስልጠና ውስጥ፣ በፑፔተር ድር መቧጨር ቴክኒኮች ውስጥ በተደጋጋሚ ጥቅም ላይ የሚውሉትን አስፈላጊ የስም ቦታዎች (ካለ)፣ ክስተቶች (ካለ) እና ዘዴዎችን የሚያካትቱትን ከታች ያሉትን ክፍሎች እናብራራለን። 

በዚህ ጽሑፍ ውስጥ ጠቃሚ ክፍሎችን በምሳሌዎች እናብራራለን.  

የአሻንጉሊት ክፍል

በፅንሰ-ሀሳብ ፣ ክፍሉ የአንድ ነገር ንድፍ ነው ፣ እሱም የመመሪያዎችን ስብስብ (ተለዋዋጮች እና ዘዴዎች) ይገልጻል። እዚህ፣ የፑፔተር ክፍል በጃቫስክሪፕት በመጠቀም ይገለጻል የተለያዩ ድርጊቶችን የድር ስክሪፕት ለማድረግ። ከታች ያለውን ምሳሌ እንመልከተው፣ የPuppeteer ክፍል ሞጁል የChromium ድር ምሳሌን ለማስጀመር ጥቅም ላይ ውሏል።

const puppeteer = ተፈላጊ ('አሻንጉሊት'); (async () => {const browserChrome = በመጠበቅ ላይ puppeteer.launch()፤ const pageChrome = Browser ጠብቅChrome.newPage() ጠብቅ pageChrome.goto('https://www.google.com')፤ // መፃፍ እንችላለን እዚህ ያሉ እርምጃዎች browserChrome.close ();}) ();

የአሻንጉሊት ክፍል ብዙ የስም ቦታዎችን እና ዘዴዎችን ያቀርባል፣ ይህም የድር መቧጨር ሂደትን ይደግፋል። በተደጋጋሚ ጥቅም ላይ የዋሉ የስም ቦታዎች እና ዘዴዎች በሚቀጥሉት ክፍሎች ተብራርተዋል.

የአሻንጉሊት ክፍል - የስም ቦታዎች

በጃቫስክሪፕት ውስጥ ብዙ መለያዎችን፣ ዘዴዎችን፣ ተለዋዋጮችን፣ ወዘተ የሚገልጽ መያዣ ነው። ኮዱን በሎጂክ እና በተደራጀ መንገድ የመቧደን መንገድ ነው። ከስም ቦታዎች በታች ያሉት በአሻንጉሊት ክፍል ነው።

puppeteer.መሳሪያዎች፡- በስልቱ ጥቅም ላይ ሊውሉ የሚችሉ መሳሪያዎችን ዝርዝር ይመልሳል ገጽ.emulate(አማራጮች) በሞባይል መሳሪያዎች ውስጥ መቧጨርን ለማከናወን. 

ምሳሌ - በተንቀሳቃሽ መሳሪያ ላይ የጉግል ድረ-ገጽን ይክፈቱ እና ይዝጉ -

const puppeteer = ተፈላጊ ('አሻንጉሊት'); const samsung = puppeteer.devices['Samsung J5']; (async () => {const browserChrome = በመጠበቅ ላይ puppeteer.launch()፤ const pageChrome = Browser ጠብቅChrome.newPage()፤ ገጽ ጠብቅChrome.emulate(ሳምሰንግ)፤ ጠብቅ pageChrome.goto('https://www.google.com) አሳሽ ይጠብቁChrome.close();})();

puppeteer.ስህተቶች፡- ከተለያዩ የአሻንጉሊት ዘዴዎች ጋር ሲሰሩ, የማይካተቱበት ዕድል አለ. በአብዛኛው, ዘዴዎቹ ጥያቄዎቹን ማሟላት ካልቻሉ, ስህተቶችን ይጥላል. በ'puppeteer.errors' የስም ቦታ በኩል ስህተቶችን ለማስተናገድ የተገለጹ የተለያዩ ክፍሎች አሉ።

ለምሳሌ - ለዘዴ ገጽ.waitForSelector፣ የድሩ አካል በተወሰነው ጊዜ ውስጥ ካልመጣ፣ ጊዜው ያለፈበት ስህተቱ ይታያል። እባክህ ከዚህ በታች ያለውን ምሳሌ ተመልከት፣ ይህም የጊዜ ማብቂያ ጊዜን ለማስተናገድ አቀራረብን ያሳያል፣

ይሞክሩ { wait page.waitForSelector(' '); } መያዝ (ስህተት) { ከሆነ (ስህተት puppeteer.errors.TimeoutError) {// የማለፊያ ስህተቱን ለመቆጣጠር ኮድ ይጻፉ። } 

puppeteer.network ሁኔታዎች፡- በዘዴ ገጽ ላይ ጥቅም ላይ ሊውሉ የሚችሉ የአውታረ መረብ ሁኔታዎችን ዝርዝር ይመልሳል.emulateNetworkConditions(networkConditions)። የአውታረ መረብ ሁኔታዎች ሙሉ ዝርዝር ይገለጻል። እዚህ.

ምሳሌ - በዚህ ኮድ ናሙና, አስቀድሞ የተገለጸውን የአውታረ መረብ ሁኔታ በመጠቀም የ google ድረ-ገጹን እንከፍተዋለን.

const puppeteer = ተፈላጊ ('አሻንጉሊት'); const net = puppeteer.networkConditions['ፈጣን 3ጂ']; (async () => {const browserChrome = በመጠባበቅ ላይ puppeteer.launch()፤ const pageChrome = አሳሽ ይጠብቁChrome.newPage()፤ ገጽ ጠብቅChrome.emulateNetworkConditions(ኔት);ገጽ ይጠብቁChrome.goto('https://www.google.com) አሳሽ ይጠብቁChrome.close();})();

puppeteer.ምርት: ለአውቶሜሽን (Chrome ወይም Firefox) የሚያገለግል የአሳሹን ስም ይመልሳል። የአሳሹ ምርት የተዘጋጀው በአካባቢ ተለዋዋጭ PUPPETEER_PRODUCT ወይም በአሻንጉሊት ክፍል ዘዴ ውስጥ ባለው የምርት ምርጫ ነው puppeteer.launch([አማራጮች]). ነባሪው ዋጋ Chrome ነው።

ማጣቀሻ: ጠቅ ያድርጉ እዚህ ስለ Puppeteer ክፍል የስም ቦታዎች የበለጠ ለማወቅ።

የአሻንጉሊት ክፍል - ዘዴዎች:

ዘዴዎች የተወሰኑ ድርጊቶችን ለማከናወን መግለጫዎችን ይይዛሉ. የአሻንጉሊት ክፍል የሚከተሉትን ዘዴዎች አሉት ።

puppeteer.clearCustomQueryhandlers() - ሁሉንም የተመዘገቡ ተቆጣጣሪዎች ያጸዳል.

puppeteer.connect(አማራጮች) - ይህ ዘዴ ከማንኛውም ነባር አሳሾች ጋር አሻንጉሊት ለማገናኘት ይጠቅማል። የዚህ ያልተመሳሰለ ሂደት ያለበትን ደረጃ የሚያመለክተውን የተስፋ ቃል አይነት ይመልሳል። ምሳሌ-ከዚህ በታች ባለው ምሳሌ፣ አሻንጉሊት ከአሁኑ አሳሽ ያላቅቁ እና እንደገና ያገናኙት፣

const puppeteer = ተፈላጊ ('አሻንጉሊት'); (async () => {const browserChrome = ይጠብቁ puppeteer.launch(); // በኋላ የሚገናኘውን የመጨረሻ ነጥብ ማጣቀሻ ይቅዱ const endpoint = browserChrome.wsEndpoint(); // የአሻንጉሊት ማሰሻን ያላቅቁChrome.disconnect(); // ይጠቀሙ ለማገናኘት የመጨረሻ ነጥብ const browserChrome2 = ይጠብቁ puppeteer.connect({የመጨረሻ}); // የChromiumን ሁለተኛ ምሳሌ ዝጋ አሳሽ ይጠብቃልChrome2.close();})();

puppeteer.createBrowserFetcher([አማራጮች]) - የተለያዩ የአሳሽ ስሪቶችን (Chrome እና Firefox) ለማውረድ እና ለማስተዳደር የአሳሽ ፈልሳፊ ነገር ይፈጥራል።

const browserFetcher = puppeteer.createBrowserFetcher ();

puppeteer.customQueryHandler ስሞች () - አንድ ይመልሳል ደርድር የሁሉም የተመዘገቡ ብጁ መጠይቅ ተቆጣጣሪዎች።

puppeteer.defaultArgs([አማራጮች]) - በሚጀመርበት ጊዜ ነባሪውን የ chrome browser ውቅር አማራጮችን እንደ ድርድር ይመልሳል። እንዲሁም፣ የአማራጭ መከራከሪያ አማራጭን በመጠቀም የአሳሹን ሊዋቀሩ የሚችሉ አማራጮችን ማዘጋጀት እንችላለን።

const args = puppeteer.defaultArgs ();

puppeteer.executable መንገድ() - ለተጠቀመው አሳሽ ምሳሌ በአሻንጉሊት የሚጠበቀውን መንገድ ይመልሳል። በማውረድ ላይ የማይገኝው መንገድ በPUPPETEER_SKIP_DOWNLOAD አካባቢ ተለዋዋጭ ተዘሏል። እንዲሁም፣ መንገዱን ለመቀየር የአካባቢ ተለዋዋጮችን PUPPETEER_EXECUTABLE_PATH እና PUPPETEER_CHROMIUM_REVISIONን መጠቀም እንችላለን።

const args = puppeteer.executablePath ();

puppeteer.launch ([አማራጮች]) - ይህ የአሻንጉሊት ክፍል ዘዴ የድር አሳሹን ለመጀመር ያገለግላል። በአማራጭ ክርክር በኩል የተለያዩ የአሳሹን አወቃቀሮች እንደ ምርት(የአሳሽ ስም)፣ ጭንቅላት የሌለው፣ ዴቭቶልስ፣ ወዘተ የመሳሰሉትን ማለፍ እንችላለን።

const አሳሽ = ይጠብቁ puppeteer.launch ();

puppeteer.registerCustomQueryHandler (ስም ፣ መጠየቂያ ሃንደርለር) – ብጁ መጠይቅ ተቆጣጣሪን ለመመዝገብ ይጠቅማል። እዚህ “ስም” የመጠይቁ ተቆጣጣሪውን ስም ያቀርባል፣ እና “QueryHandler” ትክክለኛውን የጥያቄ ተቆጣጣሪ ይገልጻል።

puppeteer.unregisterCustomQueryHandler(ስም) - ማንኛውንም ብጁ መጠይቅ ተቆጣጣሪን ለመሰረዝ ይጠቅማል።

ማጣቀሻ: ጠቅ ያድርጉ እዚህ ስለ Puppeteer ክፍል ዘዴዎች የበለጠ ለማንበብ.

የዒላማ ክፍል

የታለመው ክፍል ከዒላማዎች ጋር ለመስራት ዘዴዎችን ይሰጣል. ከዒላማ ክፍል ጋር በብዛት ጥቅም ላይ የዋሉ ዘዴዎች በሚቀጥለው ክፍል ተብራርተዋል.

የዒላማ ክፍል - ዘዴዎች:

የሚከተሉት ዘዴዎች በዒላማዎች ክፍል ውስጥ ይገኛሉ-

  • Target.browser() - ከዒላማው ጋር የተገናኘውን የአሳሹን ነገር ይመልሳል.
  • Target.browser አውድ() - የአሳሹን አይነት ነገር ይመልሳል ከዒላማው ጋር የተገናኘ አውድ።
  • ኢላማ።CDPSession() ፍጠር - ከዒላማው ጋር የተያያዘውን የ chrome devtool ፕሮቶኮል ክፍለ ጊዜን ይፈጥራል እና ይመልሳል።
  • Target.መክፈቻ() - ይህንን ዒላማ የሚከፍተውን ዒላማ ይመልሳል. በመሠረቱ, ይህ ዘዴ የወላጅ ዒላማውን ለማግኘት ይጠቅማል. ለከፍተኛ ደረጃ ኢላማ ባዶ ይመልሳል።
  • ዒላማ.ገጽ () - ይመልሳል የገጽ ነገር የዒላማው. የዒላማው አይነት ገጽ ካልሆነ፣ ባዶ እሴትን ይመልሳል።
  • Target.type() – የዒላማውን ዓይነት ለማግኘት ይጠቅማል። የመመለሻ እሴቱ ከአማራጮቹ ውስጥ አንዱ ሊሆን ይችላል - 'የዳራ_ገጽ' ፣ 'ገጽ' ፣ 'የተጋራ_ሰራተኛ' ፣ 'አገልግሎት_ሰራተኛ' ፣' አሳሽ ወይም 'ሌላ'።
  • Target.url() - የዒላማውን ዩአርኤል ይመልሳል።
  • ኢላማ.ሠራተኛ() - የድር ሰራተኛውን ነገር ይመልሳል። ዒላማው 'አገልግሎት_ሰራተኛ' ወይም 'የተጋራ_ሰራተኛ' ካልሆነ የመመለሻ ዋጋው ዋጋ የለውም።

ማጣቀሻ: ጠቅ ያድርጉ እዚህ በዒላማ ክፍል ዘዴዎች ላይ የበለጠ ለማንበብ.

የኮንሶል መልእክት ክፍል

የConsoleMessage ክፍል ነገሮች በኮንሶል ክስተት በገጽ ይላካሉ። በተደጋጋሚ ጥቅም ላይ የዋለው የኮንሶል መልእክት ክፍል ዘዴዎች በሚቀጥለው ክፍል ተብራርተዋል.

የኮንሶል መልእክት ክፍል - ዘዴዎች

ከታች ያሉት ዘዴዎች በConsoleMessage ክፍል ውስጥ ይገኛሉ -

  • consoleMessage.args() – የJSHandler ነገርን ድርድር ይመልሳል። JSHandler የተገናኘው የJS ነገር መያዣው እስኪወገድ ድረስ ቆሻሻ እንዳይሰበሰብ ይከላከላል። የወላጅ አሳሽ አውድ ሲጠፋ በራስ-ሰር ይጠፋል።
  • consoleMessage.location() - ከዚህ በታች ያሉትን መመዘኛዎች የሚያጠቃልለው የሀብቱን ነገር ይመልሳል።
  • url - የሚታወቀውን ሃብት ዩአርኤል ያመለክታል። ካልታወቀ, ይቀጥላል ያልተገለጸ እሴት.
  • LineNumber - በሀብቱ ውስጥ የሚገኘው ባለ 0-ተኮር መስመር ቁጥር ነው። የማይገኝ ከሆነ ይቆያል ያልተገለጸ እሴት.
  • የአምድ ቁጥር - በንብረቱ ውስጥ የሚገኘው ባለ 0-ተኮር የአምድ ቁጥር ነው። የማይገኝ ከሆነ ይቆያል ያልተገለጸ እሴት.
  • consoleMessage.stackTrace() - የነገሮችን ዝርዝር ይመልሳል (እያንዳንዱ ነገር ሀብትን ያመለክታል) ይህም ከታች መለኪያዎችን ያካትታል።
  • url - የሚታወቀውን ሃብት ዩአርኤል ያመለክታል። ካልታወቀ, ይቀጥላል ያልተገለጸ እሴት.
  • LineNumber - በሀብቱ ውስጥ የሚገኘው ባለ 0-ተኮር መስመር ቁጥር ነው። የማይገኝ ከሆነ ይቆያል ያልተገለጸ እሴት.
  • የአምድ ቁጥር - በንብረቱ ውስጥ የሚገኘው ባለ 0-ተኮር የአምድ ቁጥር ነው። የማይገኝ ከሆነ ይቆያል ያልተገለጸ እሴት.
  • consoleMessage.text() - የኮንሶሉን ጽሑፍ ይመልሳል።
  •  consoleMessage.type() - ሕብረቁምፊውን እንደ የኮንሶል መልእክት አይነት ይመልሳል። ዓይነቱ ከሁለቱም እሴቶች አንዱ ሊሆን ይችላል - ሎግ ፣ ማረም ፣ መረጃ ፣ ስህተት ፣ ማስጠንቀቂያ ፣ dir ፣ dirxml ፣ ጠረጴዛ ፣ ዱካ ፣ ግልጽ ፣ ጅምር ቡድን ፣ ጅምር ቡድን የተሰበሰበ ፣ የመጨረሻ ቡድን ፣ አስርት ፣ መገለጫ ፣ መገለጫ ፣ መጨረሻ ፣ ቆጠራ ፣ የጊዜ ማብቂያ።

ማጣቀሻ: ጠቅ ያድርጉ እዚህ በ consoleMessage ክፍል ዘዴዎች ላይ የበለጠ ለማወቅ።

ጊዜው ያለፈበት ስህተት ክፍል

ከተለያዩ አሻንጉሊቶች ጋር በሚሰሩበት ጊዜ, የማይካተቱበት እድል አለ. በአብዛኛው, ዘዴዎቹ ጥያቄዎቹን ማሟላት ካልቻሉ, ስህተቶችን ይጥላል. የ TimeoutError ክፍል እንደዚህ አይነት ልዩ ሁኔታዎችን ለመቆጣጠር ያገለግላል።

የTimeoutError Class ምሳሌ - ለዘዴ ገጽ.waitForSelector፣የድሩ አካል በተጠቀሰው ጊዜ ውስጥ ካልመጣ፣የጊዜ ማብቂያ ስህተቱ ይታያል። እባክህ ከዚህ በታች ያለውን ምሳሌ ተመልከት፣ ይህም የጊዜ ማብቂያ ጊዜን ለማስተናገድ አቀራረብን ያሳያል፣

ይሞክሩ { wait page.waitForSelector(' '); } መያዝ (ሠ) { ከሆነ (e instanceof puppeteer.errors.TimeoutError) {// ስህተቱን ለመቆጣጠር ኮድ ይጻፉ። } 

FileChooser ክፍል

የፋይል መራጭ ክፍል ነገር የተፈጠረው ዘዴውን በመጠቀም ነው። page.waitForFileChooser. FileChooser ክፍል ከፋይሎች ጋር ለመገናኘት ስራ ላይ ይውላል። በተደጋጋሚ ጥቅም ላይ የዋሉት የፋይል ቾከር ክፍል ዘዴዎች በሚቀጥለው ክፍል ተብራርተዋል.

FileChooser ክፍል – ዘዴዎች፡-

ከታች ያሉት ዘዴዎች ለ FileChooser ክፍል ይገኛሉ -

  • fileChooser.ተቀበል(ፋይል_በመንገድ) - ይህ ዘዴ ማንኛውንም ፋይል ለመስቀል ጥቅም ላይ ይውላል (ለዚህ መንገድ እንደ ክርክር የቀረበ)።
  • fileChooser.cancel() - ይህ ዘዴ የፋይል ጭነት ሂደቱን ለመሰረዝ ይጠቅማል.
  • fileChooser.isMultiple() - ይህ ዘዴ ፋይልChooser ብዙ እሴቶችን እንዲመርጥ ከፈቀደ ያረጋግጣል። የቦሊያን አገላለጽ ይመልሳል (እውነት ወይም ሐሰት)።

የፋይል ምርጫ ክፍል ምሳሌ -

const [fileChooser] = ይጠብቁ Promise.all ([page.waitForFileChooser () ገጽ. ጠቅ ያድርጉ ('# ማያያዝ-አዝራር')])); ይጠብቁ fileChooser.accept (['/puppeteer_proj/data/sample_file.pdf']);

ማጠቃለያ:

በዚህ "የአሻንጉሊት ክፍል" አጋዥ ስልጠና ላይ የአሻንጉሊት ክፍልን፣ የዒላማ ክፍልን፣ የመልእክት ኮንሶል ክፍልን እና TimeoutError ክፍልን አስፈላጊ የሆኑትን የስም ቦታዎች(ካለ)፣ ሁነቶችን (ካለ) እና በአሻንጉሊት ድር መፋቅ ቴክኒኮች ውስጥ በተደጋጋሚ ጥቅም ላይ የሚውሉትን ገለጻ አድርገናል። ምሳሌዎች ጋር. በሚቀጥለው መጣጥፍ፣ BrowserContext፣ Browser እና BrowserContext Classን እናብራራለን።

አስተያየት ውጣ

የእርስዎ ኢሜይል አድራሻ ሊታተም አይችልም. የሚያስፈልጉ መስኮች ምልክት የተደረገባቸው ናቸው, *

ወደ ላይ ሸብልል