Crawlee क्या है? रिक्वेस्ट क्यूज़ और क्रॉलर डिज़ाइन गाइड

Crawlee क्या है?

Scrapeless Agent Browser उन ऑटोमेशन क्लाइंट्स के लिए प्रबंधित ब्राउज़र निष्पादन प्रदान करता है जिन्हें डायनेमिक वेब पेजों को रेंडर करना और उनके साथ इंटरैक्ट करना होता है।

Crawlee एक ओपन-सोर्स वेब क्रॉलिंग और स्क्रैपिंग फ्रेमवर्क है, जिसकी JavaScript और Python इम्प्लीमेंटेशन हैं। Crawlee काम को रिक्वेस्ट्स, क्रॉलर हैंडलर्स, निष्पादन संसाधन, और रिज़ल्ट स्टोरेज के इर्द‑गिर्द व्यवस्थित करता है। एक फ्रेमवर्क यह समन्वयित करता है कि किन पेजों को प्रोसेस किया जाएगा और रिकॉर्ड कैसे सेव होंगे; यह उस ब्राउज़र इंजन से अलग है जो पेज को रेंडर करता है या उस सेवा से जो ब्राउज़र को होस्ट करती है।

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

एक पेज स्क्रिप्ट में Crawlee क्या जोड़ता है

Crawlee उन कोड के आसपास ऑर्केस्ट्रेशन जोड़ता है जो पेज लाते हैं और डेटा निकालते हैं। Crawlee क्रॉलिंग फ्रेमवर्क HTTP और ब्राउज़र क्रॉलिंग, रिक्वेस्ट स्टोरेज, रिज़ल्ट स्टोरेज, संसाधन‑सचेत निष्पादन, और लाइफसाइकल कस्टमाइज़ेशन उपलब्ध कराता है।

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

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

HTTP क्रॉलर और ब्राउज़र क्रॉलर अलग समस्याएँ हल करते हैं

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

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

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

एक ब्राउज़र यह भी बदल देता है कि डॉक्युमेंट्स को कैसे ऐड्रेस किया जाता है। किसी एम्बेडेड फ़्रेम के भीतर का प्राइस विजेट पैरेंट डॉक्युमेंट में सिर्फ एक गहरा नोड नहीं है। HTML डॉक्युमेंट और ब्राउज़िंग‑कॉन्टेक्स्ट मॉडल समझाता है कि क्रॉलर को अपने लक्ष्य को निकालने से पहले उस डॉक्युमेंट की पहचान क्यों करनी होती है जिसमें लक्ष्य मौजूद है।

रिक्वेस्ट की पहचान तय करती है कि क्या प्रोसेस होगा

रिक्वेस्ट की पहचान यह तय करती है कि दो डिस्कवर किए गए लिंक एक ही क्रॉल काम की इकाई का प्रतिनिधित्व करते हैं या नहीं। URLs को डीडुप्लिकेट करना तभी मददगार है जब पहचान का नियम एप्लिकेशन से मेल खाता हो।

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

रिक्वेस्ट की पहचान किसी रिकॉर्ड की पहचान से भी अलग होती है। एक कैटलॉग पेज पर बहुत से प्रोडक्ट हो सकते हैं; एक प्रोडक्ट कई कैटलॉग पेजों पर दिख सकता है। सिर्फ पेज रिक्वेस्ट्स को डीडुप्लिकेट कर देना अपने‑आप में ऐसा डेटासेट सुनिश्चित नहीं कर सकता जिसमें प्रति प्रोडक्ट एक ही रिकॉर्ड हो।

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

डिज़ाइन उदाहरण के रूप में सीमित कैटलॉग क्रॉल

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

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

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

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

स्टोरेज को परिणाम के स्वरूप से मेल खाना चाहिए

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

एक dataset रिकॉर्ड्स के संग्रह के लिए उपयुक्त है। एक key-value store नामित मानों या आर्टिफैक्ट्स के लिए उपयुक्त है। इन दोनों में से कोई भी स्टोरेज विकल्प किसी रिकॉर्ड की शुद्धता को परिभाषित नहीं करता। एक schema स्थापित करें जो field नामों, nullable मानों, text normalization, और परिणाम की व्याख्या के लिए आवश्यक source context को कवर करे।

उदाहरण के लिए, प्रदर्शित की गई कीमत बिना currency के अस्पष्ट हो सकती है। चुने हुए location के बिना stock स्थिति भ्रामक हो सकती है। कोई रिकॉर्ड संरचनात्मक रूप से मान्य JSON हो सकता है और फिर भी व्यावसायिक निर्णय के लिए आवश्यक context से वंचित हो सकता है। बाद में उन्हें पुनर्निर्मित करने की कोशिश करने के बजाय उन इनपुट्स को सुरक्षित रखें।

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

सेशंस क्रॉल के लिए एक इनपुट हैं

सेशंस इस बात को प्रभावित करते हैं कि crawler क्या देखता है, भले ही target URLs अपरिवर्तित रहें। Cookies, account स्थिति, भाषा वरीयताएँ, और browser storage लौटाए गए पेज या rendered एप्लिकेशन को बदल सकते हैं।

The HTTP cookie mechanism सर्वर द्वारा अनुरोधों को संग्रहीत browser state से जोड़ने के एक तरीके की व्याख्या करता है। Browser storage के अतिरिक्त नियम होते हैं: Web Storage isolation and lifetime origin-स्कोप वाले डेटा को tab-संबद्ध session storage से अलग करते हैं।

