स्क्रैपलिंग: वेब स्क्रैपर जो खुद को ठीक कर लेता है

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00यह Scrapling है, एक पायथन स्क्रैपर जो वेब स्क्रैपिंग की सबसे खराब समस्या को ठीक करने का प्रयास करता है।
00:00:05स्क्रैपर आज काम करता है, फिर साइट बदलते ही टूट जाता है। एक क्लास का नाम बदला,
00:00:10एक डिफ़ (div) हटा, एक बॉट चेक आया, और अब आपका डेटा पाइपलाइन खत्म। Scrapling का पूरा दावा है कि
00:00:17आपका स्क्रैपर बिखरने के बजाय अनुकूलित हो सकता है। इसके GitHub पर 53,000 से अधिक स्टार हैं,
00:00:22यह एडेप्टिव पार्सिंग, स्टील्थ फेचिंग, और बड़े क्रॉलर वर्कफ़्लो का समर्थन करता है।
00:00:27मैं उस एक सवाल का परीक्षण करने जा रहा हूं जो वास्तव में मायने रखता है।
00:00:30क्या यह सेलेक्टर को फिर से लिखे बिना वेबसाइट परिवर्तन से बच सकता है? हम अभी पता लगाने वाले हैं।
00:00:40तो Scrapling क्या है? Scrapling एक एडेप्टिव ऑल-इन-वन पायथन वेब स्क्रैपिंग फ्रेमवर्क है।
00:00:46आपको एक सेल्फ-हीलिंग पार्सर, स्टील्थ फेचर्स, जावास्क्रिप्ट की आवश्यकता होने पर ब्राउज़र-आधारित फेचिंग,
00:00:51और बड़े क्रॉल के लिए एक स्पाइडर फ्रेमवर्क मिलता है। एक इंस्टॉल, एक API। इसका मतलब है कम टूटे हुए
00:00:57स्क्रैपर्स और अधिक उपयोगी डेटा जो हमें वापस मिलता है। अब, उस हिस्से को देखते हैं जो वास्तव में मायने रखता है।
00:01:03यदि आप अपने वर्कफ़्लो को तेज़ करने के लिए कोडिंग टूल का आनंद लेते हैं, तो सब्सक्राइब करना सुनिश्चित करें। हमारे वीडियो हमेशा
00:01:08आते रहते हैं। अब, यहाँ मेरे पास एक बेसिक सेटअप है, ठीक है? मैंने Scrapling इंस्टॉल कर लिया है, तो हम इस
00:01:13हिस्से को जल्दी रखेंगे। पेज प्राप्त करने के लिए बस एक इम्पोर्ट और एक कॉल की आवश्यकता है। यहाँ ऊपर, मैंने कुछ HTML बनाया है जो बदल जाता है।
00:01:21एक सामान्य स्टार्टिंग साइट की तरह है। फिर मैंने वही चीज़ रखी, लेकिन मैंने CSS सेलेक्टर बदल दिए।
00:01:27मान लीजिए मैं उत्पाद का नाम और कीमत चाहता हूँ। अब, आमतौर पर मैं उन्हें CSS सेलेक्टर से ले सकता हूँ,
00:01:34ठीक है? तो पेज CSS, मैं अपना सेलेक्टर डालता हूँ, ऑटो-सेव, ट्रू। मैं ऐसा कर सकता हूँ और यह
00:01:40काम करेगा और हमें वापस डेटा की एक डिक्शनरी मिल जाएगी। सामान्य लगता है। दो सेलेक्टर, एक डिक्शनरी,
00:01:46मैं आगे बढ़ता हूँ। बस इतना ही। लेकिन साथ ही, यह वास्तव में समस्या है क्योंकि एक सामान्य स्क्रैपर
00:01:52तब तक बहुत अच्छा काम करता है जब तक कि वह पेज बदल न जाए। अब, क्या होगा यदि साइट रातोंरात अचानक बदल जाए? वे इसे रीडिज़ाइन
00:01:58करते हैं। वे इसे रोकने के लिए कुछ करते हैं। तो प्रोडक्ट टाइटल 'आइटम हेडिंग' बन जाता है या प्रोडक्ट प्राइस 'प्राइसिंग वैल्यू'
00:02:04बन जाता है। पेज पर वही डेटा है, लेकिन पूरा DOM बदल गया है। पुराने सेलेक्टर बेकार
00:02:11हो जाने चाहिए। और यहीं पर अधिकांश स्क्रैपर्स बस टूट जाएंगे। लेकिन अब हम एडेप्टिव मोड चालू कर सकते हैं।
00:02:18एक बदलाव, ऑटोसेव इक्वल ट्रू, एडेप्टिव इक्वल ट्रू बन जाता है। तो अब मैं अभी भी प्रोडक्ट टाइटल डाल सकता हूँ
00:02:26एडेप्टिव को ट्रू सेट करके। वही डेटा। मैंने सेलेक्टर नहीं बदले। यह अलग पेज संरचना है बिना
00:02:34सेलेक्टर को दोबारा लिखे। यहाँ मुख्य विचार यही है। अब, जब आप ऑटोसेव ट्रू के साथ किसी एलिमेंट को स्क्रैप करते हैं,
00:02:40Scrapling उसके बारे में सुराग रिकॉर्ड करता है। तो यह टैग, एट्रिब्यूट्स,
00:02:44पेरेंट्स और चिल्ड्रेन, कोई भी पड़ोसी टेक्स्ट, शायद DOM स्थिति और संरचनात्मक आकार जैसी चीजें रिकॉर्ड करेगा। तो जब
00:02:50क्लास का नाम बदलता है, Scrapling के पास और सुराग बचे होते हैं। इसे पूरी साइट के समान रहने की आवश्यकता नहीं है।
00:02:56इसे एलिमेंट को फिर से पहचानने के लिए केवल पर्याप्त संरचनात्मक संकेत की आवश्यकता होती है। और यही
00:03:01वह हिस्सा है जो मायने रखता है क्योंकि वास्तविक स्क्रैपर विफलताएं कभी भी पूर्ण रीडिज़ाइन नहीं होती हैं। यह एक रीनेम की गई क्लास,
00:03:06एक नया रैपर, एक शिफ्ट किया गया लेआउट, एक छोटी सी चीज है। यही वह है जिसके लिए एडेप्टिव मैचिंग बनाई गई है।
00:03:13Scrapling के तीन बड़े हिस्से हैं जो वास्तव में मायने रखते हैं। पहला एडेप्टिव पार्सर है, जो आपने अभी देखा।
00:03:18फिर मल्टीपल फेचर है, एक वर्कफ़्लो, काम के लिए सही टूल। फेचर सादे HTTP के लिए जाता है,
00:03:25साधारण वेब पेजों के लिए तेज़। स्टील्थी फेचर जरूरत पड़ने पर एंटी-बॉट को बायपास कर सकता है। डायनामिक फेचर है वास्तविक
00:03:32JS भारी साइटों के लिए ब्राउज़र। एक API, फेचर को स्वैप करें, कोड वही रखें। स्पाइडर फ्रेमवर्क तब होता है जब त्वरित
00:03:39स्क्रिप्ट एक वास्तविक क्रॉलर में बदल जाती हैं। एसिंक क्रॉलिंग, पॉज़ और रिज़्यूम, प्रॉक्सी रोटेशन, स्ट्रीमिंग, और वे सभी
00:03:46मिश्रित सत्र। जो चीजें आप आमतौर पर बाद में जोड़ते हैं, वे पहले से ही वहाँ हैं। Scrapling केवल एक और
00:03:53पार्सर नहीं है। यह स्क्रैपिंग स्टैक को बदल देता है। रिक्वेस्ट्स, ब्यूटीफुल सूप, प्लेराइट, रिट्राई लॉजिक, प्रॉक्सी हेल्पर्स,
00:04:00एक वर्कफ़्लो के साथ स्पाइडर कोड। Scrapling यह नहीं कह रहा है कि ब्यूटीफुल सूप बेकार है और यह नहीं कह रहा है कि
00:04:06प्लेराइट या स्क्रैपी मर चुके हैं। ब्यूटीफुल सूप और रिक्वेस्ट्स अभी भी सरल पेजों के लिए बहुत अच्छे हैं। यह आसान है,
00:04:13यह पढ़ने योग्य है और हर कोई इसे समझता है, लेकिन यह आपको किसी भी प्रकार की स्टील्थ नहीं देता है। यह आपको
00:04:20एडेप्टिव सेलेक्टर नहीं देता है और यह जावास्क्रिप्ट को रेंडर नहीं करता है। और बड़ी पार्सिंग नौकरियों के लिए, यह
00:04:26वास्तविक बाधा बन सकता है। अब, स्क्रैपी शक्तिशाली है। यदि आप सीरियस क्रॉलिंग
00:04:31इंफ्रास्ट्रक्चर बना रहे हैं, तो स्क्रैपी अभी भी कुछ सम्मान का हकदार है, लेकिन स्क्रैपी का मतलब अक्सर सेटिंग्स, पाइपलाइन, मिडलवेयर,
00:04:36एक्सटेंशन, और बहुत अधिक सेटअप है। प्लेराइट और सेलेनियम तब बहुत अच्छे होते हैं जब आपको एक वास्तविक ब्राउज़र की आवश्यकता होती है।
00:04:42कभी-कभी पेज को बस जावास्क्रिप्ट की आवश्यकता होती है। इसके अलावा कोई रास्ता नहीं है। लेकिन ब्राउज़र भारी होते हैं। वे
00:04:48कच्चे HTTP की तुलना में धीमे होते हैं और वे अधिक मेमोरी का उपयोग करते हैं। और फिर, वे अभी भी टूटे हुए
00:04:54सेलेक्टर की समस्या को ठीक नहीं करते हैं। वे पेज चलाते हैं। वे यह नहीं समझते हैं कि आपका स्क्रैपर क्या निकालने का इरादा रखता था। तो Scrapling के साथ,
00:05:01आप जब हो सके तेज़ फेचिंग का उपयोग कर सकते हैं, जब आवश्यकता हो तो स्टील्थ, जब पेज
00:05:06को आवश्यकता हो तो ब्राउज़र रेंडरिंग का उपयोग करें और एडेप्टिव पार्सिंग का उपयोग करें। तो एक छोटा फ्रंट-एंड परिवर्तन सब कुछ नहीं उड़ाता है। अब, यह सब
00:05:12यह नहीं है कि Scrapling में कोई समस्या नहीं है, है ना? यदि आप डेटा डोम स्तर के संरक्षण,
00:05:17उन्नत फिंगरप्रिंटिंग, या आक्रामक दर सीमाओं से निपट रहे हैं, तो आपको अभी भी अच्छे प्रॉक्सी की आवश्यकता हो सकती है। तो Scrapling
00:05:23मदद कर सकता है, लेकिन यह आपको अदृश्य नहीं बनाता है। डायनामिक फेचिंग का मतलब अतिरिक्त ब्राउज़र सेटअप भी हो सकता है। यह
00:05:29बस एक समझौता है जब जावास्क्रिप्ट रेंडरिंग शामिल होती है। यहाँ इन सबके लिए सोचने वाली बात है।
00:05:34Scrapling कोशिश करने लायक है यदि आप वास्तविक स्क्रैपिंग का काम करते हैं, विशेष रूप से यदि आप डेटा पाइपलाइन बना रहे हैं,
00:05:41आपके पास RAG जॉब्स, AI एजेंट, या कुछ भी है जिसे टारगेट साइट बदलने के बाद भी चलते रहना चाहिए। इसका
00:05:47उपयोग करने का सबसे मजबूत कारण यह नहीं है कि यह स्क्रैपिंग को संभव बनाता है। हमारे पास पहले से ही ऐसे टूल हैं जो
00:05:53वास्तव में ऐसा कर सकते हैं, है ना? सबसे मजबूत कारण यह है कि यह रखरखाव को कम करता है। अब, मैं शायद
00:05:59इसे छोड़ दूँगा यदि आपके पास वास्तव में एक छोटी स्क्रिप्ट है, ठीक है? रिक्वेस्ट्स और ब्यूटीफुल सूप काम कर देंगे,
00:06:04ठीक है? यदि आप इस तरह के कोडिंग टूल का आनंद लेते हैं, तो BetterStack चैनल को सब्सक्राइब करना सुनिश्चित करें। हम आपको अगले वीडियो में देखेंगे।

