Regex से LLMs तक: अनस्ट्रक्चर्ड वेब डेटा निकालने का मेरा सफर
मैंने एक प्राइस कंपैरिजन टूल बनाने की कोशिश की। इसके लिए दर्जनों ई-कॉमर्स साइटों से प्रोडक्ट डेटा की आवश्यकता थी।
हर साइट अलग-अलग HTML स्ट्रक्चर का उपयोग करती थी। कुछ रैंडम CSS क्लासेस का उपयोग करती थीं। अन्य कंटेंट लोड करने के लिए JavaScript का उपयोग करती थीं।
मेरी पहली योजना में Regex और BeautifulSoup का उपयोग किया गया था। यह दो साइटों के लिए काम कर गया। फिर सब कुछ बिगड़ गया। एक साइट ने अपना लेआउट बदल दिया। दूसरी साइट ने डायनेमिक कंटेंट का उपयोग करना शुरू कर दिया। मैंने डेटा का उपयोग करने के बजाय स्क्रैपर्स को ठीक करने में अधिक समय बिताया।
इसके बाद मैंने LLM का उपयोग करने की कोशिश की। मैंने एक AI को रॉ HTML भेजा और डेटा मांगा। यह भी विफल रहा। आउटपुट असंगत था। AI ने गलत वैल्यूज़ (hallucinated values) दे दीं। मेरी API लागत बढ़ गई क्योंकि HTML बहुत अधिक टोकन का उपयोग करता है।
मुझे एक बीच का रास्ता मिल गया। अब मैं एक हाइब्रिड अप्रोच का उपयोग करता हूँ।
मेरी प्रक्रिया यहाँ दी गई है:
- HTML को प्रीप्रोसेस करें। मैं स्क्रिप्ट, स्टाइल और नेविगेशन बार को हटा देता हूँ। मैं केवल दिखाई देने वाले टेक्स्ट को रखता हूँ। इससे टोकन काउंट कम रहता है।
- JSON मोड का उपयोग करें। मैं LLM को स्ट्रक्चर्ड डेटा वापस करने के लिए मजबूर करने के लिए फंक्शन कॉलिंग का उपयोग करता हूँ।
- रिट्राय लॉजिक (retry logic) जोड़ें। यदि JSON विफल हो जाता है, तो मैं तीन बार तक पुनः प्रयास करता हूँ।
- परिणामों को कैश (cache) करें। बार-बार होने वाले खर्च से बचने के लिए मैं URL के आधार पर सफल एक्सट्रैक्शन को सेव कर लेता हूँ।
स्टैटिक और अच्छी तरह से स्ट्रक्चर्ड पेजों के लिए Regex और BeautifulSoup अभी भी सबसे अच्छे हैं। वे तेज़ और मुफ्त हैं।
अव्यवस्थित या बदलती रहने वाली साइटों के लिए LLMs सबसे अच्छे हैं। वे कोई जादू नहीं हैं। पैसे बचाने के लिए आपको पहले अपने इनपुट को साफ करना होगा।
मेरा वर्तमान वर्कफ़्लो:
• आसान साइटों के लिए एक लाइटवेट पार्सर का उपयोग करें। • अप्रत्याशित साइटों के लिए LLM का उपयोग करें। • प्रति एक्सट्रैक्शन लागत की निगरानी करें। • आउटपुट को वैलिडेट करें ताकि यह सुनिश्चित हो सके कि कीमतें वास्तविक लग रही हैं।
इस बदलाव ने मुझे एक दिन के बजाय एक घंटे में नए स्टोर जोड़ने में मदद की।
अव्यवस्थित वेब डेटा के लिए आपकी रणनीति क्या है? क्या आप LLMs का उपयोग करते हैं या पारंपरिक स्क्रैपर्स पर ही टिके रहते हैं?