उन workflows के लिए साफ state का उपयोग करें जिन्हें स्वतंत्र होना चाहिए। अधिकृत state को केवल तभी पुनः उपयोग करें जब continuity एक घोषित आवश्यकता हो। असंबंधित jobs के बीच एक ही परिवर्तनीय browser प्रोफ़ाइल साझा करने से यह हो सकता है कि किसी एक task का आउटपुट इस पर निर्भर हो जाए कि दूसरे task ने पहले क्या क्लिक किया था।

फ्रेमवर्क की session सुविधाओं, browser context, वेबसाइट session, और remote browser आवंटन को परस्पर विनिमेय नहीं माना जाना चाहिए। वर्णन करें कि प्रत्येक सीमा का स्वामी कौन सा घटक है। इससे यह निर्धारित करना संभव हो जाता है कि कोई विफलता queue processing, browser उपलब्धता, वेबसाइट authentication, या बदले हुए page state से संबंधित है।

Crawlee प्रोजेक्ट का मूल्यांकन कैसे करें

Crawlee का मूल्यांकन उस काम के आधार पर करें जिसे यह व्यवस्थित करता है और उस प्रमाण के आधार पर जो परिणामी dataset में होता है। एक छोटा प्रतिनिधि क्रॉल, queue में कितने URLs जोड़े गए यह गिनने से अधिक सूचनात्मक होता है।

जाँचेंउत्तर देने के लिए प्रश्न
स्कोपक्या हर स्वीकार किया गया URL स्वीकृत job से संबंधित था?
Execution pathक्या HTTP parsing या browser rendering आवश्यक थी?
Request identityक्या सार्थक page variants संरक्षित रहे?
Record qualityक्या आवश्यक fields और source context सुरक्षित रहे?
Completionक्या खाली, अधूरे और सफल परिणामों को अलग-अलग पहचाना जा सकता है?

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

इस आर्किटेक्चर में Scrapeless कहाँ फिट बैठता है

Scrapeless Agent Browser ब्राउज़र execution लेयर से संबंधित है, जबकि Crawlee क्रॉल orchestration से संबंधित है। Agent Browser Puppeteer connection एक समर्थित client surface का वर्णन करता है; इसे इस प्रमाण के रूप में नहीं समझा जाना चाहिए कि कोई भी मनचाहा Crawlee browser-pool कॉन्फ़िगरेशन बिना बदलाव के काम करता है।

The Agent Browser platform तब प्रासंगिक है जब किसी workflow को managed dynamic-page execution की आवश्यकता होती है। इससे संबंधित चर्चा Crawlee for Python and crawl design orchestration विकल्पों को समझने में मदद कर सकती है। अवधारणाओं को methods या configuration में अनुवाद करने से पहले भाषा-विशिष्ट दस्तावेज़ों की जाँच करें।

मूल्यांकन करें Scrapeless pricing उस browser कार्य के सापेक्ष जो सबसे सरल उपयुक्त retrieval path चुनने के बाद भी शेष रहता है। यह परिभाषा यह दावा नहीं करती कि Crawlee-to-Scrapeless इंटीग्रेशन निष्पादित या benchmark किया गया था।

निष्कर्ष

Crawlee पेज ऑपरेशंस के सेट को एक व्यवस्थित क्रॉल में बदल देता है। request scope से शुरू करें, आवश्यक सामग्री के अनुसार HTTP या browser execution चुनें, और रिकॉर्ड्स को page requests से स्वतंत्र रूप से परिभाषित करें। एक उपयोगी क्रॉल केवल खाली हो चुकी queue के बजाय समझने योग्य डेटा और दृश्यमान अधूरे परिणामों के साथ समाप्त होता है।

ब्राउज़र अवधारणाओं को व्यवहार में लाएँ

Scrapeless Agent Browser के साथ एक authorized browser workflow का अन्वेषण करें, फिर वह page state और आउटपुट मान्य करें जो आपका task आवश्यक करता है।

आज ही साइन अप करें और प्राप्त करें $5 in free credit — कोई credit card आवश्यक नहीं.

अपना $5 क्रेडिट क्लेम करें →

FAQ

क्या Crawlee एक ब्राउज़र है?

Crawlee एक crawling और scraping framework है, ब्राउज़र नहीं। यह HTTP requests या browser-आधारित कार्य का समन्वय कर सकता है, जबकि एक browser runtime पेज rendering और interaction करता है।

क्या Crawlee को हर URL के लिए browser rendering की आवश्यकता होती है?

Crawlee को हर URL के लिए ब्राउज़र की आवश्यकता नहीं होती। जब आवश्यक सामग्री response में उपलब्ध हो तो HTTP path का उपयोग करें, और जब script execution या interaction आवश्यक हो तो browser path का उपयोग करें।

क्या request deduplication डुप्लिकेट data records को रोकता है?

Request deduplication अपने आप डुप्लिकेट records को नहीं रोकता। वही item कई पेजों पर दिख सकता है, और एक पेज में कई items हो सकते हैं। रिकॉर्ड की पहचान को request पहचान से अलग परिभाषित करें।

क्या JavaScript और Python APIs एक-दूसरे के स्थान पर इस्तेमाल किए जा सकते हैं?

JavaScript और Python APIs को एक-दूसरे के स्थान पर इस्तेमाल किया जा सकने योग्य मानकर नहीं चलना चाहिए। वे crawling के कॉन्सेप्ट साझा करते हैं, लेकिन classes, configuration, और समर्थित सुविधाओं की जाँच उपयोग की जा रही भाषा और संस्करण के documentation में करनी चाहिए।

संदर्भ