डेटा एकत्र करने और उसके ऊपर कस्टम डेटासेट बनाने के लिए वेब स्क्रैपिंग सर्वोत्तम डेटा संग्रह विधियों में से एक है।
डेटा-संचालित निर्णय लेने के इस युग में उच्च गुणवत्ता वाले डेटासेट का होना आवश्यक है। हालाँकि कई सार्वजनिक रूप से उपलब्ध डेटासेट हैं, कभी-कभी आपको ऐसे कस्टम डेटासेट बनाने की आवश्यकता हो सकती है जो आपकी विशिष्ट आवश्यकताओं को पूरा करते हों। वेब स्क्रैपिंग आपको वेबसाइटों से डेटा निकालने की अनुमति देती है। फिर आप इस डेटा का उपयोग अपना कस्टम डेटासेट बनाने के लिए कर सकते हैं।
डेटा संग्रह विधियों का अवलोकन
डेटा संग्रहण के विभिन्न तरीके हैं। इनमें मैन्युअल डेटा प्रविष्टि, एपीआई, सार्वजनिक डेटासेट और वेब स्क्रैपिंग शामिल हैं। प्रत्येक विधि के अपने फायदे और सीमाएँ हैं।
मैन्युअल डेटा प्रविष्टि में समय लगता है और मानवीय त्रुटियों की संभावना होती है, विशेष रूप से बड़े पैमाने पर डेटा संग्रह के लिए। हालाँकि, यह छोटे पैमाने पर डेटा संग्रह के लिए सहायक है और जब डेटा अन्य माध्यमों से अनुपलब्ध हो।
एपीआई डेवलपर्स को संरचित तरीके से डेटा तक पहुंचने और पुनर्प्राप्त करने की अनुमति देता है। वे अक्सर वास्तविक समय या नियमित रूप से अद्यतन जानकारी प्रदान करते हैं। हालाँकि, एपीआई पहुंच सीमित हो सकती है, प्रमाणीकरण की आवश्यकता हो सकती है, या उपयोग प्रतिबंध हो सकते हैं।
सार्वजनिक डेटासेट विषयों और डोमेन की एक विस्तृत श्रृंखला को कवर करते हैं। वे पहले से एकत्र किए जाते हैं और अक्सर एक संरचित प्रारूप में आते हैं, जिससे वे आसानी से पहुंच योग्य हो जाते हैं। जब आवश्यक डेटा उपलब्ध डेटासेट के साथ संरेखित हो जाता है तो वे समय और प्रयास बचा सकते हैं। हालाँकि, वे हमेशा आपकी विशिष्ट आवश्यकताओं को पूरा नहीं कर सकते हैं या अद्यतित नहीं हो सकते हैं।
वेब स्क्रैपिंग उन वेबसाइटों से डेटा एकत्र करने का एक तरीका प्रदान करती है जो एपीआई की पेशकश नहीं करती हैं या जिनकी पहुंच सीमित है। यह अनुकूलन, स्केलेबिलिटी और कई स्रोतों से डेटा इकट्ठा करने की क्षमता की अनुमति देता है। हालाँकि, इसके लिए प्रोग्रामिंग कौशल, HTML संरचना का ज्ञान और कानूनी और नैतिक दिशानिर्देशों का पालन आवश्यक है।
डेटा संग्रहण के लिए वेब स्क्रैपिंग का चयन करना
वेब स्क्रैपिंग आपको सीधे वेब पेजों से जानकारी निकालने में सक्षम बनाती है, जिससे आपको डेटा स्रोतों की एक विस्तृत श्रृंखला तक पहुंच मिलती है। यह आपको यह भी नियंत्रण देता है कि कौन सा डेटा निकालना है और उसकी संरचना कैसे करनी है। इससे आपकी विशिष्ट आवश्यकताओं को पूरा करने और आपके प्रोजेक्ट के लिए आवश्यक सटीक जानकारी निकालने के लिए स्क्रैपिंग प्रक्रिया को तैयार करना आसान हो जाता है।
डेटा स्रोत की पहचान करना
वेब स्क्रैपिंग में पहला कदम डेटा स्रोत की पहचान करना है। यह वह वेबसाइट है जिसमें वह डेटा है जिसे आप स्क्रैप करना चाहते हैं। डेटा स्रोत चुनते समय, सुनिश्चित करें कि आप स्रोत की सेवा की शर्तों के अनुरूप हैं। यह आलेख डेटा स्रोत के रूप में IMDb (इंटरनेट मूवी डेटाबेस) का उपयोग करेगा।
अपना वातावरण स्थापित करना
एक आभासी वातावरण स्थापित करें. फिर आवश्यक लाइब्रेरी स्थापित करने के लिए निम्न कमांड चलाएँ।
पिप इंस्टाल अनुरोध ब्यूटीफुलसूप4 पांडा
आप इसका उपयोग करेंगे अनुरोध HTTP अनुरोध करने के लिए लाइब्रेरी। सुंदरसूप4 HTML सामग्री को पार्स करने और वेब पेजों से डेटा निकालने के लिए। अंत में, आप उपयोग करेंगे पांडा डेटा में हेरफेर और विश्लेषण करना।
पूर्ण स्रोत कोड a में उपलब्ध है गिटहब रिपॉजिटरी.
वेब स्क्रैपिंग स्क्रिप्ट लिखना
अपनी स्क्रिप्ट में स्थापित लाइब्रेरीज़ को उनके द्वारा प्रदान किए गए कार्यों का उपयोग करने में सक्षम होने के लिए आयात करें।
आयात अनुरोध
से bs4 आयात सुंदर सूप
आयात समय
आयात पांडा जैसा पी.डी.
आयात दोबारा
समय और दोबारा मॉड्यूल पायथन मानक लाइब्रेरी का हिस्सा हैं। इसलिए, अलग-अलग इंस्टॉलेशन की आवश्यकता नहीं है।
समय जबकि स्क्रैपिंग प्रक्रिया में देरी होगी दोबारा निपट लेंगे नियमित अभिव्यक्ति.
आप लक्ष्य वेबसाइट को खंगालने के लिए ब्यूटीफुल सूप का उपयोग करें.
एक फ़ंक्शन बनाएं जो आपके लक्षित URL पर HTTP GET अनुरोध भेजेगा। इसके बाद इसे प्रतिक्रिया की सामग्री को पुनः प्राप्त करना चाहिए और एक बनाना चाहिए सुंदर सूप HTML सामग्री से ऑब्जेक्ट.
डीईएफ़सूप प्राप्त करें(यूआरएल, पैरामीटर=कोई नहीं, हेडर=कोई नहीं):
प्रतिक्रिया = अनुरोध.प्राप्त करें (यूआरएल, पैराम्स=पैराम्स, हेडर=हेडर)
सूप = सुंदर सूप (प्रतिक्रिया.सामग्री, "एचटीएमएल.पार्सर")
वापस करना शोरबा
अगला कदम से जानकारी निकालना है सुंदर सूप वस्तु।
जानकारी निकालने के लिए आपको अपनी लक्षित वेबसाइट संरचना को समझने की आवश्यकता है। इसमें वेबसाइट के HTML कोड का निरीक्षण करना शामिल है। इससे आपको उन तत्वों और विशेषताओं की पहचान करने में मदद मिलेगी जिनमें वह डेटा है जिसे आप निकालना चाहते हैं। अपनी लक्षित वेबसाइट का निरीक्षण करने के लिए, वेब ब्राउज़र में उसका लिंक खोलें और उस वेबपेज पर नेविगेट करें जिसमें वह डेटा है जिसे आप स्क्रैप करना चाहते हैं।
फिर वेबपेज पर राइट-क्लिक करें और चुनें निरीक्षण संदर्भ मेनू से. इससे ब्राउज़र के डेवलपर टूल खुल जाएंगे.
वेबपेज के HTML कोड में, उन तत्वों को देखें जिनमें वह डेटा है जिसे आप स्क्रैप करना चाहते हैं। आपके लिए आवश्यक डेटा से जुड़े HTML टैग, कक्षाओं और विशेषताओं पर ध्यान दें। आप BeautifulSoup का उपयोग करके डेटा निकालने के लिए चयनकर्ता बनाने के लिए उनका उपयोग करेंगे। ऊपर स्क्रीनशॉट में आप देख सकते हैं कि फिल्म का टाइटल अंदर है लिस्टर-आइटम-हेडर कक्षा। प्रत्येक सुविधा का निरीक्षण करें जिसे आप निकालना चाहते हैं।
एक फ़ंक्शन बनाएं जो से जानकारी निकालेगा सुंदर सूप वस्तु। इस मामले में, फ़ंक्शन उपयुक्त HTML टैग और वर्ग विशेषताओं का उपयोग करके फिल्म का शीर्षक, रेटिंग, विवरण, शैली, रिलीज की तारीख, निर्देशक और सितारे ढूंढता है।
डीईएफ़Extract_movie_data(फ़िल्म):
शीर्षक = मूवी.ढूंढें("एच3", वर्ग_="लिस्टर-आइटम-हेडर")।पाना("ए")।मूलपाठ
रेटिंग = मूवी.फाइंड("div", वर्ग_="रेटिंग्स-आईएमडीबी-रेटिंग").मजबूत.पाठ
विवरण = मूवी.ढूंढें("div", वर्ग_="सूची-आइटम-सामग्री")।सब ढूँढ़ो("पी")[1].text.strip()
शैली_तत्व = मूवी.खोजें("अवधि", वर्ग_="शैली")
शैली = शैली_तत्व.पाठ.पट्टी() अगर शैली_तत्व अन्यकोई नहीं
रिलीज़_दिनांक = मूवी.खोजें("अवधि", वर्ग_="लिस्टर-आइटम-वर्ष टेक्स्ट-म्यूट अनबोल्ड".text.strip()
निर्देशक_स्टार = मूवी.खोजें("पी", वर्ग_="पाठ-मौन")।सब ढूँढ़ो("ए")
निदेशक = [व्यक्ति.पाठ के लिए व्यक्ति में निर्देशक_सितारे[:-1]]
सितारे = [व्यक्ति.पाठ के लिए व्यक्ति में निर्देशक_सितारे[-1:]]
मूवी_डेटा = {
"शीर्षक": शीर्षक,
"रेटिंग": रेटिंग,
"विवरण": विवरण,
"शैली": शैली,
"रिलीज़ की तारीख": रिलीज़ की तारीख,
"निर्देशक": निदेशक,
"सितारे": सितारे
}
वापस करना मूवी_डेटा
अंत में, एक फ़ंक्शन बनाएं जो उपरोक्त दो फ़ंक्शन का उपयोग करके वास्तविक स्क्रैपिंग करेगा। इसमें एक वर्ष और अधिकतम संख्या में फिल्में लगेंगी जिन्हें आप स्क्रैप करना चाहते हैं।
डीईएफ़स्क्रैप_आईएमडीबी_मूवीज़(वर्ष, सीमा):
बेस_यूआरएल = " https://www.imdb.com/search/title"
हेडर = {"स्वीकार-भाषा": "एन-यूएस, एन; क्यू=0.9"}
फिल्में = []
प्रारंभ = 1
जबकि लेन (फिल्में) पैरामीटर = {
"रिलीज़ की तारीख": वर्ष,
"क्रम से लगाना": "num_votes, विवरण",
"शुरू करना": शुरू
}
सूप = get_soup (बेस_यूआरएल, पैराम्स = पैराम्स, हेडर = हेडर)
मूवी_लिस्ट = सूप.फाइंड_ऑल("div", वर्ग_="लिस्टर-आइटम मोड-उन्नत")
अगर लेन (मूवी_सूची) == 0:
तोड़ना
के लिए फ़िल्म में मूवी_सूची:
मूवी_डेटा = एक्सट्रेक्ट_मूवी_डेटा (मूवी)
फिल्में.जोड़ें (मूवी_डेटा)
अगर लेन (फिल्में) >= सीमा:
तोड़ना
प्रारंभ += 50# IMDb प्रति पृष्ठ 50 फिल्में प्रदर्शित करता है
समय पर सोये(1) # सर्वर पर दबाव डालने से बचने के लिए विलंब जोड़ें
वापस करना चलचित्र
फिर कॉल करें def स्क्रैप_आईएमडीबी_मूवीज़ स्क्रैपिंग करने के लिए.
# 2023 में रिलीज़ 1000 फ़िल्में (या जितनी उपलब्ध हों) स्क्रैप करें
फिल्में = स्क्रैप_आईएमडीबी_मूवीज(2023, 1000)
अब आपने डेटा स्क्रैप कर लिया है.
अगला कदम इस डेटा से एक डेटासेट बनाना है।
स्क्रैप किए गए डेटा से डेटासेट बनाना
पांडा का उपयोग करके एक डेटाफ़्रेम बनाएं स्क्रैप किए गए डेटा से.
डीएफ = पीडी. डेटाफ़्रेम (फिल्में)
फिर, डेटा प्रीप्रोसेसिंग और सफाई करें। इस स्थिति में, लुप्त मान वाली पंक्तियों को हटा दें। फिर रिलीज़ डेट से वर्ष निकालें और इसे संख्यात्मक में बदलें। अनावश्यक कॉलम हटाएँ. परिवर्तित करें रेटिंग संख्यात्मक करने के लिए स्तंभ. अंत में, इसमें से गैर-वर्णमाला वर्ण हटा दें शीर्षक कॉलम।
डीएफ = डीएफ.ड्रॉपना()
डीएफ['रिहाई का वर्ष'] = डीएफ['रिलीज़ की तारीख'].str.निकालें(r'(\d{4})')
डीएफ['रिहाई का वर्ष'] = pd.to_numeric (df['रिहाई का वर्ष'],
त्रुटियाँ='जबरदस्ती').astype('इंट64')
डीएफ = डीएफ.ड्रॉप(['रिलीज़ की तारीख'], अक्ष=1)
डीएफ['रेटिंग'] = pd.to_numeric (df['रेटिंग'], त्रुटियाँ='जबरदस्ती')
डीएफ['शीर्षक'] = डीएफ['शीर्षक']।आवेदन करना(लैम्ब्डा एक्स: पुनः उप(r'\W+', ' ', एक्स))
बाद में अपने प्रोजेक्ट में उपयोग करने के लिए डेटा को एक फ़ाइल में संग्रहीत करें।
df.to_csv("imdb_movies_dataset.csv", सूचकांक=असत्य)
अंत में, यह देखने के लिए कि यह कैसा दिखता है, अपने डेटासेट की पहली पांच पंक्तियों को प्रिंट करें।
डीएफ.हेड()
आउटपुट नीचे स्क्रीनशॉट में दिखाया गया है:
अब आपके पास वेब स्क्रैपिंग के माध्यम से प्राप्त एक डेटासेट है।
अन्य पायथन पुस्तकालयों का उपयोग करके वेब स्क्रैपिंग
ब्यूटीफुल सूप एकमात्र पायथन लाइब्रेरी नहीं है जिसका उपयोग आप वेब स्क्रैपिंग के लिए कर सकते हैं। वहाँ अन्य पुस्तकालय भी हैं। प्रत्येक के अपने फायदे और सीमाएं हैं। यह पता लगाने के लिए उन पर शोध करें कि आपके उपयोग के मामले में कौन सा सबसे उपयुक्त है।