पाइथन के साथ एआई सीखें · पाठ

बड़े डेटासेट का पृष्ठांकन और संग्रह

पृष्ठांकन, next_cursor पैटर्न, time.sleep से दर सीमित करना और प्रगति पट्टियाँ संभालना।

पाठ 2, कुल 4 में से13 चरण

बड़े डेटासेट का पृष्ठांकन और संग्रह, CoddyKit पर पाइथन के साथ एआई सीखें का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह पाइथन के साथ एआई सीखें सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। पाइथन के साथ एआई सीखें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

पृष्ठांकन क्यों मौजूद है

API बहुत कम ही एक प्रतिक्रिया में लाखों रिकॉर्ड लौटाते हैं। वे परिणामों को पृष्ठों में बाँट देते हैं, ताकि हर प्रतिक्रिया छोटी और तेज़ रहे।

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

पृष्ठ संख्या द्वारा पृष्ठांकन

सबसे सरल तरीके में page पैरामीटर का उपयोग होता है। API द्वारा खाली पृष्ठ लौटाने तक आप इसकी संख्या बढ़ाते जाते हैं।

import requests

all_items = []
page = 1
while True:
    resp = requests.get(url, params={"page": page, "per_page": 100}, timeout=10)
    resp.raise_for_status()
    items = resp.json()
    if not items:
        break
    all_items.extend(items)
    page += 1
print(len(all_items), "items collected")

कर्सर / अगले URL द्वारा पृष्ठांकन

कई आधुनिक API अगले पृष्ठ की ओर संकेत करने वाला अगला URL या कर्सर टोकन लौटाते हैं। जब तक अगली कड़ी मौजूद हो, तब तक लूप चलाइए।

यह विश्वसनीय है, क्योंकि अगला पृष्ठ कहाँ से शुरू होगा, यह सर्वर नियंत्रित करता है।

all_items = []
next_url = "https://api.example.com/items?limit=100"
while next_url:
    resp = requests.get(next_url, timeout=10)
    resp.raise_for_status()
    data = resp.json()
    all_items.extend(data["results"])
    next_url = data.get("next")   # None when no more pages
print(len(all_items))

time.sleep से अनुरोध सीमाओं का पालन

API यह सीमा तय करते हैं कि आप प्रति सेकंड या मिनट कितने अनुरोध भेज सकते हैं। लगातार बहुत अधिक अनुरोध भेजने पर 429 Too Many Requests मिलता है या आपको रोक दिया जाता है।

विनम्रतापूर्वक और सीमा के भीतर रहने के लिए अनुरोधों के बीच थोड़ा time.sleep रखिए।

import time

while next_url:
    resp = requests.get(next_url, timeout=10)
    resp.raise_for_status()
    data = resp.json()
    all_items.extend(data["results"])
    next_url = data.get("next")
    time.sleep(0.5)   # 2 requests per second

अनुरोध-सीमा वाले हेडर पढ़ना

अच्छे API X-RateLimit-Remaining और X-RateLimit-Reset जैसे हेडर में आपकी शेष सीमा बताते हैं।

आप इन्हें पढ़कर हर बार सोने के बजाय केवल सीमा के करीब पहुँचने पर गति कम कर सकते हैं।

remaining = int(resp.headers.get("X-RateLimit-Remaining", 1))
if remaining < 5:
    reset = int(resp.headers.get("X-RateLimit-Reset", 1))
    print("Near limit, sleeping", reset, "s")
    time.sleep(reset)

बैकऑफ़ से 429 को संभालना

यदि आपको 429 मिलता है, तो प्रतिक्रिया में अक्सर Retry-After हेडर होता है, जो बताता है कि कितनी देर प्रतीक्षा करनी है। दोबारा प्रयास करने से पहले उतनी प्रतीक्षा अवश्य कीजिए।

resp = requests.get(url, timeout=10)
if resp.status_code == 429:
    wait = int(resp.headers.get("Retry-After", 5))
    time.sleep(wait)
    resp = requests.get(url, timeout=10)   # retry once

tqdm से प्रगति पट्टियाँ

लंबे डेटा-संग्रह कार्य बिना किसी प्रतिक्रिया के अटके हुए लगते हैं। tqdm किसी भी इटरेबल को लपेटकर दर और ETA के साथ चलती हुई प्रगति पट्टी दिखाता है।

from tqdm import tqdm

for page in tqdm(range(1, 101), desc="Fetching"):
    resp = requests.get(url, params={"page": page}, timeout=10)
    all_items.extend(resp.json())
    time.sleep(0.2)

