उन्नत Website इंटरैक्शन और APIs

14 अप्रैल 2025

Section 4 में आपका स्वागत है! अब तक हमने static और JavaScript-rendered सामग्री को scrape करना, साथ ही multi-page साइटों में नेविगेट करना कवर किया है। अब हम उन अधिक जटिल परिदृश्यों में प्रवेश करते हैं जिनमें सीधे API इंटरैक्शन, form submissions, authentication, और GraphQL जैसी specialized APIs शामिल हैं। आधुनिक web applications से निपटने के लिए ये तकनीकें बेहद महत्वपूर्ण हैं।

1. API-Driven Websites (Chapter 7)

कई आधुनिक websites अपना सारा data शुरुआती HTML के साथ लोड नहीं करतीं। इसके बजाय, page लोड होने के बाद वे backend APIs से data प्राप्त करने के लिए JavaScript का उपयोग करती हैं (अक्सर fetch या XMLHttpRequest के जरिए)। ऐसी साइटों को कुशलता से scrape करने का मतलब अक्सर UI को bypass करके सीधे इन APIs से इंटरैक्ट करना होता है।

मुख्य अवधारणाएँ:

  • API Requests की पहचान: अपने browser के developer tools (Network tab) का उपयोग करके उन requests को पहचानें (अक्सर XHR/Fetch) जो data लौटाती हैं, आम तौर पर JSON format में।
  • सीधे APIs को scrape करना: एक बार जब आपको कोई API endpoint मिल जाए, तो आप अक्सर axios जैसी libraries या Node.js में built-in fetch का उपयोग करके सीधे उस पर requests भेज सकते हैं। यह आम तौर पर browser automation की तुलना में तेज़ और अधिक भरोसेमंद होता है।
  • Pagination और Parameters को संभालना: APIs अक्सर pagination (page, limit), filtering, या sorting के लिए query parameters का उपयोग करती हैं। आपको इन्हें समझकर अपनी scraping script में दोहराना होगा।

चुनौती (Chapter 7): आप एक e-commerce site को scrape करेंगे जहाँ product listings एक RESTful API से dynamic रूप से लोड होती हैं। आपका कार्य इस API के साथ इंटरैक्ट करके, pagination को सही ढंग से संभालते हुए, सभी products को प्राप्त करना है।

सीधे API scraping का प्रदर्शन करने वाला एक reference solution exercises/chapter-07/solution/src/ directory में देखें।

2. Forms and Authentication (Chapter 8)

अक्सर मूल्यवान data login screen के पीछे होता है या उसे प्राप्त करने के लिए जटिल forms submit करने पड़ते हैं। उदाहरण के लिए, Chapter 8 में travel booking platform मुख्य functionality तक पहुँचने के लिए authentication की माँग करता है। destinations खोजने के लिए (autocomplete का उपयोग करते हुए), travel dates चुनने के लिए (calendar widget के साथ इंटरैक्ट करते हुए), filters लागू करने के लिए, और results देखने के लिए (जिनमें केवल logged-in users के लिए उपलब्ध premium listings भी शामिल हैं), आपको पहले login प्रक्रिया को automate करना होगा। इसमें forms को संभालना, session cookies का प्रबंधन करना (संभावित timeouts जिनमें दोबारा authentication और CSRF protection की आवश्यकता हो सकती है, सहित), और अंततः browser को इस तरह नियंत्रित करना शामिल है कि वह एक वास्तविक user की तरह actions कर सके।

मुख्य अवधारणाएँ:

  • Form submissions को automate करना: Playwright या Puppeteer जैसे tools का उपयोग करके input fields भरें, options चुनें, और forms submit करने के लिए buttons पर click करें (जैसे login forms, search bars, filter controls)।
  • Authentication का प्रबंधन:
    • Cookie-Based: एक बार log in करें, और browser context (जिसे Playwright/Puppeteer प्रबंधित करता है) बाद की requests के लिए अक्सर session cookies को अपने आप संभाल लेता है।
    • Token-Based (e.g., JWT): log in करें, token निकालें (अक्सर local storage या API response से), और बाद की API requests के लिए उसे headers में शामिल करें (जैसे Authorization: Bearer <token>)।
  • Sessions को संभालना: अपने scraper के भीतर अलग-अलग pages या actions के दौरान logged-in state बनाए रखें।
  • Protected content तक पहुँचना: authentication हो जाने के बाद, आप उन pages या data तक नेविगेट कर सकते हैं और उन्हें scrape कर सकते हैं जो केवल logged-in users के लिए उपलब्ध हैं।

चुनौती (Chapter 8): इस chapter में एक multi-step process शामिल है: किसी site में log in करना, search page तक नेविगेट करना, filters के साथ एक जटिल multi-part form भरना, results निकालना (जिसमें केवल logged in होने पर दिखने वाला premium content भी शामिल है), और यहाँ तक कि search को user dashboard में save करना।

3. Working with GraphQL APIs (Chapter 9)

GraphQL, REST APIs का एक तेजी से लोकप्रिय होता जा रहा विकल्प है। यह clients को एक विशेष query language का उपयोग करके ठीक वही data अनुरोध करने देता है जिसकी उन्हें आवश्यकता होती है।

मुख्य अवधारणाएँ:

  • GraphQL Endpoint: आम तौर पर एक ही endpoint होता है (जैसे /graphql या /api/graphql)।
  • Query Language: आपको GraphQL queries बनानी होंगी ताकि आप वे fields और relationships निर्दिष्ट कर सकें जिन्हें आप प्राप्त करना चाहते हैं। Insomnia या Postman जैसे tools, GraphQL schemas को समझने में मदद कर सकते हैं।
  • Mutations: ऐसे actions के लिए उपयोग होती हैं जो data बदलते हैं (जैसे log in करना या data submit करना), REST में POST/PUT/DELETE की तरह।
  • Authentication: इसमें अक्सर Authorization header भेजना शामिल होता है, REST APIs की तरह, जो आम तौर पर login mutation के बाद प्राप्त होता है।

चुनौती (Chapter 9): आप ऐसी site के साथ इंटरैक्ट करेंगे जिसका backend एक GraphQL API पर आधारित है। कार्य यह है कि login mutation के जरिए authentication करें और फिर GraphQL queries का उपयोग करके challenges और user profiles के बारे में विशिष्ट structured data प्राप्त करें।

इन उन्नत तकनीकों में दक्षता हासिल करने से उन websites और data की सीमा बहुत बढ़ जाती है जिन्हें आप प्रभावी ढंग से scrape कर सकते हैं। याद रखें कि हमेशा जिम्मेदारी से scrape करें और websites की terms of service का सम्मान करें।

scraping की शुभकामनाएँ!