አሻንጉሊት ጫን - የአሻንጉሊት ማጠናከሪያ ትምህርት 4 እና 5 በጣም ጥሩ የመማሪያ መመሪያ

Puppeteer ለድር መቧጠጫ መሳሪያዎች የሚያገለግል ክፍት ምንጭ ኖድ js ቤተ-መጽሐፍት ነው። እንዲሁም በድር መተግበሪያዎች ውስጥ የሙከራ አውቶማቲክን ለመስራት ሊያገለግል ይችላል። በአሁኑ ጊዜ፣ በአውቶሜትድ የሶፍትዌር መሞከሪያ ቦታ ላይ የፑፔተር አጠቃቀም በፍጥነት እየጨመረ ነው። የአሻንጉሊት ትምህርትን ለመረዳት የትእዛዝ መስመር፣ ጃቫስክሪፕት እና HTML DOM መዋቅር መሰረታዊ እውቀት ያስፈልጋል። ጠቅላላው አጋዥ ስልጠና ከዚህ በታች ባሉት መጣጥፎች ተከፍሏል። 

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

Tosca አጋዥ ትምህርት #1፡ የአሻንጉሊቶች አጠቃላይ እይታ

ቶስካ ማጠናከሪያ ትምህርት #2: የአሻንጉሊት አካባቢ ተለዋዋጮች

ቶስካ ማጠናከሪያ ትምህርት #3: የአሻንጉሊት ድር መቧጨር እና የአሻንጉሊት ሙከራ አውቶሜሽን አጠቃላይ እይታ

ቶስካ ማጠናከሪያ ትምህርት #4: Puppeteer ጫን

ቶስካ ማጠናከሪያ ትምህርት #5: ናሙና የአሻንጉሊት ፕሮጀክት

በዚህ የአሻንጉሊት ማጠናከሪያ ትምህርት ውስጥ፣ እንደ ኖድጄስ ጫን፣ ፕሌይ ኤዲተር ለፑፔተር ወዘተ ካሉ ጥገኞቹ ጋር ፑፕቴርን ለመጫን ስለሚደረገው እርምጃ እንማራለን። እንዲሁም ከተጫነን በኋላ አንድ ናሙና የፑፔተር ፕሮጀክት እንፈጥራለን።

Puppeteer ጫን

የአሻንጉሊት ስክሪፕቶችን እድገት ለመጀመር የሚከተሉትን አካላት መጫን እና ማዋቀር አለብን - 

1. NodeJS ን ይጫኑ

2. ጫን አርታዒ

3. የአሻንጉሊት መትከል

NodeJS ን ጫን

NodeJs በተለያዩ መድረኮች ውስጥ የሚሰራ ነጻ ክፍት ምንጭ አገልጋይ አካባቢ ነው። በአገልጋዩ በኩል ጃቫስክሪፕት ይጠቀማል። አሻንጉሊቱ አንድ ዓይነት NodeJS መተግበሪያ ነው። ስለዚህ የአሻንጉሊት ማዋቀር የመጀመሪያው እርምጃ NodeJS ፍሬም መጫን ነው። የ NodeJS ማዕቀፍ ለብዙ የመሳሪያ ስርዓቶች ዊንዶውስ, ኡቡንቱ, ማክኦኤስ, ወዘተ ጨምሮ ይገኛል. በዚህ አውድ ውስጥ ለ 64 ቢት የዊንዶውስ ኦፐሬቲንግ ሲስተም ስሪት እንሰራለን. NodeJS ን ለመጫን ደረጃዎች-

ደረጃ 1# NodeJS አውርድ፡- ጠቅ ያድርጉ እዚህ የ NodeJS ማውረጃ አገናኝን ለማሰስ። እዚህ 64 ቢት ዊንዶውስ ጫኝ (.mts) እናወርዳለን። 

የአሻንጉሊት ትምህርት - NodeJs ን ይጫኑ
የአሻንጉሊት ትምህርት - NodeJs ን ይጫኑ

ደረጃ 2# NodeJS ን ጫን ማውረዱ ከጨረስን በኋላ ጫኝ(.msi) ፋይል ላይ ሁለቴ ጠቅ በማድረግ NodeJsን መጫን አለብን። በመጫን ጊዜ እንደ መመሪያው መቀጠል አለብን.

ደረጃ 3# NodeJS ያረጋግጡ፡ መጫኑ ከተጠናቀቀ በኋላ የትእዛዝ መጠየቂያውን መክፈት እና ትዕዛዙን እንደ "node" ማስገባት አለብን. ከታች ያሉት ዝርዝሮች እየታዩ ከሆነ, መጫኑ ትክክል ነው. በአጋጣሚ, ማንኛውም ስህተት ከታየ, መጫኑ ትክክል አይደለም ማለት ነው.

