स्क्रैपी क्या है? पायथन क्रॉलिंग, स्पाइडर और पाइपलाइन्स

स्क्रैपी क्या है?

स्क्रैपलेस वेब अनलॉकर प्रबंधित एक्सेस हैंडलिंग और वैकल्पिक जावास्क्रिप्ट रेंडरिंग के साथ सार्वजनिक वेब सामग्री को प्राप्त करता है।

स्क्रैपी एक ओपन-सोर्स पायथन फ्रेमवर्क है जो वेबसाइटों को क्रॉल करने और संरचित डेटा निकालने के लिए है। एक स्क्रैपी प्रोजेक्ट यह निर्धारित करता है कि किस URL को विजिट करना है, प्रत्येक प्रतिक्रिया को कैसे इंटरप्रिट करना है, और कौन से रिकॉर्ड उत्पन्न करना हैं। फ्रेमवर्क उन नियमों के चारों ओर अनुरोधों का समन्वय करता है, ताकि आप बिना हर वेबसाइट के लिए एक अलग कतार और डाउनलोडर लिखे एक क्रॉल बना सकें।

महत्वपूर्ण विभाजन कार्य के दायरे का है। एक दस्तावेज़ उठाना एक HTTP-क्लाइंट कार्य है। श्रेणी लिंक का पालन करना, विवरण पृष्ठों को प्रोसेस करना, और सुसंगत रिकॉर्डों का निर्यात करना एक क्रॉलिंग कार्य है। स्क्रैपी दूसरे मामले में फिट बैठता है। यह उन जिम्मेदारियों को नामांकित घटकों के साथ देता है जिन्हें आप अलग से बदल और परीक्षण कर सकते हैं।

TL;DR

  • स्क्रैपी मल्टी-पेज निकासी को स्पाइडरों के चारों ओर व्यवस्थित करता है। एक स्पाइडा क्रॉल व्यवहार को निर्दिष्ट करता है और डाउनलोड किए गए उत्तरों को इंटरप्रिट करता है।
  • स्क्रैपी URL खोज को आइटम प्रोसेसिंग से अलग करता है। शेड्यूलिंग और पाइपलाइन्स कार्यप्रवाह के विभिन्न भागों को संभालते हैं।
  • स्क्रैपी स्वयं पृष्ठ जावास्क्रिप्ट नहीं चलाता है। एक अधिग्रहण पथ चुनने से पहले यह पुष्टि करें कि आवश्यक डेटा वास्तव में कहाँ दिखाई देता है।
  • एक पूर्ण क्रॉल को अभी भी रिकॉर्ड मान्यकरण की आवश्यकता होती है। सफल डाउनलोड यह साबित नहीं करते हैं कि आवश्यक फ़ील्ड निकाली गई थीं।

स्क्रैपी में क्या शामिल है?

स्क्रैपी में अनुरोधों को शेड्यूल करने, उत्तरों को डाउनलोड करने, स्पाइडर कॉल बैक को निमंत्रण देने और निकाले गए आइटमों को प्रोसेस करने के लिए मशीनरी शामिल है। स्क्रैपी फ्रेमवर्क अवलोकन एक क्रॉलर का वर्णन करता है जो लिंक का पालन कर सकता है और उन पृष्ठों से संरचित रिकॉर्ड उत्सर्जित कर सकता है जिनका वह दौरा करता है।

एक स्पाइडा प्रोजेक्ट-विशिष्ट भाग है। एक सार्वजनिक कैटलॉग के लिए, स्पाइडा श्रेणी पृष्ठों को पहचान सकता है, उत्पाद लिंक खोज सकता है, और प्रत्येक विवरण पृष्ठ से एक उत्पाद पहचानकर्ता और शीर्षक निकाल सकता है। डाउनलोडर दस्तावेज़ों को प्राप्त करता है। आइटम पाइपलाइन निकाले गए रिकॉर्ड पर नियम लागू करती है, जैसे आवश्यक फ़ील्ड की जांच करना या संग्रहण के लिए स्वीकृत वस्तुओं को लिखना।