Key Takeaway

Scrapling एक एडेप्टिव पायथन फ्रेमवर्क है जो वेबसाइट में संरचनात्मक बदलाव होने पर भी सेलेक्टर को दोबारा लिखे बिना डेटा निष्कर्षण को जारी रखकर स्क्रैपिंग रखरखाव को कम करता है।

Highlights

  • Scrapling एक पायथन वेब स्क्रैपिंग फ्रेमवर्क है जो वेबसाइट के डिज़ाइन बदलने पर भी स्क्रैपर को टूटने से बचाने के लिए एडेप्टिव पार्सिंग का उपयोग करता है।

  • एडेप्टिव मोड सक्रिय होने पर, फ्रेमवर्क एलिमेंट के टैग, एट्रिब्यूट्स, पेरेंट्स और पड़ोसी टेक्स्ट जैसे सुराग रिकॉर्ड करता है ताकि सेलेक्टर दोबारा लिखे बिना डेटा मिल सके।

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

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

  • Scrapling का मुख्य लाभ डेटा पाइपलाइन के रखरखाव में आने वाली कमी है, न कि केवल स्क्रैपिंग को संभव बनाना।

Timeline

वेब स्क्रैपिंग में संरचनात्मक विफलता की समस्या

  • वेबसाइट पर क्लास का नाम बदलने या DOM संरचना बदलने पर पारंपरिक स्क्रैपर अक्सर विफल हो जाते हैं।
  • Scrapling वेबसाइट के बदलते स्वरूप के अनुसार खुद को अनुकूलित करने के लिए डिज़ाइन किया गया है।