የአሻንጉሊት ትምህርት - NodeJs ያረጋግጡ
የአሻንጉሊት ትምህርት - NodeJs ያረጋግጡ

ለአሻንጉሊት አርታዒን ጫን፡-

የአሻንጉሊት ኮዶችን ለመጻፍ፣ ለማሰባሰብ እና ለማስኬድ የሚረዳን መሳሪያ እንጂ አርታዒ አይደለም። ቪዥዋል ስቱዲዮ ኮድ፣ ኖት ፓድ ++፣ ኤዲት ፕላስ፣ ወዘተ የሚያጠቃልሉ እንደ ጃቫ ኮድ አርታኢ ሆነው የሚያገለግሉ ብዙ መሳሪያዎች አሉ።እኛ እንኳን በነባሪ የ“ኖት ፓድ” መተግበሪያ ውስጥ የአሻንጉሊት ኮድ መፃፍ እንችላለን። በዚህ "አሻንጉሊት ጫን" ውስጥ ማጠናከሪያ ትምህርትቪኤስኮድ ከ NodeJS መተግበሪያ ጋር በቀላሉ የሚስማማ ስለሆነ እንጠቀማለን። VSCode በነጻ የሚገኝ የእይታ ስቱዲዮ አንድ አካል እንጂ ሌላ አይደለም። VScode ን ለመጫን ደረጃዎች- 

ደረጃ 1# የወረደ ቪኤስኮድ፡- ጠቅ ያድርጉ እዚህ የማውረጃ አገናኙን ለመክፈት እና የፍላጎት ስሪት የ VSCode Installer እንደ ስርዓተ ክወናው ለማውረድ.

ደረጃ 2 # VSCcode ጫን ልክ እንደሌሎች ሶፍትዌሮች በስርዓቱ ውስጥ ካለው የመጫኛ ፋይል VSCcode ን ይጫኑ። በመጫን ጊዜ፣ በሚመከር ቅንብር ብቻ ይቀጥሉ።

ደረጃ 2 # VScode ያረጋግጡ፡- መጫኑ ከተጠናቀቀ በኋላ በትክክል መጫኑን ለማረጋገጥ መተግበሪያውን ይክፈቱ።

የአሻንጉሊት ትምህርት - ለአሻንጉሊት አዘጋጅ
የአሻንጉሊት ትምህርት - ለአሻንጉሊት አዘጋጅ

የአሻንጉሊት ፓኬጆችን ጫን

ከአሻንጉሊት ስሪት v1.7.0 ጀምሮ እያንዳንዱ ልቀት ከሁለት ጥቅሎች በታች ይይዛል -

  • puppeteer-ኮር ጥቅል
  • የአሻንጉሊት ጥቅል

የኮንሶል ትዕዛዞችን በመጠቀም የሁለቱም የፑፔፔር ስሪቶች ሊጫኑ ይችላሉ. Puppeteer ን ለመጫን ትዕዛዞች- 

Puppeteer-core ጥቅልን ጫን፡- በጃቫ ውስጥ የተገነባው የመስቀለኛ JS ቤተ-መጽሐፍት ስብስብ ነው። በዴቭቶል ፕሮቶኮል ላይ የመስራት ችሎታ አለው። የአሻንጉሊት-ኮር ጥቅልን በሚጭንበት ጊዜ Chromium አሳሹ እየወረደ አይደለም። የአሻንጉሊት ፕሮግራማዊ በይነገጽ የአሻንጉሊት-ኮር ቤተ-መጽሐፍትን ሙሉ በሙሉ ያንቀሳቅሰዋል። ሌላው አስፈላጊ ገደብ የPUPPETEER_* አካባቢ ተለዋዋጮችን በመቀየር የአሻንጉሊት-ኮር ባህሪያቶቹ ሊለወጡ አይችሉም። 

የመጫኛ ትዕዛዝ npm ጫን puppeteer-core

ማስታወሻ: የአሻንጉሊት-ኮር ጥቅሉን ከመጫንዎ በፊት የኖድ JS መሳሪያ መጫን ያስፈልጋል.

የአሻንጉሊት ምርት ጥቅል ጫን ፑፔተር የChrome አሳሾችን ለመቆጣጠር በGoogle የተሰራ ሙሉ ምርት ነው። ሙሉው የአሻንጉሊት ምርት ጥቅል በመሆኑ የቅርብ ጊዜዎቹ የክሮሚየም አሳሽ ስሪቶች በመጫን ጊዜ እየወረዱ ነው። ከዚያ በኋላ መጫኑ በአሻንጉሊት-ኮር ይንቀሳቀሳል. የPUPPETEER_* አካባቢ ተለዋዋጮችን በመቀየር የአሻንጉሊት ባህሪያትን ማበጀት ይቻላል። 