यह विभाजन बढ़ते क्रॉलर को बनाए रखना आसान बनाता है। एक नया आउटपुट गंतव्य संग्रहण चरण में होता है। एक बदला हुआ उत्पाद चयनकर्ता निकासी चरण में होता है। एक अलग नेटवर्क मार्ग पुनर्प्राप्ति कॉन्फ़िगरेशन में होता है। उन निर्णयों को अलग रखना तब बहुत सारे असंबंधित परिवर्तनों की आवश्यकता को कम कर देता है जब एक वेबसाइट या कार्यान्वयन का एक भाग बदलता है।

एक अनुरोध कैसे स्क्रैपी के माध्यम से यात्रा करता है

स्क्रैपी का इंजन अनुरोध को शेड्यूलर, डाउनलोडर, स्पाइडर और आइटम पाइपलाइन के माध्यम से समन्वय करता है। स्क्रैपी आर्किटेक्चर इन घटकों के बीच संबंध और उनके चारों ओर मिडलवेयर हुक का वर्णन करता है।

शेड्यूलर लंबित कार्य को धारण करता है। जब इंजन एक अनुरोध भेजता है, तो डाउनलोडर एक उत्तर प्राप्त करता है। इंजन उस उत्तर को प्रासंगिक स्पाइडर कॉल बैक को पास करता है। कॉल बैक एक आइटम बना सकता है, अतिरिक्त अनुरोध उत्पन्न कर सकता है, या दोनों कर सकता है। निकाले गए आइटम पाइपलाइन में चले जाते हैं, जबकि खोजे गए अनुरोध शेड्यूलिंग पर वापस लौटते हैं।

एक कैटलॉग श्रेणी पर विचार करें जो उत्पाद पृष्ठों और अगली श्रेणी पृष्ठ के लिए लिंक करता है। इसका कॉल बैक विवरण-पृष्ठ अनुरोध और एक पृष्ठांकित अनुरोध बनाता है। एक विवरण कॉल बैक एक उत्पाद रिकॉर्ड उत्पन्न करता है। इसलिए क्रॉल एक साइट के माध्यम से शाखित होता है जबकि वही रिकॉर्डschema प्रभावी रहता है। यह लंबे स्क्रिप्ट की तुलना में अधिक प्रबंधनीय है जहाँ उठाना, पार्सिंग और फ़ाइल लेखन नेस्टेड लूप के अंदर मिलाया जाता है।

अनुरोध डेडुप्लिकेशन और रिकॉर्ड डेडुप्लिकेशन विभिन्न प्रश्नों को संबोधित करते हैं। एक दोहराया URL अनावश्यक कार्य हो सकता है, जबकि दो विभिन्न URL वही उत्पाद का वर्णन कर सकते हैं। रिकॉर्ड कुंजी को फ्रेमवर्क के अनुरोध फ़िल्टरिंग से स्वतंत्र रूप से योजना बनाएं।

एक स्पाइडा को वेबसाइट के बारे में क्या जानना चाहिए

एक स्पाइडा को साइट की खोज योग्य संरचना और इसके रिकॉर्ड का अर्थ को एन्कोड करना चाहिए। सबसे छोटे अनुमति प्राप्त क्रॉल स्कोप को पहचानने से शुरू करें जो व्यावसायिक प्रश्न का उत्तर देता है: एक श्रेणी, एक साइटमैप उपसेट, या सार्वजनिक विवरण पृष्ठों की एक प्रदत्त सूची।

खोज बढ़ाने से पहले आउटपुट को परिभाषित करें। एक मूल्य-निगरानी रिकॉर्ड को एक उत्पाद पहचानकर्ता, शीर्षक, प्रदर्शित मूल्य, मुद्रा, स्रोत URL, और संग्रहण समय की आवश्यकता हो सकती है। उपलब्धता को नल होने पर दिखाई जा सकता है यदि वेबसाइट इसे लगातार प्रकाशित नहीं करती है। एक गायब आवश्यक पहचानकर्ता को एक अस्वीकृत या क्वारंटाइन रिकॉर्ड की ओर ले जाना चाहिए न कि एक स्पष्ट रूप से पूर्ण पंक्ति।

