वेब से डेटा निकालने के लिए कई पायथन लाइब्रेरी और फ्रेमवर्क हैं। हर कोई एक विशेष उपकरण के साथ शुरू होता है जब तक उन्हें एहसास नहीं होता कि यह उनकी अगली परियोजना के लिए सबसे उपयुक्त नहीं हो सकता है। यद्यपि यह अत्यधिक संभावना नहीं है कि आप एक ही प्रोजेक्ट में सभी पायथन टूल का उपयोग करेंगे, आपको पता होना चाहिए कि आपके वेब स्क्रैपिंग टूलबॉक्स में कौन से काम रखना है।
यहां सबसे अच्छे पायथन लाइब्रेरी, फ्रेमवर्क और अन्य उपकरण हैं जो आपको वेब से डेटा को आसानी से परिमार्जन करने में मदद करेंगे।
1. सुंदर सूप
शुरुआती लोगों के लिए सर्वश्रेष्ठ वेब स्क्रैपिंग लाइब्रेरी के साथ सूची शुरू करना: सुंदर सूप। यह अनिवार्य रूप से एक उपकरण है जो दस्तावेज़ को पायथन ऑब्जेक्ट में बदलकर पार्स की गई HTML और XML फ़ाइलों से डेटा निकालता है।
सुंदर सूप की "सौंदर्य" इसकी सादगी में निहित है। इसे सेट करना आसान है और आप कर सकते हैं अपनी पहली वेब स्क्रैपिंग परियोजना के साथ आरंभ करें
मिनिटों में। सुंदर सूप एक HTML दस्तावेज़ से डेटा निकालने के लिए एक श्रेणीबद्ध दृष्टिकोण का उपयोग करता है। आप टैग, वर्ग, आईडी, नाम और अन्य HTML विशेषताओं का उपयोग करके तत्वों को निकाल सकते हैं।हालांकि, ब्यूटीफुल सूप से अधिक की उम्मीद करना बहुत दूर ले जाएगा। मिडलवेयर और अन्य उन्नत कार्यात्मकताओं जैसे प्रॉक्सी रोटेशन या मल्टी-थ्रेडिंग के लिए कोई अंतर्निहित समर्थन नहीं है। सुंदर सूप के साथ, आपको HTTP अनुरोध भेजने, डाउनलोड किए गए दस्तावेज़ को पार्स करने और स्क्रैप की गई जानकारी को आउटपुट फ़ाइल में निर्यात करने के लिए पुस्तकालयों की आवश्यकता होती है।
2. अनुरोध
अनुरोध निस्संदेह HTTP अनुरोधों को संभालने के लिए सबसे अधिक इस्तेमाल किया जाने वाला पायथन पुस्तकालय है। टूल अपनी टैगलाइन पर कायम है: HTTP फॉर ह्यूमन™। यह GET और POST से लेकर PATCH और DELETE तक कई HTTP अनुरोध प्रकारों का समर्थन करता है। इतना ही नहीं, आप हेडर और प्रतिक्रियाओं सहित अनुरोध के लगभग हर पहलू को नियंत्रित कर सकते हैं।
यदि यह आसान लगता है, तो निश्चिंत रहें क्योंकि अनुरोध उन्नत उपयोगकर्ताओं को अपनी कई विशेषताओं के साथ पूरा करता है। आप एक अनुरोध के साथ प्रयोग कर सकते हैं और इसके हेडर को अनुकूलित कर सकते हैं, POST का उपयोग करके सर्वर पर एक फ़ाइल अपलोड कर सकते हैं, और टाइमआउट, रीडायरेक्ट और सत्र, अन्य चीजों को संभाल सकते हैं।
जब वेब स्क्रैपिंग की बात आती है तो अनुरोध आमतौर पर सुंदर सूप से जुड़ा होता है क्योंकि अन्य पायथन ढांचे में HTTP अनुरोधों को संभालने के लिए अंतर्निहित समर्थन होता है। वेब पेज के लिए HTML प्राप्त करने के लिए, आप सर्वर को GET अनुरोध भेजने के लिए अनुरोधों का उपयोग करेंगे, फिर प्रतिक्रिया से टेक्स्ट डेटा निकालेंगे और इसे ब्यूटीफुल सूप पर भेजेंगे।
3. स्क्रैपी
जैसा कि नाम से पता चलता है, स्क्रेपी बड़े पैमाने पर वेब स्क्रेपर्स विकसित करने के लिए एक पायथन फ्रेमवर्क है। यह वेब से डेटा निकालने के लिए स्विस-सेना-चाकू है। स्क्रेपी अनुरोध भेजने और प्रॉक्सी को लागू करने से लेकर डेटा निष्कर्षण और निर्यात तक सब कुछ संभालता है।
ब्यूटीफुल सूप के विपरीत, स्क्रेपी की असली शक्ति इसका परिष्कृत तंत्र है। लेकिन उस जटिलता को आपको भयभीत न होने दें। गति, दक्षता और सुविधाओं के मामले में स्क्रेपी इस सूची में सबसे कुशल वेब स्क्रैपिंग ढांचा है। यह चयनकर्ताओं के साथ आता है जो आपको XPath या CSS तत्वों का उपयोग करके HTML दस्तावेज़ से डेटा का चयन करने देता है।
एक अतिरिक्त लाभ वह गति है जिस पर स्क्रेपी अनुरोध भेजता है और डेटा निकालता है। यह अतुल्यकालिक रूप से अनुरोधों को भेजता और संसाधित करता है, और यही इसे अन्य वेब स्क्रैपिंग टूल से अलग करता है।
बुनियादी सुविधाओं के अलावा, आपको मिडलवेयर के लिए भी समर्थन मिलता है, जो कि हुक का एक ढांचा है जो डिफ़ॉल्ट स्क्रेपी तंत्र में अतिरिक्त कार्यक्षमता को इंजेक्ट करता है। आप जावास्क्रिप्ट-चालित वेबसाइटों को स्क्रेपी के साथ बॉक्स से बाहर नहीं निकाल सकते हैं, लेकिन आप मिडलवेयर जैसे उपयोग कर सकते हैं आपके प्रोजेक्ट में उस कार्यक्षमता को लागू करने के लिए स्क्रैपी-सेलेनियम, स्क्रैपी-स्प्लैश और स्क्रैपी-स्क्रैपिंगबी।
अंत में, जब आप डेटा निकालना समाप्त कर लेते हैं, तो आप इसे विभिन्न फ़ाइल स्वरूपों में निर्यात कर सकते हैं; सीएसवी, जेएसओएन, और एक्सएमएल, कुछ नाम करने के लिए।
स्क्रेपी कई कारणों में से एक है कि क्यों पायथन वेब स्क्रैपिंग में किसी के लिए भी सबसे अच्छी प्रोग्रामिंग भाषा है। अपना पहला स्क्रेपी प्रोजेक्ट सेट करना कुछ समय लग सकता है, खासकर यदि आपके पास पायथन कक्षाओं और रूपरेखाओं के साथ अनुभव नहीं है। स्क्रेपी के वर्कफ़्लो को कई फाइलों में और शुरुआती लोगों के लिए अलग किया जाता है, जो अवांछित जटिलता के रूप में सामने आ सकते हैं।
4. सेलेनियम
यदि आप गतिशील, जावास्क्रिप्ट-प्रस्तुत सामग्री को परिमार्जन करना चाहते हैं, तो सेलेनियम वह है जो आपको चाहिए। एक क्रॉस-प्लेटफ़ॉर्म वेब टेस्टिंग फ्रेमवर्क के रूप में, सेलेनियम आपको HTML, CSS और जावास्क्रिप्ट को प्रस्तुत करने और आवश्यक चीज़ों को निकालने में मदद करता है। आप हार्ड-कोडिंग कीबोर्ड और माउस क्रियाओं द्वारा वास्तविक उपयोगकर्ता इंटरैक्शन की नकल भी कर सकते हैं, जो एक पूर्ण गेम-चेंजर है।
सेलेनियम वेब ड्राइवर का उपयोग करके एक ब्राउज़र उदाहरण बनाता है और पृष्ठ को लोड करता है। सेलेनियम द्वारा समर्थित कुछ लोकप्रिय ब्राउज़र Google क्रोम, मोज़िला फ़ायरफ़ॉक्स, ओपेरा, माइक्रोसॉफ्ट एज, ऐप्पल सफारी और इंटरनेट एक्सप्लोरर हैं। यह पृष्ठ पर HTML तत्वों से सामग्री खोजने और निकालने के लिए स्क्रेपी चयनकर्ताओं के समान CSS और XPath लोकेटरों को नियुक्त करता है।
यदि आप पायथन के साथ अनुभवी नहीं हैं, लेकिन अन्य प्रोग्रामिंग भाषाओं को जानते हैं, तो आप सेलेनियम का उपयोग सी #, जावास्क्रिप्ट, पीएचपी, पर्ल, रूबी और जावा के साथ कर सकते हैं।
एकमात्र सीमा यह है कि सेलेनियम पृष्ठभूमि में एक वेब ब्राउज़र लॉन्च करता है, स्क्रैपर को निष्पादित करने के लिए आवश्यक संसाधनों में काफी वृद्धि होती है, स्क्रेपी या सुंदर सूप की तुलना में. लेकिन अतिरिक्त सुविधाओं को देखते हुए सेलेनियम तालिका में लाता है, यह पूरी तरह से उचित है।
5. urllib
पायथन urllib लाइब्रेरी आपके वेब स्क्रैपिंग शस्त्रागार में एक सरल लेकिन आवश्यक उपकरण है। यह आपको अपनी पायथन लिपियों में URL को संभालने और संसाधित करने देता है।
URL संशोधन urllib का उपयुक्त व्यावहारिक अनुप्रयोग है। विचार करें कि आप एक से अधिक पृष्ठों वाली वेबसाइट स्क्रैप कर रहे हैं और अगले पृष्ठ पर जाने के लिए URL के एक हिस्से को संशोधित करने की आवश्यकता है।
urllib आपको URL को पार्स करने और इसे कई भागों में विभाजित करने में मदद कर सकता है, जिसे आप तब संशोधित कर सकते हैं और एक नया URL बनाने के लिए अनपार्स कर सकते हैं। स्ट्रिंग्स को पार्स करने के लिए लाइब्रेरी का उपयोग करते समय एक ओवरकिल की तरह लग सकता है, urllib उन लोगों के लिए एक लाइफसेवर है जो मज़े के लिए वेब स्क्रेपर्स को कोड करते हैं और डेटा संरचनाओं की बारीकियों में नहीं जाना चाहते हैं।
साथ ही, यदि आप किसी वेबसाइट के robots.txt की जांच करना चाहते हैं, जो Google क्रॉलर और अन्य स्क्रेपर्स के लिए एक्सेस नियमों वाली एक टेक्स्ट फ़ाइल है, तो urllib इसमें भी आपकी मदद कर सकता है। यह अनुशंसा की जाती है कि आप किसी वेबसाइट के robots.txt का पालन करें और केवल अनुमत पृष्ठों को स्क्रैप करें।
6. JSON, CSV और XML लाइब्रेरी
चूंकि सुंदर सूप या सेलेनियम में डेटा निर्यात करने के लिए अंतर्निहित सुविधाएं नहीं हैं, इसलिए आपको पाइथन लाइब्रेरी की आवश्यकता होगी डेटा को JSON में निर्यात करें, सीएसवी, या एक्सएमएल फ़ाइल। सौभाग्य से, इसे प्राप्त करने के लिए आप बहुत सारे पुस्तकालय कर सकते हैं, और जेएसओएन, सीएसवी, और एक्सएमएल फाइलों के लिए क्रमशः जेएसओएन, सीएसवी, और एक्सएमएल जैसे सबसे बुनियादी लोगों की सिफारिश की जाती है।
ऐसे पुस्तकालय आपको एक फ़ाइल बनाने, उसमें डेटा जोड़ने और फिर अंत में फ़ाइल को अपने स्थानीय भंडारण या दूरस्थ सर्वर पर निर्यात करने की अनुमति देते हैं।
7. मैकेनिकल सूप
मैकेनिकल सूप? क्या यह एक सस्ता ब्यूटीफुल सूप रिपॉफ है? नहीं, से प्रेरित मशीनीकरण करना और पायथन अनुरोधों और सुंदर सूप के आधार पर, मैकेनिकल सूप आपको मानव व्यवहार को स्वचालित करने और वेब पेज से डेटा निकालने में मदद करता है। आप इसे सुंदर सूप और सेलेनियम के बीच आधे रास्ते पर विचार कर सकते हैं। एकमात्र कैच? यह जावास्क्रिप्ट को हैंडल नहीं करता है।
जबकि नाम समान हैं, मैकेनिकल सूप का सिंटैक्स और वर्कफ़्लो बेहद अलग हैं। आप मैकेनिकल सूप का उपयोग करके एक ब्राउज़र सत्र बनाते हैं और जब पेज डाउनलोड हो जाता है, तो आप ब्यूटीफुल सूप के तरीकों का उपयोग करते हैं पाना() और सब ढूँढ़ो() HTML दस्तावेज़ से डेटा निकालने के लिए।
मैकेनिकल सूप की एक और प्रभावशाली विशेषता यह है कि यह आपको स्क्रिप्ट का उपयोग करके फॉर्म भरने की सुविधा देता है। यह विशेष रूप से सहायक होता है जब आपको उस पृष्ठ पर जाने के लिए किसी फ़ील्ड (उदाहरण के लिए एक खोज बार) में कुछ दर्ज करने की आवश्यकता होती है जिसे आप परिमार्जन करना चाहते हैं। मैकेनिकल सूप का अनुरोध प्रबंधन शानदार है क्योंकि यह स्वचालित रूप से रीडायरेक्ट को संभाल सकता है और एक पृष्ठ पर लिंक का अनुसरण कर सकता है, जिससे आपको ऐसा करने के लिए मैन्युअल रूप से कोडिंग करने के प्रयास की बचत होती है।
चूंकि यह ब्यूटीफुल सूप पर आधारित है, इसलिए इन दोनों पुस्तकालयों की कमियों में एक महत्वपूर्ण ओवरलैप है। उदाहरण के लिए, डेटा आउटपुट, प्रॉक्सी रोटेशन और जावास्क्रिप्ट रेंडरिंग को संभालने के लिए कोई अंतर्निहित विधि नहीं है। एकमात्र सुंदर सूप मुद्दा मैकेनिकल सूप ने उपचार किया है जो अनुरोधों को संभालने के लिए समर्थन है, जिसे पायथन अनुरोध पुस्तकालय के लिए एक आवरण कोडिंग करके हल किया गया है।
पायथन में वेब स्क्रैपिंग मेड ईज़ी
वेब को स्क्रैप करने के लिए पायथन एक शक्तिशाली प्रोग्रामिंग भाषा है, इसमें कोई संदेह नहीं है, लेकिन उपयोग किए जाने वाले उपकरण समस्या का केवल एक हिस्सा हैं। स्क्रेपर को कोडिंग करते समय लोगों को सबसे प्रमुख समस्या का सामना करना पड़ता है, वह HTML दस्तावेज़ पदानुक्रम सीख रहा है।
यदि आप उन्नत वेब स्क्रेपर्स विकसित करना चाहते हैं, तो वेब पेज की संरचना को समझना और किसी तत्व को जल्दी से कैसे खोजना है, यह जानना आवश्यक है।