የመጫኛ ትዕዛዝ npm ጫን አሻንጉሊት

በዚህ "የአሻንጉሊት ጫን" መማሪያ ውስጥ በእነዚህ ሁለት ስሪቶች መካከል ብዙ ልዩነቶች ስለሌለ በፑፕፔር ፓኬጅ መጫኛ ላይ እንሰራለን.

ናሙና የአሻንጉሊት ፕሮጀክት

አሻንጉሊቱ ከሁለቱም ጭንቅላት (ራስ-አልባ) እና ጭንቅላት ከሌላቸው chrome አሳሾች ጋር ተኳሃኝ ነው። ጭንቅላት ከሌለው የአሳሽ እንቅስቃሴዎች ከበስተጀርባ ይከናወናሉ ማለትም የአሳሹ ዩአይ ለእኛ አይታይም። በነጠላ እርምጃ ነገሩን (አሳሹን መቆጣጠር) ቀላል እና ቀላል ያደርገዋል። ይህ ማለት ተመሳሳይ ነገር (አሳሾችን መቆጣጠር) በበርካታ ውስብስብ ደረጃዎች ሊከናወን ይችላል.

የአሻንጉሊት ፕሮጀክትን በማዋቀር ሂደት ውስጥ የተካተቱት ደረጃዎች ከዚህ በታች ቀርበዋል- 

ደረጃ 1# ለናሙና አሻንጉሊት ፕሮጀክት የአቃፊ መዋቅር ይፍጠሩ፡ አስቀድሞ በተገለጸው መንገድ "SampleProject" በሚለው ስም የናሙና ስር ማውጫ ይፍጠሩ። ይህ ስርወ ማውጫ እንደ ናሙና የአሻንጉሊት ፕሮጀክት ሆኖ ይሰራል። በመቀጠል የትእዛዝ መጠየቂያውን ከከፈትን በኋላ ወደዚህ ስርወ ማውጫ መሄድ አለብን።

ደረጃ 2 # አሻንጉሊት ጫን ከዚህ በታች ያለውን ትእዛዝ በመጠቀም የፑፔተርን ሙሉ ጥቅል በስር ማውጫ ውስጥ መጫን እንችላለን። ይህ ትእዛዝ በመሠረቱ በ ውስጥ ያሉትን ሁሉንም ክፍት ምንጭ NodeJS ቤተ-መጻሕፍት ያወርዳል የናሙና ፕሮጀክት አቃፊ. በአውታረ መረቡ ፍጥነት ላይ በመመስረት የመጫን ሂደቱ የተወሰነ ጊዜ ይወስዳል. ወደ 350ሜባ የሚጠጋ ውሂብ ያወርዳል። ከተጫነ በኋላ፣ የተለያዩ የአሻንጉሊት ክፍሎችን እና የጥቅል-lock.json ፋይልን የያዘው node_modules ማህደር ወደ ናሙናው Pupeteer project root አቃፊ ይፈጠራል።

የአሻንጉሊት ትምህርት - የመጫኛ ምዝግብ ማስታወሻ
የአሻንጉሊት ትምህርት - የመጫኛ ምዝግብ ማስታወሻ

ደረጃ 3# የናሙና አሻንጉሊት ስክሪፕት ይፍጠሩ አሁን፣ የሚጠራውን የአሻንጉሊት ስክሪፕት ናሙና እንጽፋለን። LambdaGeeks ድር ጣቢያ፣ ከእያንዳንዱ እርምጃ በኋላ የኮንሶል መልዕክቶችን ያሳያል እና ቅጽበታዊ ገጽ እይታውን ያንሱ። በዚህ ምሳሌ፣ ጭንቅላት የሌለው ክሮሚየም-አሳሽ ከበስተጀርባ ይጠራል። የናሙና የአሻንጉሊት ስክሪፕት ይሆናል - 

