ඔබ කවදාවත් හෙඩ්ලෙස් බ්රවුසරයක් ආරම්භ කර එකම ලිපියක් ලබා ගැනීමට 50 පේළි කේතයක් ලියලා ගොස් තිබ්බා නම්, ඒ වේදනාව හොඳින් දන්නා එකක්. අධික JavaScript භාවිතා කරන නව වෙබ් අඩවිවලින් දත්ත ගන්නා වැඩේ තවත් අභියෝගයකට පත් වෙනවා.
Python දත්ත පයිප්ලයින් එකක් සකස් කරන විට, අපි සාමාන්යයෙන් දෙකේම ගැටලුවකට මුහුණ දෙන්නෙමු: (1) සරල HTTP ප්රතිචාරය හෝ HTML එක ලබා ගැනීම, (2) ඩයිනමික DOM එකක් සමඟ සම්බන්ධ වීම. මේ දෙකම සාර්ථකව කළ හැක්කේ Scrapy සහ Playwright එකිනෙකට වෙන වෙනම භූමිකාවක් ඉටු කරයි.
Scrapy vs Playwright – මූලික වෙනස
- Scrapy: අසින්ක්රෝනස් ක්රෝලර් එන්ජින්. HTTP ප්රතිචාර හෝ සාමාන්ය HTML ලබා ගැනීමට ඉතා වේගවත්, RAM භාවිතය අඩු.
- Playwright: හෙඩ්ලෙස් බ්රවුසරය (Chromium, Firefox, WebKit) භාවිතා කරන automation framework. JavaScript රෙන්ඩරින්, සම්පූර්ණ DOM හා client‑side ක්රියාකාරකම් සක්රීය කරයි, එබැවින් CPU/RAM වැඩි.
ඔබේ ඉලක්ක වෙබ් අඩවිය ස්ථිර HTML හෝ JSON API එකක් දෙනවා නම් Scrapy පාවිච්චි කරන්න. අඩවිය JavaScript මගින් දත්ත පෙන්වන්නේ නම් Playwright අත්යවශ්යයි.
Playwright භාවිතය – සරල සහ පැහැදිලි
Playwright Python context manager එකෙන් සම්පූර්ණ සම්පත් කළමනාකරණය කරයි. සින්ක්රෝනස් උදාහරණයක් මෙහෙමයි:
```python from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(headless=True) page = browser.new_page() page.goto('https://example.com') print(page.title()) browser.close() ```
asyncio loop එකේ එකතු කරන්නේ async_playwright භාවිතා කරමින්. එමගින් වෙබ් සෙලෙකින් වැඩි පරිමාණයේ සේවාදායකයන් සමඟ සම්බන්ධ විය හැක.
Playwright නෙට්වර්ක් ස්ටැක් එකෙන් API කැඳවීම
පේජ් එකේ UI එක රෙන්ඩරින් නොකර, අභ්යන්තර REST endpoint එකකට request context එකෙන් සෘජුවම GET/POST කළ හැක. මෙය CPU ආරක්ෂා කරයි.
Scrapy‑Playwright එකතු කිරීම
Scrapy හි link extractor, scheduler, pipelines වගේ ශක්තිමත් මොඩියුල භාවිතා කරන අතර, JavaScript අවශ්ය පිටු සඳහා Playwright ක්රියාත්මක කරගැනීමට scrapy‑playwright භාවිතා කරයි. Twisted (Scrapy) සහ asyncio (Playwright) අතර event loop ගැටලුව විසඳීමට Twisted‑asyncio reactor එක සකස් කරන්න.
```python import scrapy class PlaywrightQuotesSpider(scrapy.Spider): name = 'playwright_quotes' custom_settings = { 'TWISTED_REACTOR': 'twisted.internet.asyncioreactor.AsyncioSelectorReactor', 'DOWNLOAD_HANDLERS': { 'http': 'scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler', 'https': 'scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler', }, } def start_requests(self): yield scrapy.Request( url='https://quotes.toscrape.com/js/', meta={'playwright': True, 'playwright_include_page': True}, ) ```
මෙම සංකලනයෙන් ඔබට Scrapy හි වේගය සහ Playwright හි JavaScript rendering ශක්තිය එකට ගෙන, ඉක්මනින්, කාර්යක්ෂමව, සහ පිරිසිදු ලෙස දත්ත ගොඩක් ලබාගත හැක.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තරුණ සංවර්ධකයින්ට මේ තාක්ෂණය ඉගෙන ගැනීම අත්යවශ්ය. Scrapy‑Playwright එකතුවෙන් සංකීර්ණ වෙබ් අඩවිවලින් දත්ත ගොඩක් ලබා ගත හැකි නිසා, දේශීය ඩේටා විශ්ලේෂණ, AI මොඩල පුහුණුව, සහ වෙළඳපල අධ්යයන ව්යාපාරයන්ට ඉතා වැදගත් වේ. වැඩි CPU සහ RAM අවශ්යතාවය ඇති නමුත්, Docker හෝ cloud VM භාවිතා කරමින් ඒවා අඩු පිරිවැයට ලබාගත හැකි බැවින්, ස්ථානීය startup සමාගම්ට ගැඹුරු වෙබ් සෙලෙකින් විසඳුම් ඉදිරිපත් කළ හැක.
ඉගෙනුම් ආයතනවල Python පාඨමාලා වල මෙය එක් කිරීමෙන්, සිසුන්ට real‑world data extraction කුසලතාවයන් ලබා දෙන අතර, රැකියා අවස්ථාද බහුලව වේගවත් වේ.
අවසන් වශයෙන්, Scrapy සහ Playwright එකට සම්බන්ධ කිරීමෙන්, ශ්රී ලංකාවේ තාක්ෂණික පදනම තදබල කරගනිමින්, දත්ත‑ආධාරිත තීරණ ගැනීමට මඟ පෙන්වයි.