पृष्ठ संख्या को भी एक स्पष्ट रोकने के नियम की आवश्यकता है। जब साइट का अगला पृष्ठ लिंक मौजूद हो, तो उसका पालन करें, खोजे गए URL को लक्षित डोमेन और पाथ स्कोप के अंदर रखें, और तब रोकें जब पृष्ठ कोई अगला लिंक प्रस्तुत न करे। एक विस्तृत लिंक-फॉलोइंग नियम सहायता पृष्ठों, ट्रैकिंग URL, या डुप्लिकेट नेविगेशन पथों में भटक सकता है। अधिक खोजे गए URL अधिक उपयोगी रिकॉर्ड का अर्थ नहीं रखते हैं।

स्क्रैपी कैसे क्षेत्रों को निकालता है

स्क्रैपी उत्तर सामग्री पर लागू किए गए चयनकर्ताओं के साथ क्षेत्रों को निकालता है। स्क्रैपी के CSS और XPath चयनकर्ता HTML या XML से तत्वों, विशेषताओं, और पाठ को चुनने के तरीके प्रदान करते हैं।

पहले रिकॉर्ड कंटेनर के लिए एंकर निकासी। यदि एक श्रेणी पृष्ठ में कई उत्पाद होते हैं, तो प्रत्येक उत्पाद ब्लॉक का चयन करें और फिर उस ब्लॉक के भीतर शीर्षक और मूल्य चुनें। स्वतंत्र पृष्ठ-व्यापी शीर्षक और मूल्य सूचियाँ गलत दिशा में जा सकती हैं जब एक उत्पाद की कीमत गायब हो या पृष्ठ में एक प्रचारात्मक कार्ड हो।

ऐसे चयनकर्ताओं का चयन करें जो संरचना या अर्थ व्यक्त करते हैं। एक स्थिर उत्पाद विशेषता एक उत्पन्न वर्ग नाम से अधिक उपयोगी हो सकती है। वैकल्पिक तत्वों का स्पष्ट रूप से निरीक्षण करें और एक अनुपस्थित फ़ील्ड और एक खाली स्ट्रिंग के बीच का अंतर बनाए रखें। एक चयनकर्ता जो चुनौतीपूर्ण पृष्ठ पर कोई शीर्षक नहीं लौटाता है, उसे चुपचाप एक सामान्य उत्पाद रिकॉर्ड उत्पन्न नहीं करना चाहिए।

निष्कर्ष परीक्षणों को सहेजे गए, अनुमत प्रतिक्रिया नमूनों से लाभ होता है। एक संपूर्ण आइटम, एक गायब वैकल्पिक फ़ील्ड, और एक बदले हुए लेआउट के लिए प्रतिनिधि मामलों को बनाए रखें। अर्थपूर्ण उदाहरणों का एक छोटा सेट साइट परिवर्तन को उस नेटवर्क प्रतिक्रिया से अलग करने में मदद करता है जिसमें कभी भी इच्छित सामग्री नहीं थी।

जहाँ आइटम पाइपलाइन्स डेटा गुणवत्ता में सुधार करते हैं

एक आइटम पाइपलाइन रिकॉर्ड को प्रोसेस करती है जब स्पाइडर उन्हें निकालता है। Scrapy आइटम-पाइपलाइन मॉडल पैरामीटरों का अनुक्रमिक प्रोसेसिंग घटकों का समर्थन करता है, जिसमें मान्यता, सफाई और स्थिरता शामिल हैं।

नार्मलाइजेशन करते समय कच्चे स्रोत मूल्यों को बनाए रखें, क्योंकि यह अर्थ खो सकता है। प्रदर्शित कीमत में मुद्रा चिन्ह, छूट योग्य या इकाई शामिल हो सकती है। मूल स्ट्रिंग को एक पार्स की गई राशि और एक अलग रूप से पहचानी गई मुद्रा के साथ संग्रहीत करें। स्थान को समझने से पहले विराम चिह्न को हटाने से एक वैध कीमत गलत मूल्य में बदल सकती है।