const puppeteer = ተፈላጊ ('አሻንጉሊት'); // Puppeteer Library puppeteer.launch ({headless:true}) ያካትቱ።ከዚያ (async browser => {const pageNew = browser.newPage ይጠብቁ()፤ // አሳሽ console.logን አስጀምር('Step1 - Open Browser'); / /የማሳያ መልእክት በመጠባበቅ ላይ ያለ ገጽ አዲስ .setViewport({ወርድ፡ 1280፣ ቁመት፡ 800}) ገፅ ይጠባበቃልNew .goto('https://lambdageeks.com/')፤ //LambdaGeeks//LambdaGeeks ክፈት ቅጽበታዊ ገጽ እይታ ይጠብቃልNew .screenshot({ዱካ) : 'screenshot_lambda.png' }); console.log ('Step2 - LambdaGeeks ን ያስሱ እና ቅጽበታዊ ገጽ እይታን ያንሱ')፤ አሳሽ ይጠብቁ. ዝጋ () ; console.log ('Step3 - አሳሽ ተዘግቷል');});

ይህ ኮድ የፋይል ስም ባለው የናሙና አሻንጉሊት ፕሮጀክት ስር ማውጫ ውስጥ መቀመጥ አለበት። ናሙና_ስክሪፕት.js. የአሻንጉሊት-ኮር ከሆነ፣ በስክሪፕቱ መጀመሪያ ላይ ከ'አሻንጉሊት' ይልቅ 'አሻንጉሊት-ኮር'ን ማካተት አለብን። ለዋና አሳሽ፣ ኮድ መተካት አለብን "{headless:true}” with “{headless:false}”.

ደረጃ 4# የናሙና አሻንጉሊት ስክሪፕት ያስፈጽም የናሙና ስክሪፕት ከዚህ በታች ያለውን ትዕዛዝ በመጠቀም ከትዕዛዝ መጠየቂያው ሊተገበር ይችላል-

npm node sample_script.js

ከግድያው በኋላ፣ የስክሪኑ ፎቶግራፍ ይነሳና በስር ማውጫው ውስጥ እንደ "'screenshot_lambda.png" ይከማቻል።

የአሻንጉሊት ትምህርት - የናሙና የአሻንጉሊት ፕሮጀክት
የአሻንጉሊት ትምህርት - የናሙና የአሻንጉሊት ፕሮጀክት

አሁን በአማዞን ድር መተግበሪያ ላይ ሌላ የአሻንጉሊት ስክሪፕት እናሳያለን። ይህ ስክሪፕት ከዚህ በታች ያሉትን ደረጃዎች ከእያንዳንዱ ደረጃዎች ማረጋገጫዎች ጋር ያከናውናል-

  • የአማዞን መተግበሪያን ጥራ።
  • አስቀድሞ የተገለጸ መጽሐፍ ይፈልጉ።
  • የተፈለገውን መጽሐፍ ወደ ጋሪ ያክሉ።
  • ጋሪን ይክፈቱ እና መጽሐፉ በጋሪ ውስጥ የሚገኝ መሆኑን ያረጋግጡ።
  • ስክሪን አንሳ እና አሳሹን ዝጋ።

ከዚህ በታች ባለው ስክሪፕት ብቻ እንሄዳለን። በሚቀጥለው ርዕስ ውስጥ ስለሚከናወኑ የተለያዩ እርምጃዎች በዝርዝር እንማራለን. የናሙና ስክሪፕት ከዚህ በታች ይታያል-

