Section 4 میں خوش آمدید! ہم static اور JavaScript-rendered مواد کو scrape کرنے کے ساتھ ساتھ متعدد صفحات والی sites میں navigation بھی کور کر چکے ہیں۔ اب ہم زیادہ پیچیدہ صورتِ حال میں داخل ہوتے ہیں جن میں API کے ساتھ براہِ راست تعامل، form submissions، authentication، اور GraphQL جیسی مخصوص APIs شامل ہیں۔ جدید web applications سے نمٹنے کے لیے یہ techniques نہایت اہم ہیں۔
1. API سے چلنے والی Websites (باب 7)
بہت سی جدید websites اپنا تمام data ابتدائی HTML کے ساتھ load نہیں کرتیں۔ اس کے بجائے وہ صفحہ load ہونے کے بعد backend APIs سے data حاصل کرنے کے لیے JavaScript استعمال کرتی ہیں (اکثر fetch یا XMLHttpRequest کے ذریعے)۔ ایسی sites کو مؤثر انداز میں 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-infetchاستعمال کرتے ہوئے اس پر براہِ راست requests بھیج سکتے ہیں۔ یہ طریقہ عموماً browser automation کے مقابلے میں زیادہ تیز اور زیادہ قابلِ اعتماد ہوتا ہے۔ - Pagination اور Parameters کو Handle کرنا: APIs اکثر pagination (
page,limit)، filtering، یا sorting کے لیے query parameters استعمال کرتی ہیں۔ آپ کو اپنی scraping script میں ان کو سمجھنا اور اسی طرح دہرانا ہوگا۔
چیلنج (باب 7): آپ ایک e-commerce site کو scrape کریں گے جہاں product listings ایک RESTful API سے dynamic طور پر load ہوتی ہیں۔ آپ کا کام یہ ہے کہ اس API کے ساتھ تعامل کرتے ہوئے تمام products حاصل کریں اور pagination کو درست طریقے سے handle کریں۔
ایک حوالہ جاتی solution جو براہِ راست API scraping دکھاتا ہے، exercises/chapter-07/solution/src/ directory میں تلاش کریں۔
2. Forms اور Authentication (باب 8)
اکثر قیمتی data login screen کے پیچھے ہوتا ہے یا اسے حاصل کرنے کے لیے پیچیدہ forms submit کرنا ضروری ہوتا ہے۔ مثال کے طور پر، باب 8 میں travel booking platform اپنی بنیادی functionality تک رسائی کے لیے authentication کا تقاضا کرتا ہے۔ destinations تلاش کرنے کے لیے (autocomplete کے ذریعے)، travel dates منتخب کرنے کے لیے (calendar widget کے ساتھ تعامل کرتے ہوئے)، filters لاگو کرنے کے لیے، اور results دیکھنے کے لیے (جن میں صرف logged-in users کے لیے دستیاب premium listings بھی شامل ہیں)، آپ کو پہلے login process کو automate کرنا ہوگا۔ اس میں forms کو handle کرنا، session cookies کو manage کرنا (جن میں ممکنہ timeouts شامل ہو سکتے ہیں جن کے باعث دوبارہ authentication اور CSRF protection درکار ہو)، اور آخرکار browser کو اس طرح control کرنا شامل ہے کہ وہ ایک حقیقی user کی طرح actions انجام دے۔
اہم تصورات:
- Form Submissions کو Automate کرنا: Playwright یا Puppeteer جیسے tools استعمال کریں تاکہ input fields بھری جا سکیں، options منتخب کیے جا سکیں، اور forms submit کرنے کے لیے buttons پر click کیا جا سکے (مثلاً login forms، search bars، filter controls)۔
- Authentication کو Manage کرنا:
- Cookie-Based: ایک بار login کریں، پھر browser context (جسے Playwright/Puppeteer manage کرتے ہیں) عموماً بعد کی requests کے لیے session cookies خودکار طور پر handle کر لیتا ہے۔
- Token-Based (e.g., JWT): login کریں، token حاصل کریں (اکثر local storage یا کسی API response سے)، اور پھر اسے بعد کی API requests کے headers میں شامل کریں (مثلاً
Authorization: Bearer <token>)۔
- Sessions کو Handle کرنا: اپنے scraper میں مختلف pages یا actions کے دوران logged-in state برقرار رکھیں۔
- محفوظ مواد تک رسائی: authentication کے بعد آپ ان pages یا data تک جا سکتے ہیں اور انہیں scrape کر سکتے ہیں جو صرف logged-in users کے لیے دستیاب ہوں۔
چیلنج (باب 8): اس باب میں ایک متعدد مراحل پر مشتمل عمل شامل ہے: کسی site میں login کرنا، search page تک جانا، filters کے ساتھ ایک پیچیدہ کثیر حصوں والے form کو بھرنا، results حاصل کرنا (جن میں وہ premium content بھی شامل ہے جو صرف login ہونے کی صورت میں نظر آتا ہے)، اور یہاں تک کہ search کو user dashboard میں save کرنا۔
3. GraphQL APIs کے ساتھ کام کرنا (باب 9)
GraphQL، REST APIs کا ایک تیزی سے مقبول ہوتا ہوا متبادل ہے۔ یہ clients کو ایک مخصوص query language استعمال کرتے ہوئے بالکل وہی data طلب کرنے کی سہولت دیتا ہے جس کی انہیں ضرورت ہو۔
اہم تصورات:
- GraphQL Endpoint: عموماً ایک ہی endpoint ہوتا ہے (مثلاً
/graphqlیا/api/graphql)۔ - Query Language: آپ کو مطلوبہ fields اور relationships متعین کرنے کے لیے GraphQL queries تیار کرنا ہوں گی تاکہ مطلوبہ data حاصل کیا جا سکے۔ Insomnia یا Postman جیسے tools، GraphQL schemas کو explore کرنے میں مدد دے سکتے ہیں۔
- Mutations: یہ ان actions کے لیے استعمال ہوتی ہیں جو data کو تبدیل کرتی ہیں (جیسے login کرنا یا data submit کرنا)، اور REST میں POST/PUT/DELETE سے مشابہ ہیں۔
- Authentication: اس میں اکثر
Authorizationheader بھیجنا شامل ہوتا ہے، بالکل REST APIs کی طرح، اور یہ عموماً login mutation کے بعد حاصل ہوتا ہے۔
چیلنج (باب 9): آپ ایک ایسی site کے ساتھ تعامل کریں گے جو GraphQL API سے چلتی ہے۔ کام یہ ہے کہ login mutation کے ذریعے authentication کیا جائے اور پھر GraphQL queries استعمال کرتے ہوئے challenges اور user profiles کے بارے میں مخصوص structured data حاصل کیا جائے۔
ان اعلیٰ درجے کی techniques پر مہارت حاصل کرنے سے websites اور data کی وہ حد بہت وسیع ہو جاتی ہے جسے آپ مؤثر انداز میں scrape کر سکتے ہیں۔ یاد رکھیں کہ ہمیشہ ذمہ داری کے ساتھ scrape کریں اور websites کی terms of service کا احترام کریں۔
خوشگوار scraping!