कठपुतली वर्ग की महान शिक्षण मार्गदर्शिका (ट्यूटोरियल 7)

कठपुतली जो एक ओपन-सोर्स नोड जेएस लाइब्रेरी है, को वेब स्क्रैपिंग टूल के रूप में इस्तेमाल किया जा सकता है। इस कठपुतली ट्यूटोरियल से शुरू करने के लिए कमांड लाइन, जावास्क्रिप्ट और एचटीएमएल डोम संरचना की समझ अच्छी होनी चाहिए। कठपुतली पर एक अच्छी पकड़ पाने के लिए कठपुतली ट्यूटोरियल की श्रृंखला को उप-अनुभाग के नीचे वितरित किया गया है। 

कठपुतली ट्यूटोरियल

कठपुतली चलानेवाला ट्यूटोरियल # 1: कठपुतली अवलोकन

कठपुतली ट्यूटोरियल #2: कठपुतली पर्यावरण चर

कठपुतली चलानेवाला ट्यूटोरियल #3: Puppeteer वेब स्क्रैपिंग और Puppeteer टेस्ट स्वचालन अवलोकन

कठपुतली चलानेवाला ट्यूटोरियल #4: कठपुतली स्थापित करें

कठपुतली चलानेवाला ट्यूटोरियल #5: नमूना Puppeteer परियोजना

कठपुतली चलानेवाला ट्यूटोरियल #6: कठपुतली स्वचालन परीक्षण

कठपुतली चलानेवाला ट्यूटोरियल # 7: कठपुतली वर्ग

कठपुतली चलानेवाला ट्यूटोरियल # 8: कठपुतली ब्राउज़र क्लास

कठपुतली चलानेवाला ट्यूटोरियल #9: कठपुतली पेज क्लास

इस "कठपुतली वर्ग" ट्यूटोरियल में, हम नीचे दिए गए वर्गों को समझाएंगे जिनमें महत्वपूर्ण नामस्थान (यदि कोई हो), घटनाएँ (यदि कोई हैं), और तरीके जो अक्सर पुप्तेयर वेब स्क्रैपिंग तकनीकों में उपयोग किए जाते हैं। 

हम इस लेख में उदाहरणों के साथ महत्वपूर्ण घटकों की व्याख्या करेंगे।  

कठपुतली वर्ग

वैचारिक रूप से, क्लास एक ऑब्जेक्ट का ब्लूप्रिंट है जो निर्देशों (चर और विधियों) के एक सेट को परिभाषित करता है। यहां, वेब स्क्रैपिंग करने के लिए विभिन्न क्रियाओं को करने के लिए कठपुतली वर्ग को जावास्क्रिप्ट का उपयोग करके परिभाषित किया गया है। आइए नीचे दिए गए उदाहरण की जांच करें, क्रोमियम वेब उदाहरण को लॉन्च करने के लिए प्यूपेटेर क्लास मॉड्यूल का उपयोग किया गया है।