/** * @ ስም በአማዞን ውስጥ ፈልግ */ const puppeteer = ተፈላጊ ('አሻንጉሊት'); const reportPathDir = 'C: \\ LambdaGeeks \\ puppteer_proj_sample \\ ውፅዓት \\'; const screenshotFile = 'screen1.png'; ይሞክሩ {(async () => {// አሳሽ እና የገጽ ነገር ምሳሌ ይፍጠሩ እና ወደ URL ይሂዱ const browserWeb = wait puppeteer.launch({ headless: false }); const pageWeb = በመጠባበቅ ላይ ያለ አሳሽWeb.newPage() ገጽ ይጠብቃልWeb.setViewport ({ወርድ፡ 1280፣ ቁመት፡ 800})፤ ገጽ ጠብቅWeb.goto('https://www.amazon.in/')፤ //የአማዞን ፍለጋ መስፈርት አስገባ searchBoxAmazon = ገጽ ጠብቅWeb.waitForXPath("//* /input[@id='twotabsearchtextbox']"፣{ የሚታይ፡ እውነት})፤ ከሆነ (searchBoxAmazon === null) {console.log('Amazon screen is not display')፤} ሌላ{ searchBoxAmazon.type("ይጠብቅ የመሞከሪያ መጽሐፍ"); console.log ('የፍለጋ መስፈርት ገብቷል');} // የፍለጋ ቁልፍ ላይ ጠቅ ያድርጉ btnSearchAmazon = ጠብቅ ገጽWeb.waitForXPath("//*/input[@id='nav-search-submit-) button']",{ የሚታይ፡ እውነት})፤ ከሆነ (btnSearchAmazon === null) {console.log('የፍለጋ ቁልፍ አይታይም'))፤ ሌላ{btnSearchAmazon.ጠቅ ያድርጉ() ይጠብቁ፤ console.log('ተጫኑ) በፍለጋ ቁልፍ ላይ'))) // የተወሰነ የፍለጋ ውጤት ላይ ጠቅ ያድርጉ myBookAmazon = ይጠብቁን ገጽWeb.waitForXPath ("//*[(ጽሑፍ()፣ 'የሴሊኒየም መሞከሪያ መሳሪያዎች የማብሰያ መጽሀፍ ሁለተኛ እትም')]"፣{ የሚታይ፡ እውነት }) ከሆነ (myBookAmazon === null) {console.log('መጽሐፍ አይገኝም') ; } ሌላ{ myBookAmazon.click () ይጠብቁ; console.log ('ለማዘዝ የተወሰነ መጽሐፍ ላይ ጠቅ ያድርጉ'); } // አዲሱ ትር ከተከፈተ const pageTarget = pageWeb.target(); const newTarget = አሳሽ ይጠብቁWeb.waitForTarget(ዒላማ => target.opener() === page Target); // አዲሱን ገጽ ነገር ያግኙ፡ const page2 = ጠብቅ newTarget.page(); ይጠብቁ page2.setViewport ({ወርድ: 1280, ቁመት: 800}); // ወደ ጋሪ አክል እንጨምራለን addToCartAmazon = ጠብቅ page2.waitForXPath("//*/input[@id='add-to-cart-button']",{ የሚታይ፡ እውነት}); ከሆነ (addToCartAmazon === null) {console.log ('ወደ ጋሪ አክል አዝራር አይገኝም'); }ሌላ{console.log('ወደ ጋሪ አክል የሚለውን ጠቅ ያድርጉ'); addToCartAmazon ጠብቅ.ክሊክ(); } // አረጋግጥ ወደ ጋሪው ሂደት እንዲጨምር ይፍቀዱለትMessageAmazon = ይጠብቁ ገጽ2.waitForXPath("//*[(ጽሑፍ(ጽሑፍ() ወደ ጋሪ ተጨምሯል')]"፣{ የሚታይ፡ እውነት}); ከሆነ (successMessageAmazon === null) {console.log ('ንጥሉ ወደ ጋሪ አልተጨመረም'); } ሌላ{console.log('ንጥሉ በተሳካ ሁኔታ ወደ ጋሪ ታክሏል'); } // የካርት ቁጥር ይቅረጹ cartCountAmazon = ጠብቅ page2.waitForXPath("//*/span[@id='nav-cart-count']",{ የሚታይ፡ እውነት}); let valueCount = ቆይ page2.ገምገም (el => el.textContent, cartCountAmazon) console.log ('የካርት ብዛት፡ ' + valueCount); cartCountAmazon.focus (); ይጠብቁ page2.screenshot ({ዱካ: screenshotFile}); ገጽ ይጠብቁWeb.waitForTimeout(3000); ገጽ 2 ይጠብቁ. ዝጋ (); ገጽ ይጠብቁWeb.close (); browserWeb.close () ይጠብቁ; })()} ያዝ (ሠ) {console.log(e)}

ማስታወሻ: በሚቀጥሉት ጽሁፎች ውስጥ ስክሪፕቶችን ለመጻፍ ዝርዝር ደረጃዎችን እናብራራለን.

ማጠቃለያ:

በዚህ የመግቢያ መጣጥፍ ውስጥ ስለ "አሻንጉሊት ጫን" ከ "የአሻንጉሊት መማሪያ" , የተለያዩ የአሻንጉሊት ፓኬጆችን ከባዶ ለመጫን ስለ ዝርዝር ደረጃዎች ገልፀናል. የአሻንጉሊት ማዋቀር እንደ NodeJs ን መጫን፣ VSCode ን መጫን፣ Puppeteer ን መጫን፣ የአሻንጉሊት ናሙና ፕሮጄክት መፍጠር እና ማስፈጸምን የመሳሰሉ የተለያዩ አካላትን ያካትታል። በሚቀጥለው የአሻንጉሊት መማሪያ ውስጥ, ፑፔተርን እንደ ድር መቧጠጫ መሳሪያ ለመጠቀም ዝርዝር እርምጃዎችን እናብራራለን. እባክዎን ጠቅ ያድርጉ  እዚህ ከማጣቀሻ ፖርታል ለማንበብ.

አስተያየት ውጣ

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

ወደ ላይ ሸብልል