पायथन वेब क्रॉलर ट्यूटोरियल: अनुरोधों से प्लेॉराइट
Senior Web Scraping Engineer
TL;DR:
- एक Python वेब क्रॉलर एक कतार है जिसमें नियम होते हैं। यह एक या अधिक URL से शुरू होता है, खोजे गए लिंक को सामान्य बनाता है, डुप्लिकेट को अस्वीकृत करता है, दायरे को लागू करता है, और हर पृष्ठ के साथ क्या हुआ इसे रिकॉर्ड करता है।
- Requests और Beautiful Soup सर्वर-जनित पृष्ठों के लिए सही आधार हैं। ये क्रॉल को तेज रखते हैं और विफलताओं को निरीक्षण करने में आसान बनाते हैं।
- Playwright JavaScript शाखा पर है, हर URL पर नहीं। केवल उन पृष्ठों को रेंडर करें जिनकी आवश्यक सामग्री प्रारंभिक प्रतिक्रिया से अनुपस्थित है।
- Scrapeless Scraping Browser क्रॉलर प्रक्रिया से ब्राउज़र निष्पादन को स्थानांतरित करता है। जब प्रबंधित सत्र और गतिशील रेंडरिंग मुख्य संचालन लागत बन जाते हैं, तो यह उपयोगी है।
एक क्रॉलर यह तय करता है कि वह अगला कहां जाएगा जो उसने अभी प्राप्त किया है। इससे URL नीति, कतार की स्थिति, और डिडुप्लीकेशन किसी भी एकल CSS सेलेक्टर से अधिक महत्वपूर्ण हो जाते हैं।
यह ट्यूटोरियल डिजाइन को परतों में बनाता है: स्थिर पृष्ठों के लिए साधारण HTTP, क्लाइंट-साइड सामग्री के लिए ब्राउज़र रेंडरिंग, फिर स्थानीय Chromium बाधा बन जाने पर प्रबंधित ब्राउज़र निष्पादन।
Python वेब क्रॉलर क्या है?
एक Python वेब क्रॉलर एक प्रोग्राम है जो बीज सेट के लिंक का पालन करके पृष्ठों को खोजता है। वेब स्क्रेपिंग एक ज्ञात पृष्ठ से फ़ील्ड निकालता है; क्रॉलिंग उस पृष्ठ का पता लगाती है जो मौजूद है और उन्हें बाद की प्रक्रिया के लिए निर्धारित करती है।
ये दो काम अक्सर एक प्रक्रिया साझा करते हैं, लेकिन इन्हें डिजाइन में अलग रखा जाना चाहिए। खोज मौलिक URLs और संबंध मेटाडेटा लौटाती है। निष्कर्षण रिकॉर्ड लौटाता है जैसे शीर्षक, मूल्य, तिथि, या सामग्री पाठ।
क्रॉलर पाइपलाइन को संक्षेप में
| चरण | इनपुट | आउटपुट | मुख्य नियम |
|---|---|---|---|
| बीज | प्रारंभिक URLs | प्रारंभिक कतार | स्पष्ट रूप से अनुमत डोमेन का उपयोग करें |
| प्राप्त करें | मौलिक URL | HTTP प्रतिक्रिया या रेंडर किया हुआ पृष्ठ | एक स्पष्ट टाइमआउट सेट करें |
| खोजें | HTML दस्तावेज़ | उम्मीदवार लिंक | सापेक्ष URLs को हल करें |
| सामान्यीकृत करें | उम्मीदवार URL | मौलिक URL | फ़्रैगमेंट हटाएं और होस्ट casing को सामान्य बनाएं |
| फ़िल्टर करें | मौलिक URL | स्वीकार किया गया या अस्वीकृत URL | डोमेन, पथ, और गहराई दायरे को लागू करें |
| डिडुप्लीकेट करें | स्वीकार किया गया URL | नया कतार आइटम या मौजूदा रिकॉर्ड | मौलिक रूप पर कुंजी बनाएं |
| निकालें | पृष्ठ सामग्री | संरचित रिकॉर्ड | वैकल्पिक फ़ील्ड को नल के रूप में मानें |
| संग्रहीत करें | रिकॉर्ड प्लस उत्पत्ति | स्थायी डेटासेट | स्रोत URL और संग्रह समय को बनाए रखें |
पथ A: स्थिर पृष्ठों के लिए Requests और Beautiful Soup
जब प्रारंभिक प्रतिक्रिया पहले से ही लिंक और फ़ील्ड रखती है जिनकी क्रॉलर को आवश्यकता होती है, तो Requests उपयुक्त है। फिर Beautiful Soup HTML को खोजने योग्य पेड़ में बदल देता है।
ब्रेड्थ-फर्स्ट ट्रैवर्सल के लिए एक deque से शुरू करें, दौरा किए गए मौलिक URLs के लिए एक सेट, और एक कठिन पृष्ठ सीमा। सापेक्ष लिंक को urljoin से हल करें, फिर समाधान के बाद होस्ट नाम की जांच करें। URI सामान्य संरचना यह परिभाषित करती है कि सापेक्ष संदर्भ और फ़्रैगमेंट URL मॉडल में कैसे फिट होते हैं।
केवल सफल फ़ेच के बाद ही एक URL को दौरा किया गया के रूप में चिह्नित न करें। इसे तब चिह्नित करें जब यह कतार में प्रवेश करता है; अन्यथा दो पेरेंट पृष्ठ एक ही चाइल्ड को शेड्यूल कर सकते हैं इससे पहले कि कोई भी अनुरोध पूरा हो।
डिडुप्लीकेशन से पहले URLs को सामान्यीकृत करें
URL सामान्यीकरण निर्धारित करता है कि क्या /products, /products#reviews, और एक समान पूर्ण URL एक क्रॉल लक्ष्य बनता है या तीन। एक संवेदनशील सामान्यीकरणकर्ता को चाहिए:
- स्कीम और होस्टनेम को लोअरकेस करें;
- फ़्रैगमेंट हटाएं;
.और..पथ खंडों को हल करें;- डिफ़ॉल्ट पोर्ट्स को हटाएं;
- प्रश्न पैरामीटर को बनाए रखें जब तक कि उनका अर्थ ज्ञात न हो;
- शेड्यूल करने से पहले गैर-HTTP स्कीम को अस्वीकृत करें।
WHATWG URL मानक आधुनिक ब्राउज़रों द्वारा लागू किए गए पार्सर व्यवहार को दस्तावेज़ित करता है। सामान्यीकरण को संवेदनशील रखना क्योंकि एक अज्ञात प्रश्न पैरामीटर को हटाने से विशिष्ट संसाधनों का पतन हो सकता है।
दायरे, गहराई, और क्रॉल बजट को लागू करें
एक क्रॉलर को अपने पहले अनुरोध को भेजने से पहले स्पष्ट रोकने के नियमों की आवश्यकता होती है। अनुमत मेज़बानों को परिभाषित करें, स्वीकार किए गए पथ उपसर्ग, अधिकतम गहराई, और अधिकतम पृष्ठ। गहराई वह लिंक किनारों की संख्या है जो बीज से है, साइट वर्गीकरण का प्रॉक्सी नहीं।
प्रत्येक कतार आइटम के साथ खोजने वाले माता-पिता को स्टोर करें। इससे एक URL ग्राफ बनेगा जो यह बताने में मदद करता है कि क्यों एक पृष्ठ को दौरा किया गया और अनंत कैलेंडर याfacet-navigation पैटर्न को दृश्यमान बनाता है।
Scrapeless के साथ स्क्रैपिंग शुरू करें
Scrapeless के साथ अपनी वेब स्क्रैपिंग और स्वचालन कार्यप्रवाह को शक्ति दें!
आज साइन अप करें और $5 फ्री क्रेडिट प्राप्त करें — कोई क्रेडिट कार्ड की आवश्यकता नहीं।Scrapeless डैशबोर्ड में अब अपना फ्री क्रेडिट क्लेम करें।
रोबोट और साइट नीति का सम्मान करें
रोबोट निर्देश क्रॉल योजना का एक हिस्सा हैं, न कि बाद में ध्यान देने योग्य। रोबोट्स बहिष्करण प्रोटोकॉल परिभाषित करता है कि क्रॉलर robots.txt नियमों का कैसे पता लगाते और व्याख्या करते हैं।
संबंधित नियमों और कानूनों की जांच करें, और जहां उचित हो, क्रॉलर की पहचान करें, और संग्रह को केवल अनुमत सार्वजनिक पृष्ठों तक सीमित रखें। एक रोबोट नियम अनुमति तंत्र नहीं है, इसलिए एक अनुमत पथ कानूनी और संविदात्मक समीक्षा को प्रतिस्थापित नहीं करता है।
पथ बी: जावास्क्रिप्ट पृष्ठों के लिए प्ले राइट
प्ले राइट उपयुक्त है जब आवश्यक लिंक या फ़ील्ड केवल क्लाइंट-साइड निष्पादन के बाद ही दिखाई देते हैं। प्रारंभिक प्रतिक्रिया असंपूर्ण होने के बाद उन पृष्ठों को एक ब्राउज़र शाखा पर रूट करें।
domcontentloaded को प्रारंभिक नेविगेशन घटना के रूप में उपयोग करें, फिर डेटा से बंधी विशिष्ट पृष्ठ स्थिति की प्रतीक्षा करें। प्ले राइट लोकेटर मार्गदर्शन अनुशंसा करता है कि जब वे लक्षित से मेल खाते हैं, तो भूमिका, लेबल, पाठ, और अन्य उपयोगकर्ता-सामना करने वाले गुणों का उपयोग करें।
निकासी के बाद प्रत्येक पृष्ठ और ब्राउज़र संदर्भ को बंद करें। ब्राउज़र संसाधनों को हल्के HTTP अनुरोधों के समान अनियंत्रित लूप में नहीं रहना चाहिए।
कब ब्राउज़र निष्पादन को स्क्रेपलेस में स्थानांतरित करें
स्क्रेपलेस स्क्रेपिंग ब्राउज़र तब उपयोगी होता है जब क्रॉलर के ब्राउज़र शाखा को प्रबंधित सत्रों, भौगोलिक रूटिंग, और उत्पादन ब्राउज़र क्षमता की आवश्यकता होती है। स्क्रेपिंग ब्राउज़र त्वरित प्रारंभ वर्तमान कनेक्शन पथ को कवर करता है।
क्रॉलर की कतार, यूआरएल नियम, निकासी योजना, और भंडारण को एप्लिकेशन नियंत्रण के तहत रखें। केवल ब्राउज़र निष्पादन परत को स्थानांतरित करें। यह अलगाव स्थिर पृष्ठों को अनुरोधों पर रहने की अनुमति देता है जबकि डायनेमिक पृष्ठ प्रबंधित ब्राउज़र का उपयोग करते हैं।
फिर से शुरू करने के लिए क्रॉल राज्य संग्रहीत करें
Queued, प्रगतिशील, पूर्ण, अस्वीकृत, और विफल राज्यों को अलग से बनाए रखें। कCanonical URL, डिस्कवरी माता-पिता, गहराई, फ़ेच विधि, प्रतिक्रिया स्थिति, सामग्री हैश, और पार्सर संस्करण को संग्रहीत करें।
एक सामग्री हैश अपरिवर्तित पृष्ठों को फिर से डाउनस्ट्रीम प्रसंस्करण में प्रवेश करने से रोकता है। एक पार्सर संस्करण स्कीमा परिवर्तनों को ट्रेस करने योग्य बनाता है जब एक चयनकर्ता अद्यतन ऐतिहासिक आउटपुट को बदले।
स्क्रेपलेस मूल्य निर्धारण की समीक्षा करें जब आप उन पृष्ठों का हिस्सेदारी मापें जो वास्तव में ब्राउज़र निष्पादन की आवश्यकता रखते हैं। स्क्रेपिंग ब्राउज़र सर्वश्रेष्ठ प्रथाओं की गाइड बताता है कि एक बार जब पृष्ठ उस सीमा को पार कर लेते हैं तो ब्राउज़र-सहायता प्राप्त कार्यों को विश्वसनीय रूप से कैसे संचालित किया जाए।
निष्कर्ष
एक विश्वसनीय पायथन क्रॉलर एक नियंत्रित यूआरएल ग्राफ है। अनुरोधों और सुंदर सूप के साथ शुरू करें, डुप्लिकेशन से पहले सामान्यीकृत करें, अनुसूची से पहले क्षेत्र का प्रवर्तन करें, और केवल जावास्क्रिप्ट-निर्भर पृष्ठों को प्ले राइट या स्क्रेपलेस स्क्रेपिंग ब्राउज़र के माध्यम से रूट करें।
क्या आप एक नियंत्रित क्रॉल पाइपलाइन बनाने के लिए तैयार हैं?
Discord या Telegram पर वेब-डेटा पाइपलाइनों का निर्माण करने वाले डेवलपर्स में शामिल हों। app.scrapeless.com पर एक खाता बनाएं और अपने वास्तविक यूआरएल सेट के खिलाफ ब्राउज़र शाखा को मापें।
सामान्य प्रश्न
प्रश्न: क्रॉलिंग और स्क्रेपिंग में क्या अंतर है?
क्रॉलिंग पृष्ठों को खोजता है और अनुसूचित करता है; स्क्रेपिंग एक पृष्ठ से फ़ील्ड निकालता है। एक पाइपलाइन दोनों कर सकती है, लेकिन अलग-अलग राज्यों और आउटपुट के होने से संचालित करना आसान हो जाता है।
प्रश्न: क्या वेब क्रॉलिंग वैध है?
जब यह अनुमत सार्वजनिक पृष्ठों तक पहुंचता है, तो वेब क्रॉलिंग कानूनी हो सकती है, लेकिन आवश्यकताएं क्षेत्राधिकार और साइट के अनुसार भिन्न होती हैं। उपयोग के मामले के लिए लागू नियमों, गोपनीयता दायित्वों, और कानूनी सलाह की समीक्षा करें।
प्रश्न: क्या पायथन क्रॉलर को प्रॉक्सी की आवश्यकता होती है?
जब अधिकृत संग्रह को भौगोलिक रूटिंग या वितरित ईग्रेस की आवश्यकता होती है, तो प्रॉक्सी उपयोगी होती है। यह क्रॉलर के दायरे और नीति का सम्मान करने के दायित्व को नहीं बदलता है।
प्रश्न: क्रॉलर को एक्सेस डिनाइड पृष्ठ से कैसे निपटना चाहिए?
पृष्ठ को एक अलग पहुंच परिणाम के रूप में रिकॉर्ड करें, उस यूआरएल के लिए निकासी रोकें, और कार्यप्रवाह को जारी रखने से पहले सत्र, ईग्रेस, और प्राधिकरण अनुमानों की समीक्षा करें।
प्रश्न: जब DOM में परिवर्तन होता है तो क्या होता है?
सहेजे गए फ़िक्स्चर के खिलाफ खोज और निकासी चयनकर्ताओं की फिर से जांच करें, पार्सर संस्करण को अपडेट करें, और नए स्कीमा की पुष्टि होने तक अनुपस्थित फ़ील्ड को नल योग्य मानें।
प्रश्न: क्रॉलर को कितनी समवर्तीता का उपयोग करना चाहिए?
प्रत्येक होस्ट पर तीन से अधिक कार्यकर्ताओं के साथ शुरू करें और जब साइट नीति या सर्वर व्यवहार की आवश्यकता हो, तो सीमा को कम करें। ब्राउज़र कार्यों को एक अलग, कड़ा क्षमता पूल का उपयोग करना चाहिए।
प्रश्न: क्या क्रॉलर बिना किसी एआई एजेंट के चल सकता है?
हाँ। कतार, यूआरएल नीति, HTTP क्लाइंट, ब्राउज़र शाखा, और भंडारण पाइपलाइन बिना किसी मॉडल के सामान्य पायथन सेवाओं के रूप में चल सकते हैं।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



