वेब स्क्रैपिंग, जिसे वेब डेटा निष्कर्षण के रूप में भी जाना जाता है, वेब पेजों से डेटा या सामग्री निकालने का एक स्वचालित तरीका है।
वेब स्क्रैपर्स मानव हस्तक्षेप के बिना डेटा निष्कर्षण को स्वचालित करते हैं। एक स्क्रैपर एक वेब ब्राउज़र की तरह HTTP अनुरोध भेजकर एक वेबपेज तक पहुंचता है। हालाँकि, यह प्राप्त होने वाले HTML को प्रदर्शित करने के बजाय, इसे आपके निर्देशों के अनुसार संसाधित करता है और परिणाम संग्रहीत करता है।
वेब स्क्रैपर्स उन वेबसाइटों से डेटा प्राप्त करने के काम आते हैं जो एपीआई प्रदान नहीं करते हैं। वे डेटा साइंस, साइबर सिक्योरिटी, फ्रंटएंड और बैकएंड डेवलपमेंट जैसे क्षेत्रों में लोकप्रिय हैं।
Go. में वेब स्क्रैपिंग
गो में, विभिन्न वेब स्क्रैपिंग पैकेज हैं। लोकप्रिय लोगों में गोक्वेरी, कोली और क्रोमडीपी शामिल हैं।
क्रोमडीपी एक सेलेनियम जैसा वेब ड्राइवर पैकेज है। यह निर्भरता के बिना गो में क्रोम डेवलपर टूल प्रोटोकॉल का समर्थन करता है।
कोली एक वेब स्क्रैपिंग-विशिष्ट पुस्तकालय है जिसे गोक्वेरी का उपयोग करके बनाया गया है। लेकिन Go में वेबसाइटों को स्क्रैप करने का सबसे तेज़ विकल्प goquery है।
गोक्वेरी क्या है?
CSS लाइब्रेरी, jQuery, ने प्रेरित करने में मदद की गोक्वेरी. यह एक गो लाइब्रेरी है जो पर आधारित है नेट/एचटीएमएल पैकेज, जो एक HTML5-अनुपालक टोकनेज़र और पार्सर लागू करता है। यह कैस्केडिया पैकेज का भी उपयोग करता है, जो नेट/एचटीएमएल द्वारा प्रदान किए गए पार्सर के उपयोग के लिए सीएसएस चयनकर्ताओं को लागू करता है।
गोक्वेरी स्थापित करना
Goquery इंस्टॉल करने के लिए अपने टर्मिनल में नीचे दी गई कमांड चलाएँ। यदि आपको कोई त्रुटि मिलती है, तो अपने गो संस्करण को अपडेट करने का प्रयास करें।
जाओ github.com/PuerkitoBio/goquery प्राप्त करें
वेब स्क्रैपिंग प्रक्रिया
आप समग्र स्क्रैपिंग प्रक्रिया को तीन छोटे कार्यों में विभाजित कर सकते हैं:
- HTTP अनुरोध बनाना।
- चयनकर्ताओं और लोकेटरों का उपयोग करना आवश्यक डेटा प्राप्त करने के लिए।
- आगे की प्रक्रिया के लिए डेटाबेस या डेटा संरचनाओं में डेटा सहेजना।
गो में HTTP अनुरोध करना
आप HTTP अनुरोध भेज सकते हैं नेट/http पैकेज, जिसमें गो मानक पुस्तकालय शामिल है।
पैकेट मुख्य
आयात "नेट/http"
आयात "लॉग"
आयात "एफएमटी"समारोहमुख्य() {
वेबयूआरएल:= "https://news.ycombinator.com/"
प्रतिक्रिया, त्रुटि: = http. प्राप्त करें (वेबयूआरएल)
अगर गलती!= शून्य {
लॉग। फैटॉलन (गलती)
} वरनाअगर प्रतिक्रिया। स्टेटसकोड == 200 {
एफएमटी Println ("हम इसे स्क्रैप कर सकते हैं")
} वरना {
लॉग। Fatalln ("इसे परिमार्जन न करें")
}
}
एचटीटीपी। पाना एक प्रतिक्रिया शरीर और एक त्रुटि देता है। प्रतिक्रिया। स्थिति का कोड अनुरोध-प्रतिक्रिया स्थिति कोड है।
HTTP अनुरोध करने पर, यदि प्रतिक्रिया स्थिति कोड है 200 आप वेबसाइट को स्क्रैप करने के लिए आगे बढ़ सकते हैं।
Goquery का उपयोग करके आवश्यक डेटा प्राप्त करना
वेबसाइट HTML प्राप्त करना
सबसे पहले, आपको प्रतिक्रिया से सादे HTML को पार्स करना होगा (प्रतिक्रिया.शरीर) वेबपेज का प्रतिनिधित्व करने वाला एक संपूर्ण दस्तावेज़ ऑब्जेक्ट प्राप्त करने के लिए:
दस्तावेज़, त्रुटि: = goquery. NewDocumentFromReader (response. शरीर)
अगर गलती!= शून्य {
लॉग। फैटॉलन (गलती)
}
अब आप वेबपेज की संरचना और सामग्री तक पहुँचने के लिए दस्तावेज़ ऑब्जेक्ट का उपयोग कर सकते हैं।
HTML से आवश्यक तत्वों का चयन
आपके द्वारा निकाले जाने वाले डेटा की संरचना की जांच करने के लिए आपको वेबपेज का निरीक्षण करना होगा। यह आपको इसे एक्सेस करने के लिए एक चयनकर्ता बनाने में मदद करेगा।
चयनकर्ताओं और लोकेटरों का उपयोग करके, आप उस HTML को निकाल सकते हैं जिसकी आपको आवश्यकता है पाना दस्तावेज़ वस्तु की विधि।
पाना विधि उस तत्व का पता लगाने के लिए एक सीएसएस चयनकर्ता लेती है जिसमें आपके लिए आवश्यक डेटा होता है:
दस्तावेज़। ढूँढें ("tr.athing")
उपरोक्त कोड चयनकर्ता से मेल खाने वाला केवल पहला HTML तत्व देता है, या यदि कोई मेल नहीं है तो एक खाली सूची देता है।
HTML से अनेक तत्वों का चयन
अधिकांश समय, आप अपने चयनकर्ता से मेल खाने वाले सभी HTML तत्वों को लाना चाहेंगे।
आप HTML में सभी मेल खाने वाले तत्वों का चयन कर सकते हैं प्रत्येक मान की विधि कि पाना() रिटर्न। प्रत्येक विधि दो मापदंडों के साथ एक फ़ंक्शन लेती है: एक सूचकांक और प्रकार का चयनकर्ता *गोक्वेरी चयन.
दस्तावेज़। ढूँढें ("tr.athing")। प्रत्येक (समारोह(अनुक्रमणिका पूर्णांक, चयनकर्ता *goquery. चयन) {
/* यहां प्रक्रिया चयनकर्ता */
})
फ़ंक्शन बॉडी में, आप HTML से इच्छित विशिष्ट डेटा का चयन कर सकते हैं। इस मामले में, आपको पृष्ठ सूचियों की प्रत्येक पोस्ट के लिंक और शीर्षक की आवश्यकता होती है। उपयोग पाना तत्वों के सेट को कम करने और टेक्स्ट या विशेषता मान निकालने के लिए चयनकर्ता पैरामीटर की विधि।
दस्तावेज़। ढूँढें ("tr.athing")। प्रत्येक (समारोह(अनुक्रमणिका पूर्णांक, चयनकर्ता *goquery. चयन) {
शीर्षक: = चयनकर्ता। ढूँढें ("टीडी। शीर्षक")। पाठ ()
लिंक, मिला: = चयनकर्ता। Find("a.titlelink").Attr("href")
})
उपरोक्त कोड कॉल करता है मूलपाठ से परिणाम की विधि चयनकर्ता पाना एक टेबल सेल की सामग्री को निकालने के लिए। विशेषताओं का चयन करना—जैसे लिंक और छवि URL—के लिए आपको इसका उपयोग करना होगा अतत्र तरीका। यह विधि एक मान भी लौटाती है जो यह दर्शाता है कि क्या विशेषता बिल्कुल मौजूद है।
वेब पेज से किसी भी तत्व और विशेषताओं को चुनने के लिए प्रक्रिया समान है।
पाना विधि बहुत शक्तिशाली है, जिससे HTML तत्वों का चयन और पता लगाने के लिए कई प्रकार के संचालन की अनुमति मिलती है। आप इन्हें goquery दस्तावेज़ में देख सकते हैं।
स्क्रैप किए गए डेटा को सहेजना
लिंक विशेषता और शीर्षक स्ट्रिंग हैं जिन्हें आप वेरिएबल को असाइन कर सकते हैं। वास्तविक परिदृश्यों में, आप हेरफेर के लिए डेटाबेस या डेटा संरचना में सहेज रहे होंगे। अक्सर, एक साधारण कस्टम संरचना पर्याप्त होगी।
फ़ील्ड के साथ एक स्ट्रक्चर बनाएं शीर्षक और लिंक और संरचना प्रकार धारण करने के लिए structs का एक टुकड़ा।
प्रकार जानकारी struct {
जोड़ना डोरी
शीर्षक डोरी
}
जानकारी := बनाना([]जानकारी, 0)
एक बार जब आप स्ट्रक्चर और स्लाइस बना लेते हैं, तो डॉक्यूमेंट मेथड फंक्शन के बॉडी में, उस फंक्शन में स्लाइस को पॉप्युलेट करें जिसे आप फाइंड मेथड में पास करते हैं। नई डेटा संरचनाओं को तत्काल करने के लिए संरचना प्रकार का उपयोग करें, प्रत्येक में एक परिणाम होता है।
जानकारी = संलग्न(जानकारी, सूचना{
शीर्षक: शीर्षक,
लिंक: लिंक,
})
यह प्रकार जोड़ता है जानकारी(संरचना) को जानकारी(टुकड़ा) जिससे आप अपनी इच्छानुसार डेटा में हेरफेर कर सकते हैं।
स्लाइस को प्रिंट करने से पता चलता है कि आपने वेबसाइट को सफलतापूर्वक स्क्रैप कर दिया है और स्लाइस को पॉप्युलेट कर दिया है।
एफएमटी प्रिंट्लन (जानकारी)
स्क्रैप किए गए डेटा को स्थानीय कैश में सहेजना उचित है ताकि आप वेबपेज के सर्वर को जरूरत से ज्यादा हिट न करें। यह न केवल ट्रैफ़िक को कम करेगा बल्कि आपके ऐप को तेज़ करेगा क्योंकि यह अनुरोध करने और वेबसाइटों को स्क्रैप करने की तुलना में स्थानीय डेटा को पुनः प्राप्त करने के लिए तेज़ है।
गो में कई डेटाबेस पैकेज हैं जिनका उपयोग आप डेटा को बचाने के लिए कर सकते हैं। डेटाबेस/एसक्यूएल पैकेज SQL डेटाबेस का समर्थन करता है। NoSQL डेटाबेस क्लाइंट भी हैं जैसे मोंगोडीबी गो ड्राइवर, और सर्वर रहित डेटाबेस जैसे FaunaDB का उपयोग कर FaunaDB ड्राइवर.
गो में वेब स्क्रैपिंग का सार
यदि आप किसी वेबसाइट से डेटा को परिमार्जन करने का प्रयास कर रहे हैं, तो goquery शुरू करने के लिए एक उत्कृष्ट स्थान है। लेकिन यह एक शक्तिशाली पैकेज है जो केवल वेब स्क्रैपिंग से कहीं अधिक कर सकता है। आप आधिकारिक परियोजना प्रलेखन में इसकी अधिक कार्यक्षमता के बारे में जान सकते हैं।
वेब स्क्रैपिंग विभिन्न प्रौद्योगिकी क्षेत्रों में एक महत्वपूर्ण कौशल है और यह आपकी कई परियोजनाओं के दौरान काम आएगा।
Go. में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग कॉन्सेप्ट्स को कैसे लागू करें
आगे पढ़िए
संबंधित विषय
- प्रोग्रामिंग
- वेब विकास
- प्रोग्रामिंग
लेखक के बारे में
गुडनेस एक तकनीकी लेखक, बैकएंड डेवलपर और डेटा विश्लेषक हैं, जो इस आकर्षक क्षेत्र की खोज करते हुए विभिन्न तकनीकी विषयों को सरल बनाते हैं।
हमारे समाचार पत्र के सदस्य बनें
तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!
सब्सक्राइब करने के लिए यहां क्लिक करें