பிரிவு 4-க்கு வரவேற்கிறோம்! இதுவரை static மற்றும் JavaScript-rendered உள்ளடக்கத்தை scrape செய்வதையும், பல-பக்க தளங்களில் வழிசெல்வதையும் பார்த்துள்ளோம். இப்போது, நேரடி API தொடர்பு, படிவ சமர்ப்பிப்புகள், authentication, மற்றும் GraphQL போன்ற சிறப்பு APIகளை உள்ளடக்கிய இன்னும் சிக்கலான நிலைகளுக்குள் செல்வோம். நவீன web applicationகளை கையாள இந்த முறைகள் மிகவும் அவசியமானவை.
1. API அடிப்படையிலான வலைத்தளங்கள் (அத்தியாயம் 7)
பல நவீன வலைத்தளங்கள் தங்கள் எல்லா தரவையும் ஆரம்ப HTML உடன் ஏற்றுவதில்லை. அதற்கு பதிலாக, பக்கம் ஏற்றப்பட்ட பிறகு backend APIகளிலிருந்து தரவைப் பெற JavaScript-ஐ (அடிக்கடி fetch அல்லது XMLHttpRequest) பயன்படுத்துகின்றன. இத்தகைய தளங்களை திறமையாக scrape செய்வது என்பது, UI-ஐ தவிர்த்து, இந்த APIகளுடன் நேரடியாக தொடர்பு கொள்வதையே பெரும்பாலும் குறிக்கிறது.
முக்கிய கருத்துகள்:
- API கோரிக்கைகளை அடையாளம் காணுதல்: உங்கள் browser-இன் developer tools-ல் (Network tab) தரவைத் திருப்பித் தரும் கோரிக்கைகளை (பொதுவாக XHR/Fetch) கண்டறியுங்கள்; அவை பெரும்பாலும் JSON வடிவத்தில் இருக்கும்.
- APIகளை நேரடியாக scrape செய்வது: ஒரு API endpoint-ஐ கண்டுபிடித்தவுடன்,
axiosபோன்ற libraryகள் அல்லது Node.js-இல் உள்ள built-infetch-ஐ பயன்படுத்தி அதற்கு நேரடியாக கோரிக்கைகளை அனுப்பலாம். இது browser automation-ஐ விட பொதுவாக வேகமாகவும் நம்பகமாகவும் இருக்கும். - Pagination & Parameters கையாளுதல்: APIகள் பெரும்பாலும் pagination (
page,limit), filtering, அல்லது sorting ஆகியவற்றுக்காக query parameterகளைப் பயன்படுத்தும். உங்கள் scraping script-இல் இவற்றைப் புரிந்து அதேபோல் மீண்டும் உருவாக்க வேண்டும்.
சவால் (அத்தியாயம் 7): product listingகள் RESTful API-இலிருந்து dynamic-ஆக ஏற்றப்படும் ஒரு e-commerce தளத்தை நீங்கள் scrape செய்வீர்கள். இந்த API-உடன் தொடர்பு கொண்டு, pagination-ஐ சரியாக கையாள்ந்து, எல்லா productகளையும் பெறுவது உங்கள் பணி.
நேரடி API scraping-ஐக் காட்டும் reference solution-ஐ exercises/chapter-07/solution/src/ அடைவில் காணலாம்.
2. படிவங்களும் Authentication-மும் (அத்தியாயம் 8)
பல நேரங்களில், மதிப்புள்ள தரவு login திரையின் பின்னால் இருக்கும் அல்லது சிக்கலான படிவங்களைச் சமர்ப்பிக்க வேண்டியிருக்கும். உதாரணமாக, அத்தியாயம் 8-இல் உள்ள travel booking platform-இன் முக்கிய செயல்பாடுகளை அணுக authentication தேவைப்படுகிறது. destinationகளைத் தேடவும் (autocomplete பயன்படுத்தி), பயண தேதிகளைத் தேர்ந்தெடுக்கவும் (calendar widget-உடன் தொடர்பு கொண்டு), filterகளைப் பயன்படுத்தவும், மற்றும் முடிவுகளைப் பார்க்கவும் (login செய்த பயனர்களுக்கே கிடைக்கும் premium listingகளையும் சேர்த்து), முதலில் login செயல்முறையை நீங்கள் automate செய்ய வேண்டும். இதற்குள் படிவங்களை கையாளுதல், session cookieகளை நிர்வகித்தல் (மீண்டும் authentication செய்ய வேண்டிய timeoutகள் மற்றும் CSRF protection உட்பட), மற்றும் இறுதியில் உண்மையான பயனரைப் போல செயல்களைச் செய்ய browser-ஐக் கட்டுப்படுத்துதல் ஆகியவை அடங்கும்.
முக்கிய கருத்துகள்:
- படிவ சமர்ப்பிப்புகளை automate செய்வது: Playwright அல்லது Puppeteer போன்ற கருவிகளைப் பயன்படுத்தி input fieldகளை நிரப்பவும், optionகளைத் தேர்ந்தெடுக்கவும், மற்றும் படிவங்களைச் சமர்ப்பிக்க buttonகளை click செய்யவும் (எ.கா., login formகள், search barகள், filter controlகள்).
- Authentication-ஐ நிர்வகித்தல்:
- Cookie-Based: ஒருமுறை log in செய்தால், browser context (Playwright/Puppeteer மூலம் நிர்வகிக்கப்படுகிறது) அடுத்தடுத்த கோரிக்கைகளுக்கான session cookieகளை தானாகவே கையாளும்.
- Token-Based (எ.கா., JWT): log in செய்து, token-ஐ (பொதுவாக local storage அல்லது API response-இலிருந்து) எடுத்துக்கொண்டு, அடுத்தடுத்த API கோரிக்கைகளுக்கான headerகளில் (எ.கா.,
Authorization: Bearer <token>) அதைப் சேர்க்கவும்.
- Sessionகளை கையாளுதல்: உங்கள் scraper-இல் வெவ்வேறு பக்கங்கள் அல்லது செயல்கள் முழுவதும் login செய்யப்பட்ட நிலையைத் தக்கவைத்துக் கொள்ளுங்கள்.
- பாதுகாக்கப்பட்ட உள்ளடக்கத்தை அணுகுதல்: authentication முடிந்ததும், login செய்த பயனர்களுக்கே கிடைக்கும் பக்கங்கள் அல்லது தரவுகளுக்குச் சென்று அவற்றை scrape செய்யலாம்.
சவால் (அத்தியாயம் 8): இந்த அத்தியாயம் பல-படிநிலை செயல்முறையைக் கொண்டுள்ளது: ஒரு தளத்தில் log in செய்வது, search page-க்கு செல்வது, filterகளுடன் கூடிய சிக்கலான பல-பகுதி படிவத்தை நிரப்புவது, முடிவுகளைப் பிரித்தெடுப்பது (login செய்திருக்கும்போது மட்டும் தெரியும் premium உள்ளடக்கத்தையும் சேர்த்து), மேலும் அந்த search-ஐ பயனர் dashboard-இல் சேமிப்பதும் இதில் அடங்கும்.
3. GraphQL APIகளுடன் வேலை செய்வது (அத்தியாயம் 9)
GraphQL என்பது REST APIகளுக்கான அதிகம் பிரபலமடைந்து வரும் ஒரு மாற்று முறையாகும். குறிப்பிட்ட query language-ஐ பயன்படுத்தி, clientகள் தங்களுக்கு தேவையான தரவையே துல்லியமாகக் கோர இது அனுமதிக்கிறது.
முக்கிய கருத்துகள்:
- GraphQL Endpoint: பொதுவாக, ஒரு single endpoint இருக்கும் (எ.கா.,
/graphqlஅல்லது/api/graphql). - Query Language: நீங்கள் பெற விரும்பும் fieldகளையும் relationshipகளையும் குறிப்பதற்காக GraphQL queryகளை உருவாக்க வேண்டும். Insomnia அல்லது Postman போன்ற கருவிகள் GraphQL schemaகளை ஆய்வு செய்ய உதவும்.
- Mutations: தரவை மாற்றும் செயல்களுக்கு பயன்படுத்தப்படுகின்றன (உதாரணமாக log in செய்வது அல்லது தரவைச் சமர்ப்பிப்பது); இது REST-இல் உள்ள POST/PUT/DELETE போன்றது.
- Authentication: பொதுவாக
Authorizationheader-ஐ அனுப்புவது இதில் இருக்கும்; இது REST APIகளைப் போன்றதே, மேலும் பெரும்பாலும் login mutation-க்கு பிறகு பெறப்படுகிறது.
சவால் (அத்தியாயம் 9): GraphQL API ஆதரவுடன் இயங்கும் ஒரு தளத்துடன் நீங்கள் தொடர்பு கொள்வீர்கள். login mutation மூலம் authentication செய்து, பின்னர் GraphQL queryகளைப் பயன்படுத்தி சவால்கள் மற்றும் பயனர் profileகள் பற்றிய குறிப்பிட்ட கட்டமைக்கப்பட்ட தரவைப் பெறுவது இந்தப் பணியாகும்.
இந்த மேம்பட்ட முறைகளில் தேர்ச்சி பெறுவது, நீங்கள் திறம்பட scrape செய்யக்கூடிய வலைத்தளங்களும் தரவுகளும் கொண்ட வரம்பை கணிசமாக விரிவுபடுத்தும். எப்போதும் பொறுப்புடன் scrape செய்யவும், வலைத்தளங்களின் சேவை விதிமுறைகளை மதிக்கவும் என்பதை நினைவில் கொள்ளுங்கள்.
மகிழ்ச்சியான scraping!