NodeJS और कठपुतली के साथ वेब स्क्रैपिंग
परिचय
जैसा कि आपने शायद मेरी प्रोफ़ाइल की जाँच की है, मैं तकनीकी सामग्री का प्रभारी नहीं हूँ कोपोली . इस प्रकार, यह पोस्ट कहीं से थोड़ा हटकर है।
क्यों?
एक वाक्य में, कोपोली ऑनलाइन मूल्य निगरानी को स्वचालित करने वाले ब्रांडों और पुनर्विक्रेताओं की सहायता करता है। परिभाषा से, कोपोली एक अभिनव और तकनीकी सास समाधान है।
वैसे भी नवाचारों और तकनीकी मामलों के बारे में भावुक, मैं हमेशा विकास में कहीं नहीं होने के बारे में थोड़ा निराश था, मेरा मतलब है अप-टू-डेट विकास ;-)।
इसलिए मैंने अपनी मुख्य गतिविधियों के अलावा अपने प्रोग्रामिंग अध्याय को फिर से खोलने और अपने तकनीकी कौशल में सुधार करने का फैसला किया।
एक परियोजना के मालिक के रूप में, मुझे विश्वास है कि तकनीकी चुनौतियों के बारे में जागरूक होना, समझना और कल्पना करना, तकनीकी टीम के अच्छे विकास के लिए महत्वपूर्ण है। कोपोली .
इस लेख में, मैं यह बताना चाहूंगा कि वेब स्क्रैपिंग शुरू करना कैसे आसान हो सकता है। डरो मत। भले ही आप एक डेवलपर नहीं हैं, मुझे यकीन है कि आप में से कई लोग उस महत्वपूर्ण विषय के बारे में रुचि रखते हैं।
वेब स्क्रैपिंग बहुत से विभिन्न मामलों में उपयोगी है। जैसे ही आपको करना है कॉपी पेस्ट एक व्यवसाय डेवलपर, एक बिक्री, या यहां तक कि एक भर्तीकर्ता के रूप में कई स्रोतों से डेटा। चुनौती हमेशा समान होती है: प्रासंगिक डेटा एकत्र करें।
फिर से, ध्यान रखें कि यह लेख मेरे जैसे तकनीकी लोगों को नहीं समर्पित है।
यह कहा जा रहा है, निम्नलिखित पंक्तियों के माध्यम से जाना होगा कि कैसे मैंने वेब स्क्रैपिंग शुरू करने के बारे में खुद से सीखा।
यहाँ हम किस बारे में चर्चा करेंगे इसका एक सिंहावलोकन है:
- कोड संपादक: विजुअल स्टूडियो कोड
- प्रोग्रामिंग भाषा: जावास्क्रिप्ट (नोड.जेएस)
- वेब स्क्रैपिंग लाइब्रेरी: प्रसिद्ध कठपुतली चलानेवाला
तैयार? चलो शुरू करते हैं।
कोड संपादक: विजुअल स्टूडियो कोड
इस ट्यूटोरियल में, मैं विजुअल कोड एडिटर का उपयोग करूंगा। आप यहां क्लिक करके नवीनतम संस्करण डाउनलोड कर सकते हैं: https://code.visualstudio.com/
आईडीई के कुछ फायदे यहां दिए गए हैं:
- टर्मिनल : विजुअल स्टूडियो कोड अपने टर्मिनल का मालिक है। यह कोड चलाने के लिए आईडीई और टर्मिनल के बीच हर समय स्विच करने से बचने में आपकी सहायता करेगा। यह कुशल है।
- एकीकृत गिट : विजुअल स्टूडियो कोड में आपके द्वारा अपने कोड में किए जा सकने वाले प्रत्येक परिवर्तन का पालन करने के लिए गिट शामिल है। दूसरे शब्दों में (शुरुआती लोगों के लिए), यदि आपने कोई गलती की है और वापस मुड़ना चाहते हैं तो यह आपको कोड इतिहास में वापस आने की अनुमति देगा।
- स्वचालित बचत : विजुअल स्टूडियो कोड स्वचालित रूप से आपका कोड सहेज लेगा। इस प्रकार, यदि प्रोग्रामिंग करते समय कोई त्रुटि हुई है, तो सुनिश्चित करें कि आप अपना कोड वापस प्राप्त कर लेंगे। तो आप किस बात पर फोकस रख सकते हैं।
- एक्सटेंशन : विजुअल स्टूडियो कोड आपको इसके बड़े डेवलपर्स समुदाय के लिए कई संभावित एक्सटेंशन जोड़ने की अनुमति देता है। उदाहरण के लिए, आप अपना पथ पुनः प्राप्त करने में सहायता के लिए एक्सटेंशन हाइलाइटिंग कोड जोड़ सकते हैं, आदि।
इस ब्लॉग पोस्ट का उद्देश्य इस समाधान को बढ़ावा देना नहीं है। यदि आप दूसरे के साथ बेहतर महसूस करते हैं, तो कृपया अपना उपयोग करें!
भाग I - पर्यावरण स्थापित करें
A. Mac पर Node.j कैसे स्थापित करें?
कठपुतली का उपयोग करने के लिए, हमें पहले अपना विकास वातावरण स्थापित करने की आवश्यकता है। कठपुतली पुस्तकालय (जावास्क्रिप्ट पुस्तकालय) का उपयोग करने के लिए, हमें एक Node.js वातावरण स्थापित करने की आवश्यकता है। चिंता न करें, इसमें कुछ ही मिनट लगते हैं...
चरण 1
टर्मिनल खोलें
रिएक्ट नेटिव ट्यूटोरियल 2018
चरण 2.a: यदि आपके पास Node.js स्थापित है
प्रवेश करना निम्नलिखित कोड पहले से स्थापित Node.js संस्करण की जाँच करने के लिए।
node -v
अपने Node.JS संस्करण को अपडेट करने के लिए: मैं आपको निम्नलिखित कमांड लाइन चलाने की सलाह देता हूं:
npm i -g npm
अगर आपको बहुत कुछ मिलता है चेकअनुमतियाँ चेतावनियाँ, आपको एक सुपरयुसर के रूप में कमांड को चलाकर चलाना पड़ सकता है:
sudo npm i -g npm
उस स्थिति में टर्मिनल शायद आपसे अपना पासवर्ड टाइप करने के लिए कहेगा।
चरण २.बी: यदि आपके पास पहले से Node.js स्थापित नहीं है
- के लिए जाओ Nodejs.org , और macOS के लिए नवीनतम संस्करण डाउनलोड करें।
- जब फ़ाइल डाउनलोड हो जाए, तो इसे स्थापित करने के लिए .pkg फ़ाइल पर डबल-क्लिक करें। मैं आपको अधिकांश उपयोगकर्ताओं के लिए समर्पित एलटीएस संस्करण डाउनलोड करने की सलाह देता हूं।
3. पूरी स्थापना प्रक्रिया से गुजरें
4. जब इंस्टॉलेशन पूरा हो जाए, तो टर्मिनल खोलें और नीचे दिए गए कोड को दर्ज करें, यह सत्यापित करने के लिए कि Node.JS सही तरीके से स्थापित है, और संस्करण की जांच करने के लिए।
node -v
यदि कोई संस्करण प्रदर्शित होता है, तो आप अगले भाग के लिए तैयार हैं।
ख. कठपुतली पुस्तकालय कैसे स्थापित करें?
कठपुतली एक नोड पुस्तकालय है जो आपको क्रोम ब्राउज़र को नियंत्रित और स्वचालित करने की अनुमति देता है लेकिन बिना सिर के। ठीक है, थोड़ा भ्रमित करने वाला, चलिए उस हिस्से को थोड़ा विस्तार से बताते हैं।
हेडलेस क्रोम क्रोम 59 में शिपिंग कर रहा है। यह क्रोम ब्राउज़र को हेडलेस वातावरण में चलाने का एक तरीका है। अनिवार्य रूप से, क्रोम के बिना क्रोम चलाना! यह लाता है सभी आधुनिक वेब प्लेटफ़ॉर्म सुविधाएँ क्रोमियम और ब्लिंक रेंडरिंग इंजन द्वारा कमांड लाइन को प्रदान किया जाता है।
यह उपयोगी क्यों है?
एक हेडलेस ब्राउज़र स्वचालित परीक्षण और सर्वर वातावरण के लिए एक बढ़िया उपकरण है जहाँ आपको दृश्यमान UI शेल की आवश्यकता नहीं होती है। उदाहरण के लिए, हो सकता है कि आप किसी वास्तविक वेब पेज के विरुद्ध कुछ परीक्षण चलाना चाहें, उसका एक पीडीएफ़ बनाना चाहें, या बस यह जांचना चाहें कि ब्राउज़र किसी URL को कैसे प्रस्तुत करता है।
स्रोत: https://developers.google.com/web/updates/2017/04/headless-chrome
अब, आप कठपुतली पुस्तकालय के उद्देश्य को समझते हैं।
तो, इसे सही जगह पर कैसे स्थापित करें। को खोलो टर्मिनल , वह स्थान चुनें जो आप चाहते हैं (उदा. अपने पर डेस्कटॉप ), और हमारे वेब स्क्रैपिंग प्रोजेक्ट के लिए एक समर्पित निर्देशिका बनाएं:
mkdir project1
अब उस निर्देशिका के अंदर कठपुतली स्थापित करें प्रोजेक्ट 1 आदेशों के नीचे चलाकर
npm install puppeteer
समुद्र तल के ऊपर एक पैकेज मैनेजर है जो पहले से स्थापित Node.js के साथ स्वचालित रूप से आता है। दूसरे शब्दों में, यह आपके लिए कठपुतली स्थापना प्रक्रिया का प्रबंधन करेगा, उस स्थान पर जहां आप हैं। इस प्रकार उपर्युक्त कोड चलाकर, यह क्रोमियम के नवीनतम संस्करण को डाउनलोड और बंडल करेगा।
इतना ही।
अब, हम वेब स्क्रैपिंग शुरू कर सकते हैं।
भाग II - वेब स्क्रैपिंग
अब, सबसे अच्छा हिस्सा। आइए वेब को स्क्रैप करना शुरू करें। ओह, ठीक है, पहले पन्ने पर शुरू करते हैं...
यहां हमारे स्क्रैपिंग उद्देश्य हैं:
netflix.com/active of the year
- कठपुतली शुरू करें और एक विशिष्ट उत्पाद पृष्ठ पर जाएं
- स्क्रैप शीर्षक, विवरण, और उत्पाद की कीमत
चरण 1 - प्रारंभ
स्क्रैपिंग अनुमतियाँ
आइए एक बहुत ही सरल उदाहरण से शुरू करें: https://www.theslanket.com .
स्क्रैप करने से पहले, सुनिश्चित करें कि वेबसाइट अपनी robots.txt फ़ाइल में इसे प्रतिबंधित नहीं कर रही है। इस मामले में, आइए जांचें: https://www.theslanket.com/robots.txt
# Hello Robots and Crawlers! We're glad you are here, but we would # prefer you not create hundreds and hundreds of carts. User-agent: * Disallow: /cgi-bin/UCEditor Disallow: /cgi-bin/UCSearch Disallow: /cgi-bin/UCReviewHelpful Disallow: /cgi-bin/UCMyAccount Disallow: /merchant/signup/signup2Save.do Disallow: /merchant/signup/signupSave.do Crawl-delay: 5 # Sitemap files Sitemap: https://www.theslanket.com/sitemapsdotorg_index.xml
यह मना नहीं है, तो चलिए।
उद्देश्यों
आइए एक यादृच्छिक उत्पाद पर विचार करें, जैसे https://www.theslanket.com/shop/the-stroller-slanket/TBS-RUBY-WINE.html
मैंने उन 5 तत्वों पर प्रकाश डाला जिन्हें हम लाल रंग में परिमार्जन करेंगे:
- उत्पाद शीर्षक
- सामान्य मूल्य
- रियायती मूल्य
- संक्षिप्त वर्णन
- एसकेयू
चरण 2 - स्क्रैपिंग
एक Node.js फ़ाइल बनाएँ एक नई फाइल बनाएं, इसे नाम दें SlanketScraping.js . उस फ़ाइल को अपनी निर्दिष्ट निर्देशिका में सहेजें। हमारे मामले में, यह प्रोजेक्ट 1 में होगा।
एक ब्राउज़र उदाहरण बनाएँ
(async () => { const browser = await puppeteer.launch() })()
(वैकल्पिक) ऑब्जेक्ट के माध्यम से विकल्प पास करें कठपुतली। लॉन्च () . उस स्थिति में, कठपुतली को 2 विकल्प देते हैं।
नेतृत्वहीन : इस विकल्प में कठपुतली ब्राउज़ करते समय क्रोमियम दिखाना शामिल है। जैसा कि पहले परिभाषित किया गया है, कठपुतली एक हेडलेस क्रोम ब्राउज़र है। लेकिन, एक शुरुआत के रूप में, मैं आपको प्रदर्शित करके शुरू करने की सलाह देता हूं बिना सिर वाला: झूठा ) यह देखने के लिए कि क्या हो रहा है और डीबग करें। आप इसे कभी भी चालू कर सकते हैं सत्य , और तब कुछ भी दिखाई नहीं देगा।
धीमी गति : स्लो-मोशन विकल्प कठपुतली को धीमा करने की अनुमति देता है। इसका उपयोग कई स्थितियों में किया जा सकता है, लेकिन यहां, मान लें कि इसका उपयोग यह देखने के लिए किया जाएगा कि ब्राउज़र क्या कर रहा है और सर्वर को परेशान करने से बचने के लिए ... हम इसे 250 एमएस (मिलीसेकंड) पर सेट करेंगे। डिफ़ॉल्ट रूप से, धीमी गति 0 एमएस पर सेट किया जाएगा, इसलिए पूर्ण गति।
(async () => { const browser = await puppeteer.launch({ headless: false, slowMo: 250, }) })()
अगला, हम उपयोग करेंगे नया पृष्ठ () प्राप्त करने की विधि पृष्ठ वस्तु। यदि आप . में काम करते हैं बिना सिर वाला: झूठा , आपको एक नया टैब दिखाई देगा।
(async () => { const browser = await puppeteer.launch({ headless: false, slowMo: 250, }) const page = await browser.newPage() })()
आपको क्या देखना चाहिए
अगला, हम उस URL को पास करेंगे जिसे हम परिमार्जन करना चाहते हैं। ऐसा करने के लिए, पेज को लोड करने के लिए पेज ऑब्जेक्ट पर गोटो () विधि को कॉल करें।
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false, slowMo: 250, }) const page = await browser.newPage() await page.goto('https://www.theslanket.com/shop/the-stroller-slanket/TBS-RUBY-WINE.html') browser.close() })()
यहां हमने कठपुतली लॉन्च की, और उस विशिष्ट उत्पाद पर गए जिसे हम परिमार्जन करना चाहते हैं, फिर ब्राउज़र बंद कर दिया। इस स्तर पर, हमने केवल ब्राउज़िंग के अलावा कुछ भी परिमार्जन नहीं किया।
आइए उन 5 तत्वों को परिमार्जन करें जिनका हमने पहले वर्णन किया था।
स्ट्रीम-चैट-रिएक्शन-देशी
पृष्ठ सामग्री प्राप्त करें
जब कोई पृष्ठ URL से लोड होता है, तो हम इसका उपयोग करेंगे मूल्यांकन करना() पृष्ठ सामग्री प्राप्त करने की विधि।
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false, slowMo: 250, }) const page = await browser.newPage() await page.goto('https://www.theslanket.com/shop/the-stroller-slanket/TBS-RUBY-WINE.html') const results = await page.evaluate(() =>{ //... elements to scrape }) browser.close() })()
के अंदर मूल्यांकन करना() विधि, हम विशिष्ट का उपयोग करके उस तत्व को लक्षित करेंगे जिसे हम परिमार्जन करना चाहते हैं चयनकर्ताओं .
सही चयनकर्ता ढूँढना कभी-कभी मुश्किल हो सकता है। यदि आपको चयनकर्ताओं के बारे में अधिक जानकारी की आवश्यकता है, तो मैं आपको उस विषय के बारे में निम्नलिखित दस्तावेज पढ़ने की सलाह देता हूं। मेरा विश्वास करो, आपको इसकी आवश्यकता होगी।
https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector
हमारे चयनकर्ता पर वापस। सबसे अच्छा अभ्यास, मैं अनुशंसा करता हूं, अपने चयनकर्ताओं को परिभाषित और परीक्षण करने के लिए Google क्रोम कंसोल का उपयोग करना है। कंसोल खोलने के लिए:
- लक्षित खोलें क्रोम में यूआरएल
- Ctrl+क्लिक एक विशिष्ट तत्व पर जिसे आप परिमार्जन करना चाहते हैं, चलिए ProductTitle से शुरू करते हैं, और
- चुनते हैं निरीक्षण
एक काला पैनल जिसे कहा जाता है तत्वों आपके द्वारा क्लिक किए जाने वाले तत्व की दाईं ओर आपके पृष्ठ के दाईं ओर खुल रहा है।
Google क्रोम > शीर्षक पर क्लिक करके तत्व का निरीक्षण करें
यहाँ, हमारा तत्व शामिल है
हम जिस शीर्षक की तलाश कर रहे हैं वह है: घुमक्कड़ स्लिम - रूबी वाइन , |_+_| में शामिल है।
तो, आइए इसे सीधे Google क्रोम कंसोल में चुनने का प्रयास करें। एलिमेंट्स पैनल के अलावा, कंसोल टैब पर क्लिक करें।
ओरा 31011 एक्सएमएल पार्सिंग विफल
उत्तर खाली है: .
नतीजा खाली है...
धिक्कार है, हम असफल रहे।
आइए माता-पिता की कोशिश करें डिव , निम्नलिखित के रूप में
document.querySelector('.text').innerText
यहाँ हमारा शीर्षक है!
तो, यह चयनकर्ता हमें प्रदान करने के लिए काम कर रहा है उत्पाद शीर्षक उत्पाद की।
आइए हमारे कोड में चयनकर्ता को यह देखने के लिए जोड़ें कि क्या कठपुतली इसे परिमार्जन कर सकती है।
document.querySelector('.widget.widget-itemtitle ').innerText
विजुअल स्टूडियो कोड में, अपनी प्रोजेक्ट1 निर्देशिका में, चलाएँ:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false, slowMo: 250, }) const page = await browser.newPage() await page.goto('https://www.theslanket.com/shop/the-stroller-slanket/TBS-RUBY-WINE.html') const results = await page.evaluate(() =>{ //our new selector return document.querySelector('.widget.widget-itemtitle ').innerText; }) //log results at the screen console.log(results) browser.close() })()
विजुअल स्टूडियो कोड लॉग होना चाहिए
node SlanketScraping.js
आइए शीर्षक को परिमार्जन करने के लिए उपयोग की जाने वाली समान कार्यप्रणाली का अनुसरण करते हुए अन्य तत्वों को जोड़ें। चूंकि हम कई तत्वों को स्क्रैप कर रहे हैं, हम पांच तत्वों वाली एक वस्तु को परिभाषित करेंगे।
यहाँ 5 तत्व चयनकर्ता हैं:
The Stroller Slanket - Ruby Wine
पूर्ण कोड
यहाँ हमारे उदाहरण का पूरा कोड है।
ProductTitle: document.querySelector('.widget.widget-itemtitle ').innerText, NormalPrice: document.querySelector('.price').innerText, DiscountedPrice: document.querySelector('.price.sale').innerText, ShortDescription: document.querySelector('.widget-itemdescription-excerpt').innerText, SKU: document.querySelector('.widget.widget-itemsku ').innerText,
कोपोली के बारे में
इस लेख का उद्देश्य आपको कठपुतली का उपयोग करके एक बहुत ही पहला और सरल स्क्रैपिंग अभ्यास प्रस्तुत करना है।
भविष्य में, मैं और अधिक जटिल वेब स्क्रैपिंग मिशन प्रकाशित करूंगा।
मुझे आशा है कि आपने कुछ चीजें सीखी हैं, और इससे आपको अपने वेब स्क्रैपिंग कौशल को विकसित करने और सुधारने में मदद मिलेगी।
वैसे…
पर कोपोली हम चाहते हैं कि हर कोई स्क्रैप करने में सक्षम हो। जैसा कि पहले ही कहा गया है, यह विभिन्न परियोजनाओं में उपयोगी हो सकता है। इसलिए, यदि यह आपकी रूचि रखता है, चाहे आपकी वर्तमान नौकरी कोई भी हो, हमें एक ईमेल छोड़ने में कभी भी संकोच न करें ( [email protected] ) हमें आपसे मिलकर बहुत खुशी होगी, और कौन जानता है, शायद एक साथ काम करें?
सुरक्षित रूप से स्क्रैप करें।
#नोडज्स #जावास्क्रिप्ट #कठपुतली #नोड-जेएस
यह सभी देखें:
- सेलेनियम वेबड्राइवर ट्यूटोरियल | शुरुआती के लिए सेलेनियम ट्यूटोरियल
- 3x लंबा बिटकॉइन कैश टोकन (BCHBULL) कैसे और कहां से खरीदें - एक आसान चरण-दर-चरण मार्गदर्शिका
- कागल डेटासेट को Google Colab में सीधे एक्सेस करना चाहते हैं?
- पुराने Google खाते से फ़ोटो कैसे पुनर्प्राप्त करें
- EMLX फ़ाइलों को अन्य ईमेल और दस्तावेज़ फ़ाइल एक्सटेंशन में कैसे बदलें