स्टोरेज के लिए एक स्थिर व्यवसाय कुंजी का उपयोग करें। स्रोत URL उपयोगी उत्पत्ति है, लेकिन एक रीडायरेक्ट या वैकल्पिक उत्पाद पथ इसे बदल सकता है। एक स्रोत पहचानकर्ता और संग्रह संदर्भ बेहतर कुंजी हो सकते हैं। तय करें कि क्या बाद में अवलोकन वर्तमान स्थिति को प्रतिस्थापित करते हैं या इतिहास तालिका में जोड़ते हैं; ये विकल्प विभिन्न डाउनस्ट्रीम प्रश्नों का उत्तर देते हैं।

अस्वीकृत वस्तुओं की अलग संख्या के साथ एक कारण के रूप में रिपोर्ट करें। एक क्रॉल जो सभी योजनाबद्ध पृष्ठों को डाउनलोड करता है लेकिन अधिकांश रिकॉर्ड को छोड़ देता है, उसमें निष्कर्षण या स्कीमा समस्या होती है। डाउनलोड संख्या को सफलता मैट्रिक के रूप में मानना ​​उस विफलता को डेटा सेट का उपभोग करने वाले लोगों से छिपा देगा।

Scrapy, Requests, Parsers, और Browsers

Scrapy एक क्रॉलिंग ढांचा है, जबकि एक HTTP क्लाइंट, एक HTML पार्सर, और एक ब्राउज़र रनटाइम संकुचित या विभिन्न कार्यों को हल करते हैं। पायथन क्रॉलर्स और ब्राउज़र रनटाइम्स की तुलना करती है कि इन स्तरों को जिम्मेदारी के आधार पर क्यों आंका जाना चाहिए।

उपकरण स्तरमुख्य जिम्मेदारीजब इसे चुनें
HTTP क्लाइंटअनुरोध भेजें और प्रतिक्रियाएँ प्राप्त करेंURL सेट छोटा है और एप्लिकेशन कोड शेड्यूलिंग का स्वामित्व करता है
HTML पार्सरआपूर्त की गई मार्कअप से फ़ील्ड निकालेंआपके पास पहले से ही सही HTML है
Scrapyअनुरोधों, खोज और रिकॉर्ड प्रोसेसिंग का समन्वय करेंकार्य लिंक किए गए पृष्ठों और पुनरावृत्त क्रॉल रन में फैला हुआ है
ब्राउज़र रनटाइमJavaScript निष्पादित करें और पृष्ठों के साथ इंटरैक्ट करेंआवश्यक सामग्री रेंडरिंग या उपयोगकर्ता इंटरैक्शन पर निर्भर करती है

एक ढांचा विकल्प पुनर्प्राप्ति विकल्प को तय नहीं करता है। Scrapy कार्य को व्यवस्थित कर सकता है, लेकिन लक्ष्य अभी भी निर्धारित करता है कि डेटा कौन से दस्तावेज़ या प्रतिक्रिया में मौजूद है। आर्किटेक्चर में ब्राउज़र जोड़ने से पहले प्रारंभिक प्रतिक्रिया का निरीक्षण करें।

जहाँ Scrapy गतिशील पृष्ठों पर रुकता है

Scrapy का सामान्य डाउनलोडर JavaScript को निष्पादित नहीं करता है जो एक ब्राउज़र HTML प्राप्त करने के बाद चलाता है। गतिशील सामग्री चयन दृष्टिकोण वास्तविक डेटा स्रोत को खोजने से शुरू होता है, जो दस्तावेज़ में एंबेडेड हो सकता है या एक अलग अनुमत अनुरोध द्वारा लौटाया जा सकता है।

