जब कोई एपीआई इसे नहीं काटेगा, तो आप हमेशा HTML को स्क्रैप करने का सहारा ले सकते हैं, और जंग आपकी मदद कर सकती है।
वेब स्क्रैपिंग वेब पेजों से बड़ी मात्रा में डेटा को जल्दी और कुशलता से इकट्ठा करने की एक लोकप्रिय तकनीक है। एपीआई के अभाव में, वेब स्क्रैपिंग अगला सबसे अच्छा तरीका हो सकता है।
रस्ट की गति और स्मृति सुरक्षा वेब स्क्रेपर्स के निर्माण के लिए भाषा को आदर्श बनाती है। रस्ट कई शक्तिशाली पार्सिंग और डेटा निष्कर्षण पुस्तकालयों का घर है, और इसकी मजबूत त्रुटि-संचालन क्षमताएं कुशल और विश्वसनीय वेब डेटा संग्रह के लिए उपयोगी हैं।
जंग में वेब स्क्रैपिंग
कई लोकप्रिय पुस्तकालय रस्ट में वेब स्क्रैपिंग का समर्थन करते हैं, जिनमें शामिल हैं reqwest, खुरचनी, चुनना, और html5ever. अधिकांश रस्ट डेवलपर्स अपने वेब स्क्रैपिंग के लिए रिक्वेस्ट और स्क्रैपर से कार्यक्षमता को जोड़ते हैं।
Reqwest लाइब्रेरी वेब सर्वरों को HTTP अनुरोध करने के लिए कार्यक्षमता प्रदान करती है। Reqwest रस्ट के बिल्ट-इन पर बनाया गया है अति क्रेट मानक HTTP सुविधाओं के लिए एक उच्च स्तरीय एपीआई प्रदान करते समय।
स्क्रैपर एक शक्तिशाली वेब स्क्रैपिंग लाइब्रेरी है जो HTML और XML दस्तावेज़ों को पार्स करती है और
CSS चयनकर्ताओं का उपयोग करके डेटा निकालता है और XPath एक्सप्रेशन।के साथ एक नया रस्ट प्रोजेक्ट बनाने के बाद कार्गो नया आदेश, जोड़ें reqwest और खुरचनी आपके के डिपेंडेंसी सेक्शन में क्रेट करता है कार्गो.टोमल फ़ाइल:
[निर्भरता]
reqwest = {संस्करण = "0.11", सुविधाएँ = ["ब्लॉकिंग"]}
खुरचनी = "0.12.0"
आप प्रयोग करेंगे reqwest को HTTP अनुरोध भेजें और खुरचनी विश्लेषण के लिए।
Reqwest के साथ वेबपृष्ठों को पुनः प्राप्त करना
विशिष्ट डेटा पुनर्प्राप्त करने के लिए वेबपृष्ठ को पार्स करने से पहले आप उसकी सामग्री के लिए अनुरोध भेजेंगे।
आप GET अनुरोध भेज सकते हैं और इसका उपयोग करके पृष्ठ के HTML स्रोत को पुनः प्राप्त कर सकते हैं मूलपाठ पर समारोह पाना का कार्य reqwest पुस्तकालय:
fnपुनर्प्राप्त_एचटीएमएल() -> डोरी {
होने देना प्रतिक्रिया = प्राप्त करें (" https://news.ycombinator.com".अनरैप().टेक्स्ट().अनरैप();
वापस करना जवाब;
}
पाना फ़ंक्शन वेबपेज पर अनुरोध भेजता है, और मूलपाठ फ़ंक्शन HTML का पाठ लौटाता है।
स्क्रेपर के साथ HTML पार्सिंग
पुनर्प्राप्त_एचटीएमएल फ़ंक्शन HTML का पाठ लौटाता है, और आपको आवश्यक विशिष्ट डेटा पुनर्प्राप्त करने के लिए HTML पाठ को पार्स करने की आवश्यकता होगी।
स्क्रैपर HTML के साथ इंटरैक्ट करने के लिए कार्यक्षमता प्रदान करता है एचटीएमएल और चयनकर्ता मॉड्यूल। एचटीएमएल मॉड्यूल दस्तावेज़ को पार्स करने के लिए कार्यक्षमता प्रदान करता है, और चयनकर्ता मॉड्यूल HTML से विशिष्ट तत्वों को चुनने के लिए कार्यक्षमता प्रदान करता है।
यहां बताया गया है कि आप पृष्ठ पर सभी शीर्षक कैसे प्राप्त कर सकते हैं:
उपयोग स्क्रैपर:: {एचटीएमएल, चयनकर्ता};
fnमुख्य() {
होने देना प्रतिक्रिया = अनुरोध:: अवरुद्ध:: प्राप्त करें (
" https://news.ycombinator.com/".अनरैप().टेक्स्ट().अनरैप();// HTML दस्तावेज़ को पार्स करें
होने देना doc_body = Html:: parse_document(&response);
// शीर्षक वर्ग वाले तत्वों का चयन करें
होने देना शीर्षक = चयनकर्ता:: पार्स (".टाइटलाइन".अनरैप ();
के लिए शीर्षक में doc_body.select(&शीर्षक) {
होने देना शीर्षक = शीर्षक। पाठ ()। संग्रह:: <वी.ई.सी<_>>();
प्रिंटल!("{}"शीर्षक [0])
}
}
parse_document का कार्य एचटीएमएल मॉड्यूल HTML टेक्स्ट को पार्स करता है, और पार्स का कार्य चयनकर्ता मॉड्यूल निर्दिष्ट सीएसएस चयनकर्ता के साथ तत्वों का चयन करता है (इस मामले में, शीर्षक कक्षा)।
के लिए लूप इन तत्वों से गुजरता है और प्रत्येक से टेक्स्ट के पहले ब्लॉक को प्रिंट करता है।
यहाँ ऑपरेशन का परिणाम है:
खुरचनी के साथ गुण का चयन
एक विशेषता मान का चयन करने के लिए, आवश्यक तत्वों को पहले की तरह पुनः प्राप्त करें और उपयोग करें attr टैग मान उदाहरण की विधि:
उपयोग अनुरोध:: अवरुद्ध:: प्राप्त करें;
उपयोग स्क्रैपर:: {एचटीएमएल, चयनकर्ता};fnमुख्य() {
होने देना प्रतिक्रिया = प्राप्त करें (" https://news.ycombinator.com".अनरैप().टेक्स्ट().अनरैप();
होने देना html_doc = Html:: parse_document(&response);
होने देना class_selector = चयनकर्ता:: पार्स (".टाइटलाइन".अनरैप ();के लिए तत्व में html_doc.चयन (और वर्ग_चयनकर्ता) {
होने देना लिंक_चयनकर्ता = चयनकर्ता:: पार्स ("ए".अनरैप ();
के लिए जोड़ना में तत्व। चयन करें (और लिंक_चयनकर्ता) {
अगरहोने देनाकुछ(href) = लिंक.वैल्यू().एटीआर ("href") {
प्रिंटल!("{}", एचआरईएफ़);
}
}
}
}
के साथ तत्वों का चयन करने के बाद शीर्षक कक्षा का उपयोग करना पार्स कार्य, द के लिए लूप उन्हें पार करता है। लूप के अंदर, कोड तब प्राप्त होता है ए टैग करता है और उसका चयन करता है href विशेषता के साथ attr समारोह।
मुख्य फ़ंक्शन इन लिंक को प्रिंट करता है, जिसके परिणामस्वरूप यह होता है:
आप रस्ट में परिष्कृत वेब एप्लिकेशन बना सकते हैं
हाल ही में, रस्ट वेब डेवलपमेंट के लिए फ्रंट-एंड से सर्वर-साइड ऐप डेवलपमेंट के लिए एक भाषा के रूप में अपनाया जा रहा है।
आप यू और पर्सी जैसे पुस्तकालयों के साथ फुल-स्टैक वेब एप्लिकेशन बनाने या सर्वर-साइड बनाने के लिए वेब असेंबली का लाभ उठा सकते हैं रस्ट इकोसिस्टम में एक्टिक्स, रॉकेट और लाइब्रेरी के होस्ट के साथ एप्लिकेशन जो वेब बनाने के लिए कार्यक्षमता प्रदान करते हैं अनुप्रयोग।