सेक्शन 4 में आपका स्वागत है! हमने स्टेटिक और JavaScript-रेंडर की गई सामग्री को स्क्रैप करने के साथ-साथ मल्टी-पेज साइटों को नेवीगेट करने को कवर किया है। अब, हम प्रत्यक्ष API इंटरैक्शन, फॉर्म सबमिशन, authentication, और GraphQL जैसी विशेष APIs से जुड़े अधिक जटिल परिदृश्यों में गोता लगाते हैं। ये तकनीकें आधुनिक वेब एप्लिकेशन से निपटने के लिए महत्वपूर्ण हैं।
1. API-संचालित वेबसाइटें (अध्याय 7)
कई आधुनिक वेबसाइटें अपना सारा डेटा प्रारंभिक HTML के साथ लोड नहीं करतीं। इसके बजाय, वे पेज लोड होने के बाद बैकएंड APIs से डेटा प्राप्त करने के लिए JavaScript का उपयोग करती हैं (अक्सर fetch या XMLHttpRequest का उपयोग करके)। इन साइटों को कुशलतापूर्वक स्क्रैप करने का मतलब अक्सर UI को बायपास करना और इन APIs के साथ सीधे इंटरैक्ट करना होता है।
मुख्य अवधारणाएं:
- API अनुरोधों की पहचान: डेटा लौटाने वाले अनुरोधों (अक्सर XHR/Fetch) को खोजने के लिए अपने ब्राउज़र के developer tools (Network tab) का उपयोग करें, आमतौर पर JSON प्रारूप में।
- APIs को सीधे स्क्रैप करना: एक बार जब आप API endpoint खोज लेते हैं, तो आप अक्सर
axiosया Node.js में बिल्ट-इनfetchजैसी libraries का उपयोग करके इसे सीधे अनुरोध कर सकते हैं। यह आमतौर पर ब्राउज़र ऑटोमेशन की तुलना में तेज़ और अधिक विश्वसनीय होता है। - Pagination और Parameters को हैंडल करना: APIs अक्सर pagination (
page,limit), filtering, या sorting के लिए query parameters का उपयोग करती हैं। आपको अपनी स्क्रैपिंग स्क्रिप्ट में इन्हें समझना और दोहराना होगा।
चुनौती (अध्याय 7): आप एक ई-कॉमर्स साइट को स्क्रैप करेंगे जहाँ उत्पाद सूची RESTful API से गतिशील रूप से लोड होती है। आपका कार्य इस API के साथ इंटरैक्ट करके, pagination को सही तरीके से हैंडल करके सभी उत्पादों को प्राप्त करना है।
_solved/chapter7/ निर्देशिका में प्रत्यक्ष API स्क्रैपिंग का प्रदर्शन करने वाला संदर्भ समाधान खोजें।
2. फॉर्म और Authentication (अध्याय 8)
अक्सर, मूल्यवान डेटा लॉगिन स्क्रीन के पीछे होता है या जटिल फॉर्म सबमिट करने की आवश्यकता होती है। उदाहरण के लिए, अध्याय 8 में यात्रा बुकिंग प्लेटफॉर्म मुख्य कार्यक्षमता तक पहुंचने के लिए authentication की मांग करता है। गंतव्यों की खोज (autocomplete का उपयोग करके), यात्रा तारीखों का चयन (calendar widget के साथ इंटरैक्ट), फिल्टर लागू करना, और परिणाम देखना (केवल लॉग-इन उपयोगकर्ताओं के लिए उपलब्ध premium listings सहित), आपको पहले लॉगिन प्रक्रिया को स्वचालित करना होगा। इसमें फॉर्म हैंडल करना, session cookies का प्रबंधन (संभावित timeouts सहित जिन्हें re-authentication और CSRF protection की आवश्यकता होती है), और अंततः वास्तविक उपयोगकर्ता की तरह कार्य करने के लिए ब्राउज़र को नियंत्रित करना शामिल है।
मुख्य अवधारणाएं:
- फॉर्म सबमिशन को स्वचालित करना: input fields भरने, विकल्प चुनने, और फॉर्म सबमिट करने के लिए बटन क्लिक करने के लिए Playwright या Puppeteer जैसे tools का उपयोग करें (जैसे लॉगिन फॉर्म, search bars, filter controls)।
- Authentication का प्रबंधन:
- Cookie-आधारित: एक बार लॉग इन करें, और ब्राउज़र संदर्भ (Playwright/Puppeteer द्वारा प्रबंधित) अक्सर बाद के अनुरोधों के लिए session cookies को स्वचालित रूप से हैंडल करता है।
- Token-आधारित (जैसे JWT): लॉग इन करें, टोकन निकालें (अक्सर local storage या API response से), और बाद के API अनुरोधों के लिए इसे headers में शामिल करें (जैसे
Authorization: Bearer <token>)।
- Sessions को हैंडल करना: अपने स्क्रैपर में विभिन्न पेजों या कार्यों में लॉग-इन स्थिति बनाए रखना।
- संरक्षित सामग्री तक पहुंच: एक बार authenticated होने के बाद, आप केवल लॉग-इन उपयोगकर्ताओं के लिए उपलब्ध पेजों या डेटा को नेवीगेट और स्क्रैप कर सकते हैं।
चुनौती (अध्याय 8): इस अध्याय में एक बहु-चरणीय प्रक्रिया शामिल है: साइट में लॉग इन करना, search page पर नेवीगेट करना, filters के साथ जटिल बहु-भाग फॉर्म भरना, परिणाम निकालना (केवल लॉग इन होने पर दिखने वाली premium सामग्री सहित), और यहाँ तक कि उपयोगकर्ता dashboard में खोज सहेजना।
3. GraphQL APIs के साथ काम करना (अध्याय 9)
GraphQL REST APIs का एक तेज़ी से लोकप्रिय विकल्प है। यह clients को एक विशिष्ट query language का उपयोग करके वास्तव में जिन डेटा की आवश्यकता है, उन्हें request करने की अनुमति देता है।
मुख्य अवधारणाएं:
- GraphQL Endpoint: आमतौर पर, एक single endpoint होता है (जैसे
/graphqlया/api/graphql)। - Query Language: आपको retrieve करना चाहते हैं fields और relationships निर्दिष्ट करने के लिए GraphQL queries बनानी होंगी। Insomnia या Postman जैसे tools GraphQL schemas का अन्वेषण करने में मदद कर सकते हैं।
- Mutations: डेटा बदलने वाले कार्यों (जैसे लॉग इन करना या डेटा सबमिट करना) के लिए उपयोग किया जाता है, REST में POST/PUT/DELETE के समान।
- Authentication: अक्सर
Authorizationheader भेजने की आवश्यकता होती है, REST APIs के समान, आमतौर पर login mutation के बाद प्राप्त की जाती है।
चुनौती (अध्याय 9): आप GraphQL API द्वारा समर्थित साइट के साथ इंटरैक्ट करेंगे। कार्य login mutation के माध्यम से authenticate करना और फिर GraphQL queries का उपयोग करके challenges और user profiles के बारे में विशिष्ट संरचित डेटा प्राप्त करना है।
इन एडवांस तकनीकों में महारत हासिल करना उन वेबसाइटों और डेटा की श्रेणी को काफी बढ़ा देता है जिन्हें आप प्रभावी रूप से स्क्रैप कर सकते हैं। हमेशा जिम्मेदारी से स्क्रैप करना और वेबसाइटों की सेवा की शर्तों का सम्मान करना याद रखें।
खुश स्क्रैपिंग!