अधूरी उत्पाद ग्रिड प्रारंभिक HTML में एक सुराग है, न कि एक चयनकर्ता समस्या। डाउनलोड की गई प्रतिक्रिया की तुलना ब्राउज़र के प्रदर्शित सामग्री से करें। यदि फ़ील्ड एक सार्वजनिक संरचित एंडपॉइंट से आते हैं, तो जब पहुँच अनुमत हो, उस प्रलेखित या देखी गई स्रोत का उपयोग करें। यदि कार्य प्रवाह को रेंडर की गई सामग्री की आवश्यकता होती है, तो एक अधिग्रहण परत चुनें जो रेंडरिंग करती है।

Scrapeless वेब अनलॉकर सहायक पहुंच प्रबंधन और JavaScript रेंडरिंग विकल्पों के साथ प्रबंधित सामग्री पुनर्प्राप्ति प्रदान करता है। वेब अनलॉकर पुनर्प्राप्ति मॉडल एक आवेदन को एक लक्ष्य प्रस्तुत करने और वापस लौटाई गई सामग्री को प्रोसेस करने की अनुमति देता है। यह एक आर्किटेक्चरल विकल्प है; इसके उत्पाद नाम को जोड़ने से एक सत्यापित Scrapy एकीकरण नहीं बनता है या एप्लिकेशन के अपने पार्सिंग नियमों को नहीं बदलता है।

समीक्षा करें Scrapeless मूल्य निर्धारण क्रॉलर डिजाइन से अलग। निर्धारित करें कि आपकी क्रॉल को कितनी पुनर्प्राप्ति कार्य की आवश्यकता है, फिर तैनाती दृष्टिकोण की तुलना करते समय पार्सिंग, स्टोरेज और मान्यता लागत को शामिल करें।

Scrapy प्रोजेक्ट में क्या मापें

एक Scrapy प्रोजेक्ट को उपयोगी रिकॉर्ड और अनुरोध गतिविधि के साथ साथ क्रॉल कवरेज को मापना चाहिए। उपयोगी कवरेज इच्छित URL दायरे से शुरू होती है और उन रिकॉर्ड के साथ समाप्त होती है जो आउटपुट अनुबंध को पास करते हैं।

खोजी गई विवरण URL, स्वीकार किए गए रिकॉर्ड, गायब आवश्यक फ़ील्ड, डुप्लिकेट व्यावसायिक कुंजी, और प्रतिक्रिया प्रकारों का वितरण ट्रैक करें। अंतिम URL और संग्रह संदर्भ को प्रत्येक रिकॉर्ड के साथ रखें ताकि बाद में सामग्री भिन्नता की जांच की जा सके। यदि अनुरोध लॉगिन पृष्ठ या चुनौती लौटाता है, तो प्रतिक्रिया को एक वैध खाली श्रेणी से अलग वर्गीकृत करें।

लक्षित और कार्य द्वारा क्रॉल सीमित करें। एक अनुरोध बजट और एक संवेदनशील गति सेट करें, और स्रोत की पहुंच आवश्यकताओं का सम्मान करें। पृष्ठ संरचना को समझने से पहले समवर्तीता बढ़ाना एक गलत क्रॉलर को गलत डेटा तेजी से उत्पन्न कर सकता है। कार्यभार बढ़ाने से पहले चयनकर्ता कवरेज और स्कीमा गुणवत्ता में सुधार करें।

निष्कर्ष

जब आपके पायथन एप्लिकेशन को स्वतंत्र डाउनलोडों के संग्रह के बजाय एक बनाए रखा क्रॉल की आवश्यकता होती है, तो स्क्रैपी एक अच्छा विकल्प है। एक अनुमत श्रेणी से शुरू करें, एक रिकॉर्ड स्कीमा परिभाषित करें, और खोज, निकासी, मान्यता और भंडारण के माध्यम से अनुरोध का पता लगाएं। एक बार जब ये चरण विश्वसनीय रिकॉर्ड उत्पन्न करते हैं, तो समान स्पष्ट नियमों के साथ दायरा बढ़ाएं।