पारंपरिक स्क्रैपर केवल विशिष्ट CSS सेलेक्टर पर निर्भर होते हैं। जब वेबसाइट अपना लेआउट या एलिमेंट आईडी बदलती है, तो ये सेलेक्टर बेकार हो जाते हैं और डेटा पाइपलाइन रुक जाती है। Scrapling का दावा है कि यह ऐसे बदलावों के बावजूद कार्य करना जारी रखता है।

एडेप्टिव पार्सिंग और कार्यप्रणाली

  • ऑटोसेव और एडेप्टिव मोड चालू करने पर Scrapling एलिमेंट की संरचनात्मक विशेषताओं को रिकॉर्ड करता है।
  • क्लास या आईडी बदलने पर, यह सहेजे गए सुरागों के माध्यम से एलिमेंट को पुन: पहचान लेता है।

Scrapling केवल क्लास नाम पर निर्भर रहने के बजाय टैग, पेरेंट्स, चिल्ड्रेन और पड़ोसी टेक्स्ट के आधार पर एलिमेंट की पहचान करता है। यह तकनीक छोटे-मोटे रीडिज़ाइन के बाद भी स्क्रैपर को टूटने से बचाती है। उपयोगकर्ता को केवल कोड में 'adaptive=True' सेट करने की आवश्यकता होती है।

फ्रेमवर्क के मुख्य घटक और तुलना

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

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

सीमाएं और उपयोग के मामले

  • बेहद उन्नत फिंगरप्रिंटिंग या आक्रामक दर सीमाओं वाली साइटों के लिए अभी भी समर्पित प्रॉक्सी की आवश्यकता होती है।
  • यह उपकरण RAG जॉब्स और AI एजेंटों के लिए उपयोगी है जिन्हें निरंतर डेटा प्रवाह की आवश्यकता होती है।

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

Community Posts

No posts yet. Be the first to write about this video!

Write about this video