Blog›Guides

स्क्रैपिंग बंद करें, डाउनलोडिंग शुरू करें: प्रॉम्प्ट डेटा पाने का विनम्र तरीका

विकिप्रॉम्प्ट खोज UI को स्क्रैप करना धीमा, नाजुक, और हमारे सर्वरों पर भारी है। सार्वजनिक बल्क डेटासेट आपको सभी 55,000+ प्रॉम्प्ट्स साफ संरचित JSON में देता है, जिसमें एट्रिब्यूशन शामिल है।

स्क्रैपिंग बंद करें, डाउनलोडिंग शुरू करें: प्रॉम्प्ट डेटा पाने का विनम्र तरीका

स्क्रैपिंग बंद करें, डाउनलोडिंग शुरू करें: प्रॉम्प्ट डेटा पाने का सभ्य तरीका

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

हम ट्रैफ़िक देखते हैं। हर हफ्ते मुट्ठी भर स्क्रैपर्स wikiprompt.org के सर्च पेज पर घूमते हुए यूज़र एजेंट, रैंडम देरी, और कभी-कभी रीट्राई स्टॉर्म के साथ हिट करते हैं जब कोई सेलेक्टर टूट जाता है क्योंकि हमने UI बदलाव भेजा। यह काम करता है, कुछ हद तक, जब तक यह नहीं करता। फिर किसी को स्क्रैपर फिर से लिखना पड़ता है, फिर से, क्योंकि हमने CSS क्लास का नाम बदल दिया या पेजिनेशन का रेंडरिंग तरीका बदल दिया।

इस बीच पूरा कैटलॉग, सभी 55,000+ प्रॉम्प्ट, एक JSON एंडपॉइंट के पीछे बैठा है जो मिलीसेकंड में जवाब देता है और इससे कोई फर्क नहीं पड़ता कि आप कितनी बार पूछते हैं।

साइट स्क्रैप करना यहाँ गलत टूल क्यों है