एक बनाए रखने योग्य पायथन क्रॉल बनाएं

जैसे ही आप अपने एप्लिकेशन के लिए प्रबंधित सामग्री पुनर्प्राप्ति का मूल्यांकन करते हैं, क्रॉल अनुसूची, पुनर्प्राप्ति और रिकॉर्ड मान्यता को अलग रखें।

आज ही साइन अप करें और पाएं $5 में मुफ्त क्रेडिट — कोई क्रेडिट कार्ड आवश्यक नहीं है.

अपने $5 क्रेडिट का दावा करें →

अक्सर पूछे जाने वाले प्रश्न

प्रश्न: क्या स्क्रैपी एक पुस्तकालय है या एक ढांचा?

स्क्रैपी वेब साइटों को क्रॉल करने और संरचित डेटा निकालने के लिए एक एप्लिकेशन ढांचा है। आप मकड़ियों और प्रसंस्करण नियमों को प्रदान करते हैं, जबकि ढांचा अनुरोध और आइटम जीवनचक्र का समन्वय करता है। इसे एक बड़े एप्लिकेशन के भीतर उपयोग किया जा सकता है, लेकिन इसका दायरा एकल अनुरोध फ़ंक्शन या पार्सर से परे बढ़ता है।

प्रश्न: क्या स्क्रैपी जावास्क्रिप्ट को प्रस्तुत करता है?

स्क्रैपी का मानक डाउनलोडर पृष्ठ जावास्क्रिप्ट को प्रस्तुत नहीं करता है। प्रतिक्रिया का निरीक्षण करें कि क्या उसमें एम्बेडेड डेटा या एक अनुमत संरचित स्रोत है, और जब आवश्यक फ़ील्ड ब्राउज़र निष्पादन पर निर्भर करते हैं, तो एक प्रस्तुतिकरण परत चुनें। एक अलग चयनकर्ता उस पाठ को नहीं निकाल सकता जो प्रतिक्रिया में कभी नहीं आया।

प्रश्न: स्क्रैपी, अनुरोधों से कैसे भिन्न है?

स्क्रैपी एक क्रॉल का प्रबंधन करता है, जबकि अनुरोध HTTP अनुरोध भेजता है। अनुरोध एक ज्ञात URL सूची के साथ छोटे स्क्रिप्ट के लिए उपयुक्त हो सकते हैं। स्क्रैपी एक परियोजना के लिए अनुसूची, कॉलबैक, मध्यवर्ती सॉफ़्टवेयर और आइटम पाइपलाइनों की पेशकश करता है जो जुड़े पृष्ठों की खोज और प्रक्रिया करता है।

प्रश्न: क्या स्क्रैपी परियोजनाओं को हमेशा प्रॉक्सी की आवश्यकता होती है?

स्क्रैपी परियोजनाओं को हमेशा प्रॉक्सी की आवश्यकता नहीं होती। लक्षित की अनुमति दी गई पहुंच पथ, स्थान आवश्यकताएँ, और नेटवर्क नीति यह तय करते हैं कि प्रॉक्सी उपयोगी है या नहीं। एक प्रॉक्सी रूटिंग को बदलता है; यह गायब चयनकर्ताओं को ठीक नहीं करता, रिकॉर्ड को मान्य नहीं करता, या सीमित सामग्री तक पहुंच के लिए अनुमति नहीं देता।

प्रश्न: सबसे उपयोगी स्क्रैपी प्रोजेक्ट क्या है?

एक उपयोगी पहला स्क्रैपी प्रोजेक्ट एक छोटे अनुमत पृष्ठ सेट को क्रॉल करता है और एक परिभाषित रिकॉर्ड स्कीमा उत्पन्न करता है। एक पृष्ठन सीमा, एक स्थिर रिकॉर्ड कुंजी, और गायब फ़ील्ड के लिए मान्यता शामिल करें। इस परियोजना को अनुसूचित या बड़े क्रॉल में बदलने से पहले निकाले गए रिकॉर्ड की समीक्षा करें।

संदर्भ