कास्ट कठपुतली = आवश्यकता ('कठपुतली'); (async () => { const browserChrome = प्रतीक्षा कठपुतली.लॉन्च (); const पृष्ठChrome = प्रतीक्षा ब्राउज़रChrome.newPage(); प्रतीक्षा पृष्ठChrome.goto('https://www.google.com'); // हम लिख सकते हैं यहां चरण प्रतीक्षारत हैं browserChrome.close(); })();

कठपुतली वर्ग भी कई नामस्थान और तरीके प्रदान करता है, जो वेब स्क्रैपिंग प्रक्रिया का समर्थन करता है। अगले अनुभागों में अक्सर उपयोग किए जाने वाले नामस्थान और तरीके बताए गए हैं।

कठपुतली वर्ग - नाम स्थान:

यह एक कंटेनर है जो जावास्क्रिप्ट में कई पहचानकर्ताओं, विधियों, चर आदि को परिभाषित करता है। यह कोड को तार्किक और संगठित तरीके से समूहित करने का एक तरीका है। Puppeteer वर्ग द्वारा नीचे नामस्थान दिए गए हैं।

कठपुतली यह उन उपकरणों की एक सूची देता है जिनका उपयोग विधि द्वारा किया जा सकता है page.emulate (विकल्प) मोबाइल उपकरणों में स्क्रैपिंग करने के लिए। 

उदाहरण - मोबाइल डिवाइस पर Google वेब पेज खोलें और बंद करें -

कास्ट कठपुतली = आवश्यकता ('कठपुतली'); कास्ट सैमसंग = कठपुतली। डिवाइस ['सैमसंग J5']; (async () => { const browserChrome = प्रतीक्षा कठपुतली.लॉन्च (); कॉन्स्ट पेजChrome = प्रतीक्षा ब्राउज़रChrome.newPage(); प्रतीक्षा पृष्ठChrome.emulate(samsung); प्रतीक्षा पृष्ठChrome.goto('https://www.google.com '); प्रतीक्षा ब्राउज़र क्रोम.क्लोज़ (); }) ();

कठपुतली विभिन्न कठपुतली विधियों के साथ काम करते समय, अपवादों का एक मौका होता है। अधिकतर, यदि विधियाँ अनुरोधों को पूरा करने में असमर्थ हैं, तो यह त्रुटियों को फेंकता है। 'कठपुतली.मारियों' के नामस्थान के माध्यम से त्रुटियों को संभालने के लिए विभिन्न वर्ग परिभाषित हैं।

उदाहरण - विधि पृष्ठ के लिए ।waitForSelector, यदि वेब तत्व निर्दिष्ट समय के भीतर प्रकट नहीं होता है, तो टाइमआउट त्रुटि दिखाई देगी। कृपया नीचे दिए गए उदाहरण के माध्यम से जाएं, जो टाइमआउट को संभालने के लिए एक दृष्टिकोण दिखाता है,

कोशिश करें {प्रतीक्षा पृष्ठ। प्रतीक्षा करें चयनकर्ता (' '); } पकड़ें (गलती) { अगर (कठपुतली की गलती। त्रुटियाँ। टाइमआउट त्रुटि) {// टाइमआउट त्रुटि को संभालने के लिए कोड लिखें। } } 

कठपुतली यह उन नेटवर्क स्थितियों की एक सूची देता है जिनका उपयोग विधि पेज पर किया जा सकता है ।emulateNetworkConditions (networkConditions)। नेटवर्क स्थितियों की पूरी सूची परिभाषित की गई है यहाँ उत्पन्न करें.

उदाहरण - इस कोड नमूने के माध्यम से, हम पूर्व-परिभाषित नेटवर्क स्थिति का उपयोग करके Google वेब पेज खोलेंगे।

कास्ट कठपुतली = आवश्यकता ('कठपुतली'); कॉन्स्ट नेट = कठपुतली.networkConditions ['फास्ट 3 जी']; (async () => { const browserChrome = प्रतीक्षा कठपुतली.लॉन्च (); const pageChrome = प्रतीक्षा ब्राउज़रChrome.newPage (); प्रतीक्षा पृष्ठChrome.emulateNetworkConditions(net); प्रतीक्षा पृष्ठChrome.goto('https://www.google.com) '); प्रतीक्षा ब्राउज़र क्रोम.क्लोज़ (); }) ();

कठपुतली यह ब्राउज़र का नाम देता है, जिसका उपयोग स्वचालन (क्रोम या फ़ायरफ़ॉक्स) के लिए किया जाएगा। ब्राउज़र के लिए उत्पाद पर्यावरण चर PUPPETEER_PRODUCT या कठपुतली वर्ग विधि में उपलब्ध उत्पाद विकल्प द्वारा निर्धारित किया जाता है puppeteer.launch ([विकल्प])। डिफ़ॉल्ट मान Chrome है।

संदर्भ: क्लिक करें यहाँ उत्पन्न करें Puppeteer वर्ग नामस्थान पर अधिक जानने के लिए।

कठपुतली वर्ग - तरीके:

विधियों में विशिष्ट क्रिया करने के लिए कथन होते हैं। कठपुतली वर्ग नीचे विधियों,

कठपुतली - यह सभी पंजीकृत हैंडलर को साफ करता है।

puppeteer.connect (विकल्प) - इस विधि का उपयोग कठपुतली को किसी भी मौजूदा ब्राउज़र से जोड़ने के लिए किया जाता है। यह प्रकार के वादे की एक वस्तु देता है जो इस अतुल्यकालिक प्रक्रिया की स्थिति को इंगित करता है। उदाहरण - नीचे के उदाहरण में, कठपुतली चालू ब्राउज़र से डिस्कनेक्ट और फिर से कनेक्ट,

कास्ट कठपुतली = आवश्यकता ('कठपुतली'); (async () => {const browserChrome = प्रतीक्षा कठपुतली.लॉन्च (); // समापन बिंदु संदर्भ की प्रतिलिपि बनाएँ जिसे बाद में कॉन्स्ट एंडपॉइंट = ब्राउज़रChrome.wsEndpoint (); // कठपुतली ब्राउज़र को डिस्कनेक्ट करेंChrome.disconnect (); // उपयोग करें कॉन्स्ट ब्राउज़र को फिर से जोड़ने का समापन बिंदुChrome2 = कठपुतली की प्रतीक्षा करें।

puppeteer.createBrowserFetcher ([विकल्प]) - यह ब्राउज़र (क्रोम और फ़ायरफ़ॉक्स) के विभिन्न संस्करणों को डाउनलोड करने और प्रबंधित करने के लिए एक ब्राउज़र भ्रूण ऑब्जेक्ट बनाता है।

const BrowserFetcher = puppeteer.createBrowserFetcher ();

कठपुतली.customQueryHandlerNames () - यह एक लौटाता है सरणी सभी पंजीकृत कस्टम क्वेरी हैंडलर की।

puppeteer.defaultArgs ([विकल्प]) - यह लॉन्च करते समय एक सरणी के रूप में क्रोम ब्राउज़र के डिफ़ॉल्ट कॉन्फ़िगरेशन विकल्प देता है। इसके अलावा, हम वैकल्पिक तर्क विकल्प का उपयोग करके ब्राउज़र के कॉन्फ़िगर करने योग्य विकल्प सेट कर सकते हैं।

const args = puppeteer.defaultArgs ();

puppeteer.executablePath () - यह बंडल ब्राउज़र उदाहरण के लिए कठपुतली द्वारा पथ की वापसी की उम्मीद है। पथ जो डाउनलोड में उपलब्ध नहीं होगा, उसे पर्यावरण चर PUPPETEER_SKIP_DOWNLOAD द्वारा छोड़ दिया गया था। साथ ही, पथ बदलने के लिए हम पर्यावरण चर PUPPETEER_EXECUTABLE_PATH और PUPPETEER_CHROMIUM_REVISION का उपयोग कर सकते हैं।

const args = puppeteer.executablePath ();

puppeteer.launch ([विकल्प]) - वेब ब्राउजर को लॉन्च करने के लिए इस पपीटेसर क्लास पद्धति का उपयोग किया जाता है। वैकल्पिक तर्क के माध्यम से, हम ब्राउज़र के विभिन्न विन्यासों को पारित कर सकते हैं, जैसे कि उत्पाद (ब्राउज़र का नाम), बिना सिर के, devtools, आदि। यह विधि वादा वस्तु लौटाती है, जो लॉन्च किए गए ब्राउज़र का संदर्भ रखती है।

const ब्राउज़र = कठपुतली का इंतजार करें। पंच ();

puppeteer.registerCustomQueryHandler (नाम, क्वेरीहैंडलर) - यह एक कस्टम क्वेरी हैंडलर रजिस्टर करने के लिए उपयोग किया जाता है। यहां "नाम" क्वेरी हैंडलर का नाम प्रदान करता है, और "क्वेरीहैंडलर" वास्तविक कस्टम क्वेरी हैंडलर को परिभाषित करता है।

puppeteer.unregisterCustomQueryHandler (नाम) - यह किसी भी कस्टम क्वेरी हैंडलर को अपंजीकृत करने के लिए उपयोग किया जाता है।

संदर्भ: क्लिक करें यहाँ उत्पन्न करें कठपुतली वर्ग विधियों पर अधिक पढ़ने के लिए।

लक्ष्य वर्ग

लक्ष्य वर्ग लक्ष्य के साथ काम करने के तरीके प्रदान करता है। सबसे अधिक उपयोग की जाने वाली विधियाँ जो लक्ष्य वर्ग के साथ उपलब्ध हैं, उन्हें अगले भाग में समझाया गया है।

लक्ष्य वर्ग - विधियाँ:

निम्न विधियाँ लक्ष्य वर्ग में उपलब्ध हैं -

  • लक्ष्य.ब्रोज़र () - यह ब्राउज़र ऑब्जेक्ट को लौटाता है जो लक्ष्य से जुड़ा हुआ है।
  • लक्ष्य। - यह एक प्रकार के ब्राउजरकंटेक्ट को लौटाता है जो लक्ष्य से जुड़ा होता है।
  • Target.createCDPSession () - यह क्रोम के devtool प्रोटोकॉल सत्र को बनाता है और लौटाता है, जो लक्ष्य से जुड़ा होता है।
  • टारगेट.ओपनर () - यह उस लक्ष्य को लौटाता है जो इस लक्ष्य को खोलता है। मूल रूप से, इस पद्धति का उपयोग मूल लक्ष्य प्राप्त करने के लिए किया जाता है। यह शीर्ष-स्तरीय लक्ष्य के लिए शून्य है।
  • लक्ष्य.पृष्ठ () - यह लौटाता है पृष्ठ वस्तु लक्ष्य का। यदि लक्ष्य का प्रकार कोई पृष्ठ नहीं है, तो यह एक शून्य मान देता है।
  • लक्ष्य.प्रकार () - इसका उपयोग लक्ष्य का प्रकार प्राप्त करने के लिए किया जाता है। वापसी मूल्य या तो विकल्पों में से हो सकता है - 'बैकग्राउंड_पेज', 'पेज', 'शेयर्ड_वर्कर', 'सर्विस_वर्कर', 'ब्राउजर' या 'अन्य'।
  • लक्ष्य यूआरएल() - यह लक्ष्य का url लौटाता है।
  • टारगेट.वर्कर () - यह वेबवर्क ऑब्जेक्ट लौटाता है। यदि लक्ष्य न तो 'service_worker' है और न ही 'साझा_वर्कर' है तो रिटर्न वैल्यू शून्य है।

संदर्भ: क्लिक करें यहाँ उत्पन्न करें लक्ष्य वर्ग विधियों पर अधिक पढ़ने के लिए।

ConsoleMessage क्लास

ConsoleMessage क्लास ऑब्जेक्ट्स को कंसोल इवेंट के माध्यम से पृष्ठ द्वारा भेजा जाता है। कंसोलमैसेज क्लास के अक्सर उपयोग किए जाने वाले तरीकों को अगले भाग में समझाया गया है।

ConsoleMessage क्लास - विधियाँ:

नीचे दिए गए तरीके ConsoleMessage वर्ग में उपलब्ध हैं -

  • दिलासा - यह JSHandler ऑब्जेक्ट की एक सरणी देता है। जेएसहैंडलर लिंक किए गए जेएस ऑब्जेक्ट को तब तक इकट्ठा होने से रोकता है जब तक कि हैंडल का निपटान नहीं किया जाता है। मूल ब्राउज़र संदर्भ नष्ट होने पर यह स्वचालित रूप से नष्ट हो जाता है।
  • दिलासा - यह संसाधन की एक वस्तु देता है, जिसमें नीचे के पैरामीटर शामिल हैं।
  • url - यह ज्ञात संसाधन के URL को दर्शाता है। अगर नहीं पता है, तो यह रखेगा एक अपरिभाषित मूल्य.
  • लाइननंबर - यह 0-आधारित लाइन नंबर है जो संसाधन में उपलब्ध है। यदि उपलब्ध नहीं है, तो यह रखेगा एक अपरिभाषित मूल्य.
  • columNumber - यह 0-आधारित स्तंभ संख्या है जो संसाधन में उपलब्ध है। यदि उपलब्ध नहीं है, तो यह रखेगा एक अपरिभाषित मूल्य.
  • कंसोलमैसेज.स्टैकट्रेस () - यह वस्तुओं की एक सूची देता है (प्रत्येक ऑब्जेक्ट एक संसाधन को संदर्भित करता है) जिसमें नीचे पैरामीटर शामिल हैं।
  • url - यह ज्ञात संसाधन के URL को दर्शाता है। अगर नहीं पता है, तो यह रखेगा एक अपरिभाषित मूल्य.
  • लाइननंबर - यह 0-आधारित लाइन नंबर है जो संसाधन में उपलब्ध है। यदि उपलब्ध नहीं है, तो यह रखेगा एक अपरिभाषित मूल्य.
  • columNumber - यह 0-आधारित स्तंभ संख्या है जो संसाधन में उपलब्ध है। यदि उपलब्ध नहीं है, तो यह रखेगा एक अपरिभाषित मूल्य.
  • कंसोलमैसेज.टेक्स्ट () - यह कंसोल का टेक्स्ट लौटाता है।
  •  ComfortMessage.type () - यह कंसोल संदेश के प्रकार के रूप में स्ट्रिंग लौटाता है। प्रकार या तो मानों का हो सकता है - लॉग, डीबग, जानकारी, त्रुटि, चेतावनी, डीआईआर, डीआईआरएक्सएमएल, टेबल, ट्रेस, क्लियर, स्टार्टग्रुप, स्टार्टग्रुप कोलगैप्ड, एंडग्रुप, एसेलर, प्रोफाइल, प्रोफाइल प्रोफाइल, काउंट, टाइमएंड।

संदर्भ: क्लिक करें यहाँ उत्पन्न करें कंसोलमैसेज श्रेणी के तरीकों के बारे में अधिक जानने के लिए।

समयबाह्य वर्ग

विभिन्न कठपुतली के साथ काम करते समय, अपवादों का एक मौका होता है। अधिकतर, यदि विधियाँ अनुरोधों को पूरा करने में असमर्थ हैं, तो यह त्रुटियों को फेंकता है। इस तरह के अपवाद को संभालने के लिए TimeoutError क्लास का उपयोग किया जाता है।

TimeoutError Class का उदाहरण - method page.waitForSelector के लिए, यदि वेब तत्व निर्दिष्ट समय के भीतर दिखाई नहीं देता है, तो टाइमआउट त्रुटि दिखाई देगी। कृपया नीचे दिए गए उदाहरण के माध्यम से जाएं, जो टाइमआउट को संभालने के लिए एक दृष्टिकोण दिखाता है,

कोशिश करें {प्रतीक्षा पृष्ठ। प्रतीक्षा करें चयनकर्ता (' '); } पकड़ें (ई) { अगर (ई उदाहरण कठपुतली। त्रुटियां। टाइमआउट त्रुटि) {// त्रुटि को संभालने के लिए कोड लिखें। } } 

FileChooser वर्ग

फ़ाइल चयनकर्ता वर्ग ऑब्जेक्ट विधि का उपयोग करके बनाई गई है पेज.waitForFileChooser। FileChooser वर्ग का उपयोग फ़ाइलों के साथ बातचीत करने के लिए किया जाता है। FileChooser वर्ग के अक्सर उपयोग किए जाने वाले तरीकों को अगले भाग में समझाया गया है।

FileChooser वर्ग - तरीके:

नीचे दिए गए तरीके FileChooser वर्ग के लिए उपलब्ध हैं -

  • fileChooser.accept (file_with_path) - इस पद्धति का उपयोग किसी भी फ़ाइल को अपलोड करने के लिए किया जाता है (जिसके लिए तर्क के रूप में पथ प्रदान किया जाता है)।
  • fileChooser.cancel () - इस विधि का उपयोग फ़ाइल अपलोड प्रक्रिया को रद्द करने के लिए किया जाता है।
  • fileChooser.isMultiple () - यह विधि जांचती है कि क्या फाइलशोसर कई मूल्यों का चयन करने की अनुमति देता है। यह एक बूलियन अभिव्यक्ति (सच्चा या गलत) लौटाता है।

FileChooser वर्ग का एक उदाहरण -

const [fileChooser] = प्रतीक्षित Promise.all ([ page.waitForFileChooser(), page.click('#attach-button'), ]); प्रतीक्षा करें fileChooser.accept (['/puppeteer_proj/data/sample_file.pdf']);

निष्कर्ष:

इस "कठपुतली वर्ग" ट्यूटोरियल में, हमने कठपुतली वर्ग, लक्ष्य वर्ग, MessageConsole वर्ग और TimeoutError वर्ग को समझाया है जिसमें महत्वपूर्ण नामस्थान (यदि कोई हो), घटनाएँ (यदि कोई हो), और विधियाँ जो अक्सर Puppeteer वेब स्क्रैपिंग तकनीकों में उपयोग की जाती हैं उदाहरणों के साथ। अगले लेख में, हम BrowserContext, Browser और BrowserContext Class की व्याख्या करेंगे।

एक टिप्पणी छोड़ दो