पायथन के साथ वेब स्क्रैपिंग: एक शुरुआती गाइड
स्क्रैपलेस वेब अनलॉकर जब साधारण HTTP पुनर्प्राप्ति अपर्याप्त होती है, तो एक पायथन स्क्रैपिंग वर्कफ़्लो को सार्वजनिक-पृष्ठ HTML प्रदान कर सकता है।
TL;DR
- एक पहला पायथन स्क्रैपर एक अनुमति प्राप्त पृष्ठ को लक्षित करना चाहिए। लूप जोड़ने से पहले एक रिकॉर्ड और एक पृष्ठ-पहचान मार्कर परिभाषित करें।
- अनुरोध करना, पार्स करना, चुनना, मान्य करना और स्टोर करना अलग-अलग चरण हैं। उनके आउटपुट को दृश्य बनाए रखना विफलताओं को ढूंढना आसान बनाता है।
- ब्यूटीफुलसूप JavaScript नहीं चलाता। निर्धारण करने से पहले मूल प्रतिक्रिया की जांच करें कि क्या रेंडरिंग आवश्यक है।
- अच्छा आउटपुट पैतृकता बनाए रखता है। एक स्थिर स्रोत URL और पर्याप्त संदर्भ सहेजें ताकि यह स्पष्ट हो सके कि प्रत्येक रिकॉर्ड कहां से आया है।
एक शुरुआती पायथन के साथ वेब स्क्रैपिंग सीख सकता है एक सार्वजनिक पृष्ठ से कुछ फ़ील्ड इकट्ठा करके और एक संरचित रिकॉर्ड को सहेजकर। काम अनुमति और क्षेत्र के साथ शुरू होता है, बड़े क्रॉलर के साथ नहीं। एक ऐसा पृष्ठ चुनें जिसमें आप पहुंच सकते हैं, एक शीर्षक और लिंक की पहचान करें, और लिखें कि एक मान्य आउटपुट पंक्ति कैसी दिखती है। फिर एक पार्सर या ब्राउज़र चुनने से पहले वास्तविक प्रतिक्रिया की जांच करें।
क्रम सीधा है: एक पृष्ठ का अनुरोध करें, सत्यापित करें कि यह इच्छित पृष्ठ है, उसके HTML को पार्स करें, फ़ील्ड चुनें, उन्हें सामान्यीकृत और मान्य करें, फिर परिणाम को स्टोर करें। प्रत्येक चरण स्वतंत्र रूप से विफल हो सकता है। एक सफल कनेक्शन गलत दस्तावेज़ लौटा सकता है; एक पार्सर सही दस्तावेज़ पढ़ सकता है लेकिन सामग्री के बजाय नेविगेशन से मेल खाते हैं; एक CSV लेखक चेतावनी के बिना अध पड़े पंक्तियों को सहेज सकता है। यह गाइड उन चरणों को अलग रखती है।
एक अनुमति प्राप्त लक्ष्य चुनें और एक रिकॉर्ड परिभाषित करें।
एक स्थिर सार्वजनिक पृष्ठ चुनें जिसका आकार मध्यम हो और एक स्पष्ट संरचना हो। प्रमाणित क्षेत्रों, व्यक्तिगत रिकॉर्ड या पूरे डोमेन के साथ शुरू करने से बचें। एक रिकॉर्ड स्कीमा लिखें जैसे शीर्षक, कैनोनिकल लिंक, श्रेणी, स्रोत पृष्ठ, और अवलोकन समय। निर्धारित करें कि कौन से फ़ील्ड आवश्यक हैं। शीर्षक और कैनोनिकल लिंक आवश्यक हो सकते हैं, जबकि श्रेणी वैकल्पिक हो सकती है। यह छोटा अनुबंध आपको बताता है कि स्क्रैपर को आउटपुट लिखने से पहले क्या प्रमाणित करना चाहिए।
साइट के प्रवेश नियमों, शर्तों और आपके उपयोग से संबंधित किसी भी रोबोट मार्गदर्शन की समीक्षा करें। सार्वजनिक दृश्यता सभी अनुमति या गोपनीयता प्रश्नों का समाधान नहीं करती है। सीखने के दौरान अनुरोध मात्रा को कम रखें और घोषित उद्देश्य से अप्रासंगिक डेटा इकट्ठा न करें। यदि कोई आधिकारिक API वही अनुमति प्राप्त डेटा प्रदान करता है, तो इसका संरचित अनुबंध पृष्ठ निकासी से बेहतर प्रारंभिक बिंदु हो सकता है।
फेचिंग से पहले एक पृष्ठ-पहचान मार्कर पर निर्णय लें: एक विशिष्ट शीर्षक, कैनोनिकल URL पैटर्न, या एक स्थिर कंटेनर जो लक्षित पृष्ठ से संबंधित है। एक सामान्य 200 स्थिति पर्याप्त नहीं है। HTTP अप्रासंगिक मानक प्रोटोकॉल स्थिति को स्पष्ट करता है, लेकिन आपकी एप्लिकेशन को अभी भी लौटाए गए संसाधन और व्यावसायिक सामग्री की पहचान करनी होगी।
प्रतिक्रिया लाएं और निरीक्षण करें।
पायथन का 'अनुरोध' पुस्तकालय एक HTTP GET भेज सकता है, अपने दस्तावेज़ व्यवहार के तहत पुनर्निर्देशों का पालन कर सकता है, और अंतिम URL, स्थिति, हेडर और सामग्री को उजागर कर सकता है। इसका आधिकारिक त्वरित प्रारंभ मूल प्रतिक्रिया हैंडलिंग दिखाता है। एक सीमित टाइमआउट का उपयोग करें और यह मानने से पहले सामग्री प्रकार की जांच करें कि सामग्री HTML है। पूरी पृष्ठ या किसी भी प्रमाणीकरण को प्रिंट करने के बजाय डिबगिंग के लिए एक संक्षिप्त, संविदान लेखन का एक छोटा नमूना रखें।
ब्रह्मांड के दृश्य के साथ लौटाए गए HTML की तुलना करें। एक फ़ील्ड के लिए खोजें जिसे आप स्क्रीन पर देख सकते हैं। यदि यह प्रतिक्रिया में मौजूद है, तो एक सामान्य HTML पार्सर आगे बढ़ सकता है। यदि प्रतिक्रिया में केवल एक मूल तत्व और स्क्रिप्ट संदर्भ हैं, तो नेटवर्क अनुरोधों का निरीक्षण करें या अनुमति मिलने पर एक रेंडरिंग पथ का उपयोग करें। केवल CSS चयनकर्ताओं को बदलकर अभाव डेटा को ठीक करने की कोशिश न करें; एक चयनकर्ता उस नोड को नहीं खोज सकता है जो नहीं बनाया गया है।
अंतिम URL रिकॉर्ड करें क्योंकि पुनर्निर्देश सापेक्ष लिंक और पृष्ठ पहचान को प्रभावित करते हैं। एक साइट एक अलग स्थान पर सहमति या पहुँच पृष्ठ भेज सकती है। केवल पहचान मार्कर और अपेक्षित मीडिया प्रकार पास होने के बाद ही स्क्रिप्ट को सामग्री पार्स करना चाहिए। यह गेट एक तर्कसंगत दिखने वाले खाली CSV को रोकता है जो वास्तव में प्रमाणीकरण विफलता का प्रतिनिधित्व करता है।
HTML पार्स करें और संबंधित फ़ील्ड निकालें।
ब्यूटीफुलसूप उपलब्ध मार्कअप को एक वृक्ष में बदल देता है। इसका ब्यूटीफुल सूप प्रलेखन टैग नेविगेशन, टेक्स्ट निष्कर्षण, विशेषताओं, और CSS चयनकर्ताओं को कवर करता है। पहले एक रिकॉर्ड कंटेनर चुनें, फिर इसके अंदर फ़ील्ड खोजें। स्कोपिंग एक कार्ड में एक लापता लिंक को दूसरे कार्ड के शीर्षक के साथ जोड़ने से रोकता है।
विवरण संरचना व्यक्त करने वाले चयनकर्ता चुनें। एक लेख तत्व, एक कार्ड के भीतर एक शीर्षक, या एक स्थिर डेटा विशेषता आमतौर पर दृश्य वर्गों की एक श्रृंखला से स्पष्ट होती है। व्हाइटस्पेस सामान्यीकरण के साथ पाठ पढ़ें, फिर अंतिम प्रतिक्रिया URL के खिलाफ सापेक्ष href मान हल करें। यदि कोई फ़ील्ड अनुपस्थित हो सकता है, तो इसे एक वैकल्पिक मान के रूप में प्रस्तुत करें। एक अनुपस्थित मूल्य को शून्य में न बदलें, क्योंकि शून्य एक वास्तविक व्यावसायिक मूल्य है जिसका अलग अर्थ है।
एक प्रतिनिधि पृष्ठ और एक किनारे के मामले के खिलाफ चयनकों का परीक्षण करें, जैसे एक कार्ड जो वैकल्पिक श्रेणी को याद करता है। परिणामी रिकॉर्डों का निरीक्षण करें, न कि केवल उनकी संख्या। एक गणना स्थिर रह सकती है जबकि चयनित तत्व वास्तविक रिकॉर्ड से अनुशंसाओं या नेविगेशन लिंक में बदल सकते हैं। एक स्रोत ID या URL स्टोर करें जो आपको पृष्ठांकन शुरू करने के बाद डुप्लिकेट को पहचानने की अनुमति देता है।
CSV लिखें और परिणाम की जांच करें।
पायथन का csv मॉड्यूल पंक्तियाँ लिखता है जबकि साधारण स्ट्रिंग संयोजन जो नियमों को संभाल नहीं करता है। आउटपुट फ़ाइल को मॉड्यूल के लिए उपयुक्त नई लाइन हैंड्लिंग के साथ खोलें और एक एन्कोडिंग निर्दिष्ट करें। एक शीर्षलेख पंक्ति लिखें जो स्कीमा से मेल खाती हो। लेखक को कॉल करने से पहले हर रिकॉर्ड को मान्य करें ताकि अस्वीकृत पंक्तियाँ एक अलग गणना या रिपोर्ट में दृश्य हों।
फाइल को सहेजने के बाद, इसे फिर से खोलें और कुछ रिकॉर्ड की जांच करें। पुष्टि करें कि लिंक पूर्ण हैं, आवश्यक फ़ील्ड भरे हुए हैं, और पाठ किसी अल्पविराम या पंक्ति विराम पर कट गया नहीं है। जब परियोजना को किसी रिकॉर्ड पर दोबारा दौरा करना या उसका ऑडिट करना हो, तो स्रोत-पेज की जानकारी रखें। CSV निर्यात एक सुविधाजनक शुरुआती आर्टिफेक्ट है, लेकिन यह गारंटी नहीं देता कि मूल पृष्ठ अद्यतन था या कि प्रत्येक फ़ील्ड को सही ढंग से व्याख्यायित किया गया था।
एक सरल आउटपुट जांच चयनित कंटेनरों की संख्या को स्वीकार की गई पंक्तियों और अस्वीकार की गई पंक्तियों के साथ तुलनात्मक रूप से देख सकती है। यदि पांच कंटेनर चार स्वीकृत पंक्तियाँ उत्पन्न करते हैं, तो गायब पंक्ति की व्याख्या करें। यह छोटी सुलह तुरंत सैकड़ों पन्नों को इकट्ठा करने की तुलना में अधिक मूल्यवान है क्योंकि यह यह दिखाती है कि क्या निकासी नियम विश्वसनीय है।
पृष्ठांकण और दर्शाना जानबूझकर जोड़ें
एक बार जब एक पृष्ठ काम करता है, तो उसके वास्तविक अगले लिंक या दस्तावेज़ित पृष्ठ संख्या पैरामीटर का पालन करें। दौरे की गई पृष्ठ URLs और रिकॉर्ड IDs को बनाए रखें ताकि लूप या पुनरावृत्त पृष्ठ का पता लगाया जा सके। सुरक्षा के लिए सीमित पृष्ठ सीमा निर्धारित करें, लेकिन प्राकृतिक रोकने की स्थिति को भी परिभाषित करें: कोई अगला लिंक नहीं, एक अंत कर्सर, या एक स्पष्ट खाली स्थिति। यह मान न लें कि पृष्ठ संख्या हमेशा बढ़ती है या कि प्रत्येक साइट एक ही क्वेरी पैरामीटर का उपयोग करती है।
यदि किसी पृष्ठ को वास्तव में JavaScript निष्पादन की आवश्यकता है, तो वेब अनलॉकर JS रेंडर गाइड दस्तावेज़ ब्राउज़र-समर्थित सार्वजनिक पृष्ठों की पुनर्प्राप्ति। एक पायथन प्रोग्राम सेवा प्रतिक्रिया और पृष्ठ पहचान को मान्य करने के बाद लौटाए गए एचटीएमएल का उसी रिकॉर्ड लॉजिक के साथ पार्स कर सकता है। यह अधिग्रहण परत को बदलता है; यह चयनकर्ताओं, स्कीमा जांचों, या स्रोत अनुमतियों की आवश्यकता को समाप्त नहीं करता है।
The वेब अनलॉकर उत्पाद पृष्ठ प्रबंधित यूआरएल पुनर्प्राप्ति का वर्णन करता है, जबकि संबंधित BeautifulSoup कार्यप्रविधि लेख स्थिर और गतिशील स्रोतों के बीच अंतर। केवल उस चरण को अपग्रेड करें जिसे सबूत अधूरा दिखाते हैं। एक शुरुआती का पहला सफल स्क्रैपर इतना छोटा बना रहना चाहिए कि प्रत्येक पंक्ति को समझाया जा सके।
निष्कर्ष
पाइथन के साथ वेब स्क्रैपिंग सीखना सबसे आसान होता है जब इसे एक प्रमाणित एकल-पृष्ठ पाइपलाइन के रूप में माना जाए। एक अनुमत स्रोत चुनें, एक पंक्ति परिभाषित करें, प्रतिक्रिया की पुष्टि करें, रिकॉर्ड के भीतर पार्स और चयन करें, फ़ील्ड्स को मान्य करें, और सुरक्षित आउटपुट का निरीक्षण करें। केवल तभी पृष्ठांकन या रेंडरिंग जोड़ें जब पहली पंक्ति सही हो।
Verified Python डेटा प्रोजेक्ट शुरू करें
सही Scrapeless मार्ग के माध्यम से एक सार्वजनिक पृष्ठ प्राप्त करें और रिकॉर्ड के एक छोटे सेट को मान्य करें।
आज ही साइन अप करें और प्राप्त करें $5 में मुक्त क्रेडिट — कोई क्रेडिट कार्ड की आवश्यकता नहीं.
अपने $5 क्रेडिट का दावा करें →अक्सर पूछे जाने वाले प्रश्न
शुरुआती को सबसे पहले क्या स्क्रेपर करना चाहिए?
एक सार्वजनिक पृष्ठ चुनें जिसका उपयोग करने की अनुमति है, जिसमें एक सरल दोहराया ढांचा और एक स्पष्ट रिकॉर्ड स्कीमा है।पैगिनेशन या बड़े पैमाने पर संग्रह के प्रयास करने से पहले एक शीर्षक और लिंक निकालें।
क्या मुझे हर पायथन स्क्रैपर के लिए BeautifulSoup की आवश्यकता है?
नहीं। यदि स्रोत एक अधिकृत संरचित एपीआई प्रदान करता है, तो उस प्रतिक्रिया को सीधे पार्स करें। BeautifulSoup तब उपयोगी है जब आवश्यक डेटा HTML में हो और आप पेड़ नेविगेशन या CSS चयनकों की आवश्यकता रखते हों।
मेरी Requests प्रतिक्रिया में दिखाई देने वाली सामग्री क्यों गायब है?
यह पृष्ठ JavaScript के निष्पादन के बाद सामग्री उत्पन्न कर सकता है, या अनुरोध एक अलग पृष्ठ पर पहुँच गया हो सकता है। चुनिंदा चयन करने से पहले अंतिम URL, स्थिति, मीडिया प्रकार, और कच्चा सामग्री जांचें। जब लक्ष्य वास्तव में इसकी आवश्यकता हो तो अनुमति दिए गए नेटवर्क डेटा या रेंडरिंग पथ की जाँच करें।
क्या मुझे एक शुरुआती प्रोजेक्ट के लिए प्रॉक्सी का उपयोग करना चाहिए?
एक प्रॉक्सी सीखने के निष्कर्ष के लिए डिफ़ॉल्ट आवश्यकता नहीं है। एक अनुमोदित पृष्ठ से शुरू करें और सबसे सरल रास्ता चुने जो संपूर्ण सामग्री लौटाता है। एक प्रदाता-संबंधित नेटवर्क कॉन्फ़िगरेशन तब ही जोड़ें जब आपकी एक्सेस आवश्यकताएँ और साइट के नियम इसे सही ठहराते हैं।
क्या सार्वजनिक डेटा का स्वचालित संग्रह करना कानूनन वैध है?
कोई एकल उत्तर हर स्रोत या क्षेत्राधिकार पर लागू नहीं होता। लागू कानून, साइट शर्तें, गोपनीयता के कर्तव्य, कॉपीराइट, और संग्रह के उद्देश्य की समीक्षा करें। परियोजना को उस पहुंच और रखरखाव के दायरे में रखें जिसका उपयोग करने की आपको अनुमति है।