JavaScript से डेटा निकालना
JavaScript द्वारा उत्पन्न या लोड किया गया डेटा प्राप्त करना सीखें, जिसमें AJAX कॉल और एकल-पृष्ठ अनुप्रयोगों की सामग्री भी शामिल है।
JavaScript से डेटा निकालना, CoddyKit पर वेब स्क्रैपिंग और बॉट का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह वेब स्क्रैपिंग और बॉट सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। वेब स्क्रैपिंग और बॉट पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
गतिशील वेब सामग्री की व्याख्या
कई आधुनिक वेबसाइटें अपनी सारी सामग्री एक साथ लोड नहीं करतीं। इसके बजाय, वे डेटा प्राप्त करने और पृष्ठ को उसके प्रारंभिक रूप से लोड होने के बाद अपडेट करने के लिए JavaScript का उपयोग करती हैं। इसे गतिशील सामग्री कहा जाता है।
Requests और BeautifulSoup जैसे पारंपरिक स्क्रैपिंग उपकरण केवल प्रारंभिक HTML देख पाते हैं। JavaScript द्वारा बाद में लोड की गई सामग्री उनसे छूट जाती है।
लोड करने में JavaScript की भूमिका
JavaScript नए डेटा को कई तरीकों से लोड कर सकता है:
- AJAX Calls: Asynchronous JavaScript and XML। ब्राउज़र पूरे पृष्ठ को दोबारा लोड किए बिना पृष्ठभूमि में सर्वर से डेटा का अनुरोध करता है।
- DOM Manipulation: JavaScript पृष्ठ की संरचना (Document Object Model) में सीधे तत्व जोड़ता, हटाता या संशोधित करता है।
- Single-Page Applications (SPAs): ऐसे संपूर्ण वेबसाइट अनुप्रयोग जिन्हें सामग्री को गतिशील रूप से लोड करने और पूरे पृष्ठ को रीफ़्रेश किए बिना नेविगेट करने के लिए बनाया जाता है।
यह गतिशील लोडिंग स्क्रैपिंग को अधिक जटिल बना देती है।
जब Requests और BS4 पर्याप्त नहीं होते
जब आप Python की requests लाइब्रेरी का उपयोग करते हैं, तो आपको सर्वर द्वारा शुरुआत में भेजा गया मूल HTML मिलता है। यदि वेबसाइट इसके बाद अधिक डेटा लोड करने के लिए JavaScript का उपयोग करती है, तो वह डेटा आपको मिले HTML में नहीं होगा।
BeautifulSoup केवल दिए गए HTML का विश्लेषण कर सकता है। यह अतिरिक्त सामग्री प्राप्त करने या उसके दिखाई देने तक प्रतीक्षा करने के लिए JavaScript चला नहीं सकता।
गतिशील सामग्री के लिए Selenium
यहीं Selenium आवश्यक हो जाता है। Selenium वास्तविक वेब ब्राउज़र (जैसे Chrome या Firefox) को प्रोग्राम के माध्यम से नियंत्रित करता है।
जब Selenium कोई पृष्ठ खोलता है, तो ब्राउज़र सभी JavaScript चलाता है, जिसमें AJAX Calls या DOM में किए गए बदलाव भी शामिल हैं। इसका अर्थ है कि Selenium पूरी तरह रेंडर किया गया पृष्ठ देखता है, ठीक वैसे ही जैसे कोई मानव उपयोगकर्ता देखता।
तत्वों के दिखाई देने तक प्रतीक्षा करना
चूँकि सामग्री गतिशील रूप से लोड होती है, इसलिए Selenium द्वारा पृष्ठ को पहली बार लोड करने पर वह तुरंत उपलब्ध नहीं हो सकती। डेटा निकालने का प्रयास करने से पहले आपको Selenium को किसी विशिष्ट तत्व या शर्त के पूरा होने तक प्रतीक्षा करने के लिए कहना होगा।
यदि आप प्रतीक्षा नहीं करते, तो JavaScript द्वारा उसे रेंडर करने से पहले ही आपकी स्क्रिप्ट उस तत्व को ढूँढ़ने का प्रयास कर सकती है, जिससे त्रुटियाँ या डेटा की कमी हो सकती है।
स्पष्ट प्रतीक्षाओं का उपयोग करना
Selenium का WebDriverWait, ExpectedConditions (EC) के साथ मिलकर, आपको स्पष्ट प्रतीक्षाएँ निर्धारित करने देता है। यह Selenium को किसी निश्चित शर्त के सही होने तक, अधिकतम निर्धारित अवधि तक प्रतीक्षा करने के लिए कहता है।
सामान्य शर्तों में किसी तत्व के दृश्यमान, क्लिक करने योग्य या DOM में मौजूद होने तक प्रतीक्षा करना शामिल है।
इस उदाहरण को चलाने का प्रयास करें:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
def main():
driver = webdriver.Chrome()
driver.get("https://www.selenium.dev/selenium/web/dynamic.html")
# Click a button that will make an element appear after a delay
driver.find_element(By.ID, "adder").click()
# Wait up to 10 seconds for the new element to appear
try:
new_element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "box0"))
)
print("New element found:", new_element.text)
except Exception as e:
print("Element not found within time limit:", e)
driver.quit()
if __name__ == "__main__":
main()रेंडर किए गए डेटा को निकालना
गतिशील सामग्री के दिखाई देने तक सफलतापूर्वक प्रतीक्षा करने के बाद, डेटा निकालना Selenium का उपयोग करके स्थिर सामग्री से डेटा निकालने जैसा ही होता है।
तत्वों को ढूँढ़ने के लिए आप find_element(By.ID, "id_name"), find_element(By.CLASS_NAME, "class_name") या find_element(By.CSS_SELECTOR, "css_selector") जैसी विधियों का उपयोग कर सकते हैं। इसके बाद आप उनका टेक्स्ट या विशेषताएँ प्राप्त कर सकते हैं।
कोड: गतिशील टेक्स्ट प्राप्त करें
यह उदाहरण दिखाता है कि किसी तत्व के लिए प्रतीक्षा करने और फिर उसका टेक्स्ट निकालने का तरीका क्या है। एक ऐसे पृष्ठ की कल्पना करें जहाँ कुछ सेकंड बाद "Loading..." संदेश वास्तविक डेटा में बदल जाता है।
इस उदाहरण को चलाने का प्रयास करें:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
def main():
driver = webdriver.Chrome()
# Using a simple test page that changes content
driver.get("https://www.selenium.dev/selenium/web/dynamic.html")
# Click button to reveal content
driver.find_element(By.ID, "reveal").click()
# Wait for the content to be visible
try:
# The 'revealed' div becomes visible
revealed_div = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID, "revealed"))
)
print("Revealed content:", revealed_div.text)
except Exception as e:
print("Revealed content not found:", e)
driver.quit()
if __name__ == "__main__":
main()सिंगल-पेज ऐप्स को स्क्रैप करना
Single-Page Applications (SPAs) ऐसी वेबसाइटें हैं जो एक HTML पृष्ठ लोड करती हैं और फिर उपयोगकर्ता के इंटरैक्ट करने पर सामग्री को गतिशील रूप से अपडेट करती हैं। SPA के भीतर नेविगेशन में अक्सर पूरे पृष्ठ को दोबारा लोड करना शामिल नहीं होता।
Selenium SPAs को भी अच्छी तरह संभालता है, क्योंकि यह पूर्ण ब्राउज़र की तरह काम करता है। आप तत्वों के साथ इंटरैक्ट करते हैं (जैसे नेविगेशन लिंक पर क्लिक करना), और Selenium JavaScript चलाकर DOM को अपडेट करता है। इसके बाद आप वही प्रतीक्षा और डेटा निकालने की तकनीकें लागू करते हैं।
प्रतीक्षा पर त्वरित जाँच
प्रारंभिक पृष्ठ लोड होने के बाद दिखाई देने वाली गतिशील सामग्री को स्क्रैप करते समय, उसे निकालने का प्रयास करने से पहले उपलब्ध होना सुनिश्चित करने के लिए कौन-सी Selenium तकनीक आवश्यक है?
पुनरावलोकन: गतिशील डेटा निकालना
बहुत बढ़िया! आपने गतिशील वेब सामग्री से निपटना सीख लिया है:
- कई वेबसाइटें AJAX Calls, DOM में बदलाव और SPAs के लिए JavaScript का उपयोग करती हैं।
- Requests और BeautifulSoup जैसे पारंपरिक उपकरण JavaScript चला नहीं सकते।
- पूर्ण ब्राउज़र को नियंत्रित करके Selenium JavaScript को रेंडर कर सकता है।
- स्पष्ट प्रतीक्षाएँ यह सुनिश्चित करने के लिए आवश्यक हैं कि डेटा निकालने से पहले गतिशील रूप से लोड की गई सामग्री मौजूद हो।
यह कौशल आपकी स्क्रैपिंग परियोजनाओं के लिए आधुनिक वेबसाइटों की एक विशाल संख्या के द्वार खोलता है!
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “JavaScript से डेटा निकालना” पाठ निःशुल्क है?
हाँ — वेब स्क्रैपिंग और बॉट अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “JavaScript से डेटा निकालना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। वेब स्क्रैपिंग और बॉट पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“JavaScript से डेटा निकालना” में मैं क्या सीखूँगा?
JavaScript द्वारा उत्पन्न या लोड किया गया डेटा प्राप्त करना सीखें, जिसमें AJAX कॉल और एकल-पृष्ठ अनुप्रयोगों की सामग्री भी शामिल है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ वेब स्क्रैपिंग और बॉट का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या वेब स्क्रैपिंग और बॉट शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर वेब स्क्रैपिंग और बॉट शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“JavaScript से डेटा निकालना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस वेब स्क्रैपिंग और बॉट पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर वेब स्क्रैपिंग और बॉट पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Selenium का परिचय
- ब्राउज़र अंतःक्रियाओं का स्वचालन
- JavaScript से डेटा निकालना
- डायनेमिक पृष्ठों के लिए प्रतीक्षा रणनीतियाँ