अज्ञात कुल संख्या के साथ tqdm

कर्सर पृष्ठांकन में आपको शुरुआत में कुल संख्या पता नहीं होती। tqdm को मैन्युअल काउंटर की तरह उपयोग कीजिए और हर लूप में update() कॉल कीजिए।

from tqdm import tqdm

pbar = tqdm(desc="Pages")
while next_url:
    resp = requests.get(next_url, timeout=10)
    data = resp.json()
    all_items.extend(data["results"])
    next_url = data.get("next")
    pbar.update(1)
pbar.close()

क्रमिक डेटा-संग्रह

बहुत बड़े डेटासेट के लिए सब कुछ मेमोरी में न रखें। क्रमिक डेटा-संग्रह हर पृष्ठ के आते ही उसे डिस्क पर लिखता है, इसलिए क्रैश होने पर सारी प्रगति नष्ट नहीं होती।

import json

with open("items.jsonl", "w") as f:
    while next_url:
        resp = requests.get(next_url, timeout=10)
        data = resp.json()
        for item in data["results"]:
            f.write(json.dumps(item) + "\n")
        next_url = data.get("next")

फिर से शुरू किया जा सकने वाला डेटा-संग्रह

अंतिम कर्सर या पृष्ठ संख्या सहेजिए, ताकि दोबारा चलाने पर शुरुआत से शुरू करने के बजाय कार्य फिर से शुरू किया जा सके। इससे लंबे कार्य त्रुटि-सहिष्णु बनते हैं।

import os

start_page = 1
if os.path.exists("checkpoint.txt"):
    start_page = int(open("checkpoint.txt").read()) + 1

for page in range(start_page, 1000):
    # ... fetch and store ...
    open("checkpoint.txt", "w").write(str(page))

सभी हिस्सों को जोड़ना

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

from tqdm import tqdm
import time, json

with open("out.jsonl", "a") as f:
    next_url = "https://api.example.com/items?limit=100"
    pbar = tqdm(desc="Pages")
    while next_url:
        r = requests.get(next_url, timeout=10)
        r.raise_for_status()
        d = r.json()
        for it in d["results"]:
            f.write(json.dumps(it) + "\n")
        next_url = d.get("next")
        pbar.update(1)
        time.sleep(0.3)

त्वरित जाँच: कर्सर पृष्ठांकन

कोई API "next" फ़ील्ड में URL लौटाता है, या अंतिम पृष्ठ पर None लौटाता है।

पुनरावृत्ति: बड़े डेटासेट एकत्र करना

अब आप कई पृष्ठों में फैले डेटासेट एकत्र कर सकते हैं:

  • पृष्ठ संख्या और कर्सर (while next_url) पृष्ठांकन
  • 429 से बचने के लिए time.sleep और अनुरोध-सीमा वाले हेडर
  • अनुरोध सीमित होने पर Retry-After बैकऑफ़
  • लंबे कार्यों के लिए tqdm प्रगति पट्टियाँ
  • त्रुटि-सहिष्णुता के लिए क्रमिक और फिर से शुरू किया जा सकने वाला लेखन

अगला विषय: एकत्र किए गए डेटा को कुशलता से संग्रहित करना।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
53
पाठ
225

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

क्या “बड़े डेटासेट का पृष्ठांकन और संग्रह” पाठ निःशुल्क है?

हाँ — पाइथन के साथ एआई सीखें अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “बड़े डेटासेट का पृष्ठांकन और संग्रह” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। पाइथन के साथ एआई सीखें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“बड़े डेटासेट का पृष्ठांकन और संग्रह” में मैं क्या सीखूँगा?

पृष्ठांकन, next_cursor पैटर्न, time.sleep से दर सीमित करना और प्रगति पट्टियाँ संभालना। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ पाइथन के साथ एआई सीखें का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या पाइथन के साथ एआई सीखें शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर पाइथन के साथ एआई सीखें शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“बड़े डेटासेट का पृष्ठांकन और संग्रह” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस पाइथन के साथ एआई सीखें पाठ में कोड लिख और चला सकता हूँ?

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

इस पाठ्यक्रम के सभी पाठ

  1. डेटा संग्रह के लिए REST API की मूल बातें
  2. बड़े डेटासेट का पृष्ठांकन और संग्रह
  3. एकत्रित डेटा का कुशल भंडारण
  4. सार्वजनिक डेटा API के साथ कार्य करना
← पाइथन के साथ एआई सीखें पर वापस जाएँ