वेब स्क्रैपिंग और बॉट · पाठ

डायनेमिक पृष्ठों के लिए प्रतीक्षा रणनीतियाँ

Selenium में स्पष्ट, अंतर्निहित और फ़्लुएंट प्रतीक्षा का अभ्यास कीजिए, ताकि आपका स्क्रैपर अतुल्यकालिक रूप से लोड होने वाली सामग्री को विश्वसनीय ढंग से संभाल सके।

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

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

समय निर्धारण की समस्या

गतिशील पृष्ठ प्रारंभिक HTML लोड होने के बाद सामग्री रेंडर करते हैं। यदि JavaScript द्वारा उसे जोड़ने से पहले आपका स्क्रैपर किसी तत्व को पकड़ लेता है, तो आपको NoSuchElementException या खाली डेटा मिलता है।

प्रतीक्षा की रणनीतियाँ Selenium को पृष्ठ के तैयार होने तक रुकने का निर्देश देती हैं, जिससे स्वचालन अस्थिर होने के बजाय विश्वसनीय बनता है।

सिर्फ sleep() क्यों नहीं

निश्चित time.sleep(5) आकर्षक लगता है, लेकिन यह खराब तरीका है: तेज़ पृष्ठ पर समय व्यर्थ होता है और धीमे पृष्ठ पर फिर भी विफल हो जाता है। स्मार्ट प्रतीक्षा तब तक जाँच करती रहती है, जब तक कोई शर्त सही न हो जाए, और फिर तुरंत आगे बढ़ती है।

import time
time.sleep(5)  # fragile: arbitrary, blocking, often wrong

निहित प्रतीक्षा

निहित प्रतीक्षा एक वैश्विक समय-सीमा निर्धारित करती है। विफल होने से पहले Selenium किसी भी तत्व को खोजने के लिए उतने सेकंड तक पुनः प्रयास करता है।

यह सरल है, लेकिन सभी खोजों पर लागू होती है और दृश्यता या पाठ जैसी मनमानी शर्तों के लिए प्रतीक्षा नहीं कर सकती।

driver.implicitly_wait(10)  # seconds, applies globally

स्पष्ट प्रतीक्षा

स्पष्ट प्रतीक्षा किसी एक विशिष्ट शर्त को लक्ष्य बनाती है। WebDriverWait के साथ expected_conditions जाँच का उपयोग करें। स्क्रैपिंग के लिए यही अनुशंसित तरीका है।

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'results'))
)

सामान्य अपेक्षित शर्तें

expected_conditions मॉड्यूल अधिकांश आवश्यकताओं को पूरा करता है:

  • DOM में presence_of_element_located।
  • visibility_of_element_located रेंडर होकर दिखाई दे रहा हो।
  • element_to_be_clickable इंटरैक्शन के लिए तैयार हो।
  • text_to_be_present_in_element सामग्री की प्रतीक्षा करता है।
EC.visibility_of_element_located((By.CLASS_NAME, 'price'))
EC.element_to_be_clickable((By.ID, 'load-more'))

पाठ की प्रतीक्षा

जब आपको किसी विशिष्ट मान के दिखाई देने की आवश्यकता हो, जैसे API कॉल से लोड हुई कीमत, तो केवल मौजूदगी के बजाय पाठ की प्रतीक्षा करें।

WebDriverWait(driver, 15).until(
    EC.text_to_be_present_in_element((By.ID, 'status'), 'Loaded')
)

फ्लुएंट प्रतीक्षा

फ्लुएंट प्रतीक्षा आपको जाँच के अंतराल को समायोजित करने और प्रतीक्षा के दौरान विशिष्ट अपवादों को अनदेखा करने देती है। धीमे API के लिए यह उपयोगी है, जहाँ अस्थायी त्रुटियाँ आती हैं।

wait = WebDriverWait(driver, timeout=20, poll_frequency=1,
                     ignored_exceptions=[StaleElementReferenceException])
wait.until(EC.presence_of_element_located((By.ID, 'data')))

पुराने तत्वों को संभालना

यदि DOM फिर से रेंडर होता है, तो संग्रहीत तत्व संदर्भ पुराना हो जाता है। पुराने हैंडल का पुनः उपयोग करने के बजाय प्रतीक्षा के अंदर या पृष्ठ के स्थिर होने के बाद तत्व को फिर से खोजें।

from selenium.common.exceptions import StaleElementReferenceException

try:
    el.click()
except StaleElementReferenceException:
    el = driver.find_element(By.ID, 'btn')
    el.click()

पृष्ठ लोड स्थिति की प्रतीक्षा

स्क्रैपिंग से पहले पूरे पृष्ठ का लोड होना सुनिश्चित करने के लिए आप JavaScript के माध्यम से दस्तावेज़ की readyState की जाँच कर सकते हैं।

WebDriverWait(driver, 10).until(
    lambda d: d.execute_script('return document.readyState') == 'complete'
)

रणनीतियों का समझदारी से संयोजन

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

एक विश्वसनीय तरीका

प्रतीक्षाओं को एक सहायक में लपेटें, ताकि हर खोज मजबूत रहे। इससे आपका स्क्रैपिंग कोड साफ और एकसमान बना रहता है।

def wait_for(driver, locator, timeout=10):
    return WebDriverWait(driver, timeout).until(
        EC.visibility_of_element_located(locator)
    )

price = wait_for(driver, (By.CLASS_NAME, 'price')).text

त्वरित जाँच

प्रतीक्षा की रणनीतियों की अपनी समझ जाँचें।

पुनरावलोकन

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

विश्वसनीय प्रतीक्षा स्थिर गतिशील-पृष्ठ स्क्रैपिंग की नींव है।

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

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

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

पाठ्यक्रम
12
पाठ
48

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

क्या “डायनेमिक पृष्ठों के लिए प्रतीक्षा रणनीतियाँ” पाठ निःशुल्क है?

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

“डायनेमिक पृष्ठों के लिए प्रतीक्षा रणनीतियाँ” में मैं क्या सीखूँगा?

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

क्या वेब स्क्रैपिंग और बॉट शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

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

“डायनेमिक पृष्ठों के लिए प्रतीक्षा रणनीतियाँ” पाठ पूरा करने में कितना समय लगता है?

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

क्या मैं इस वेब स्क्रैपिंग और बॉट पाठ में कोड लिख और चला सकता हूँ?

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

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

  1. Selenium का परिचय
  2. ब्राउज़र अंतःक्रियाओं का स्वचालन
  3. JavaScript से डेटा निकालना
  4. डायनेमिक पृष्ठों के लिए प्रतीक्षा रणनीतियाँ
← वेब स्क्रैपिंग और बॉट पर वापस जाएँ