सर्च UI स्क्रैप करना एक उचित तकनीक है जब कोई विकल्प न हो। यह एक बुरी तकनीक है जब कोई विकल्प हो, और यहाँ बताया गया है कि यह प्रॉम्प्ट कैटलॉग के लिए विशेष रूप से बुरा क्यों है:

  • यह धीमा है। हर /search पेज लोड एक पूरा HTML दस्तावेज़ रेंडर करता है, क्लाइंट-साइड JS चलाता है, और आपको शायद 20-40 परिणाम देता है। सब कुछ पाने के लिए आपको हजारों पेज लोड करने होंगे, जिनमें से हर एक में रेंडरिंग ओवरहेड है जिसकी आपको जरूरत नहीं है।
  • यह नाजुक है। आप मार्कअप पार्स कर रहे हैं, डेटा नहीं। कोई भी CSS रीफैक्टर, कोई भी A/B टेस्ट, कोई भी रीडिज़ाइन चुपचाप आपकी एक्सट्रैक्शन लॉजिक तोड़ देता है। आपको तब तक पता नहीं चलेगा जब तक आपके नंबर गलत न दिखें।
  • यह सर्वर पर भारी लोड डालता है। एक स्क्रैपर को कैश्ड रिस्पॉन्स और ताज़ा रिस्पॉन्स के बीच का अंतर नहीं पता होता। हर रिक्वेस्ट कैश-बस्टिंग क्वेरी बनने का जोखिम उठाती है, और बड़े पैमाने पर यह ठीक उसी तरह का लोड पैटर्न बन जाता है जिससे IP रेट-लिमिटेड या ब्लॉक हो जाते हैं।
  • यह उस संरचना को फेंक देता है जिसे आपको फिर से बनाना होगा। रेंडर किए गए पेज में एक शीर्षक और एक विवरण होता है। यह आपको साफ-साफ model, metadata.aspect_ratio, metadata.style, या वे असेसमेंट स्कोर नहीं देता जो हम इमेज और वीडियो प्रॉम्प्ट से जोड़ते हैं। आप उन फ़ील्ड्स को रिवर्स-इंजीनियर कर रहे होंगे जिन्हें हम पहले से JSON के रूप में प्रकाशित करते हैं।
  • यह कानूनी और नैतिक रूप से गड़बड़ है। स्क्रैप किया गया HTML आपको मूल लेखक तक एट्रिब्यूशन ले जाने का कोई साफ तरीका नहीं देता। संरचित डेटा देता है।
  • इनमें से कोई भी धमकी नहीं है, यह सिर्फ एक विवरण है कि स्क्रैपिंग आपको कितना खर्च करती है। हम चाहेंगे कि आप यह सब छोड़ दें।

    सभ्य तरीका: बल्क डेटासेट

    हम डेटासेट प्रकाशित करते हैं ताकि किसी को हमें स्क्रैप न करना पड़े। पहले मैनिफेस्ट हिट करें:

    curl "https://www.wikiprompt.org/dataset"

    यह total_prompts, record_fields लौटाता है जो आप हर रिकॉर्ड पर उम्मीद कर सकते हैं, और पेजिनेशन स्कीम। फिर /dataset/prompts से रिकॉर्ड खींचें:

    curl "https://www.wikiprompt.org/dataset/prompts?limit=500"

    यह एक रिक्वेस्ट आपको एक रिस्पॉन्स में 500 तक पूरी तरह से संरचित प्रॉम्प्ट रिकॉर्ड देती है, कोई हेडलेस ब्राउज़र नहीं, पार्स करने के लिए कोई HTML नहीं, इंतज़ार करने के लिए कोई रेंडरिंग नहीं। हर रिकॉर्ड में पहले से ही slug, url, title, description, content (वास्तविक प्रॉम्प्ट टेक्स्ट), category, tags, media, model, संरचित metadata ऑब्जेक्ट, author, original_source, और दोनों टाइमस्टैम्प शामिल हैं। यह वह सब कुछ है जिसे आप पेज से स्क्रैप करने की कोशिश कर रहे थे, आपको प्री-पार्स्ड दे दिया गया है।

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

    import requests

    url = "https://www.wikiprompt.org/dataset/prompts?limit=500"

    records = []

    while url:

    resp = requests.get(url).json()

    records.extend(resp["records"])

    url = resp.get("next")

    print(len(records), "prompts pulled, zero pages rendered")

    कोई स्लीप-एंड-रीट्राई लॉजिक नहीं, कोई यूज़र एजेंट रोटेशन नहीं, कोई सेलेक्टर मेंटेनेंस नहीं। पूरा कैटलॉग, एक लूप में जो सेकंडों में चलता है क्योंकि हर रिस्पॉन्स एज-कैश्ड और CORS-सक्षम है (Access-Control-Allow-Origin: *) सीधे ब्राउज़र उपयोग के लिए भी।

    स्क्रैपिंग ने आपको जो कभी नहीं दिया वह आपको क्या मिलता है

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

    हर रिकॉर्ड original_source भी रखता है, मूल ट्वीट या पोस्ट का लिंक जहां से प्रॉम्प्ट आया था। यह वह हिस्सा है जो पुन: उपयोग को वैध बनाता है: wikiprompt.org अन्य लोगों द्वारा लिखे गए सार्वजनिक प्रॉम्प्ट एकत्र करता है, हम अंतर्निहित सामग्री के लेखक नहीं हैं, और यदि आप डेटासेट से खींचते हैं तो आप भी नहीं हैं। जब आप इन रिकॉर्ड्स का उपयोग करते हैं, तो wikiprompt.org को स्रोत के रूप में और व्यक्तिगत प्रॉम्प्ट के लिए original_source को श्रेय दें। हम अन्य लोगों के पोस्ट पर औपचारिक लाइसेंस का दावा नहीं कर रहे हैं, हम सिर्फ कैटलॉग हैं, और हम आपसे भी ऐसा ही व्यवहार करने के लिए कहते हैं।

    यदि आपको पूरे डंप से कुछ संकरा चाहिए

    पूरा डेटासेट बल्क उपयोग, प्रशिक्षण सेट, विश्लेषण, मिरर के लिए है। यदि आपको वास्तव में सिर्फ एक लाइव क्वेरी चाहिए, तो /search स्क्रैप करने के बजाय सर्च API का उपयोग करें, यह एक ही क्वेरी के लिए वही संरचित JSON लौटाता है बिना आपको UI को छूने की जरूरत के। यदि आप एक एजेंट बना रहे हैं, तो MCP सर्वर सर्च, रिट्रीवल, और यहां तक कि सबमिशन को टूल के रूप में उजागर करता है। और यदि आप कोई कोड लिखने से पहले यह पता लगाने की कोशिश कर रहे हैं कि दायरे में क्या है, तो llms.txt नक्शा है।

    वास्तविक अनुरोध

    /search स्क्रैप करने से आपको डेटा की एक बदतर कॉपी मिलती है जिसे हम पहले से मुफ्त में देते हैं, धीमी, अधिक नाजुक, और हमारे सर्वर पर भारी। डेटासेट आपको वही सामग्री देता है, संरचित, समझदारी से पेजिनेटेड, लगातार अपडेट होने वाली, और शुरू करने के लिए आपको एक curl कमांड खर्च करना पड़ता है।

    यदि आप वर्तमान में wikiprompt.org के खिलाफ एक स्क्रैपर बनाए रख रहे हैं, तो हम परेशान नहीं हैं, हम समझते हैं, अधिकांश साइटें यह पेशकश नहीं करतीं। हम करते हैं। अपनी स्क्रिप्ट को /dataset/prompts पर इंगित करें, स्क्रैपर हटाएं, और जो समय आपको वापस मिलता है उसे उस पर खर्च करें जो आप वास्तव में बनाने की कोशिश कर रहे थे।

    Tags
    open-data·dataset·scraping·api·ai-prompts·download