PhantomJS একটি হেডলেস ওয়েব ব্রাউজার (অর্থাৎ, কোনো গ্রাফিক্যাল ইউজার ইন্টারফেস ছাড়াই কাজ করে) যা WebKit রেন্ডারিং ইঞ্জিন ব্যবহার করে ওয়েব পেজের স্ক্রিনশট নেওয়া, পেজের সাথে ইন্টারঅ্যাক্ট করা এবং বিভিন্ন ওয়েব পেজের উপর JavaScript কোড evaluate (মূল্যায়ন) করা যায়।
PhantomJS ওয়েব ডেভেলপমেন্টে বিশেষত automated testing, scraping, performance monitoring, এবং screen capturing এর জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি ওয়েব পেজে থাকা JavaScript কোড চালাতে পারেন এবং পেজের বিভিন্ন ডেটা বের করতে পারেন, পাশাপাশি স্ক্রিনশট বা PDF তৈরি করতে পারেন।
PhantomJS দিয়ে Webpage এর মধ্যে JavaScript কোড Evaluate করা
PhantomJS দিয়ে আপনি ওয়েব পেজের মধ্যে JavaScript কোড রান করতে পারেন এবং তার রেজাল্ট সংগ্রহ করতে পারেন। এই প্রক্রিয়াটি ওয়েব স্ক্র্যাপিং, টেস্টিং এবং অন্যান্য অটোমেশন কাজের জন্য বেশ উপকারী।
JavaScript কোড Evaluate করার জন্য PhantomJS ব্যবহার
PhantomJS এর মাধ্যমে পেজের মধ্যে JavaScript কোড চালানোর জন্য evaluate() ফাংশন ব্যবহার করা হয়। এই ফাংশনটি পেজের মধ্যে JavaScript কোড রান করে এবং এর রেজাল্ট প্রদান করে।
Example: PhantomJS দিয়ে JavaScript কোড Evaluate করা
- PhantomJS স্ক্রিপ্ট তৈরি করা
var page = require('webpage').create(); // A new webpage object
page.open('http://example.com', function(status) { // Open a webpage
if (status === 'success') {
// Use evaluate() to run JavaScript on the webpage
var result = page.evaluate(function() {
// JavaScript code to be executed within the page context
return document.title; // Getting the title of the webpage
});
console.log('Page title is: ' + result); // Log the result (Page Title)
} else {
console.log('Failed to load the page!');
}
phantom.exit(); // Exit PhantomJS
});
Explanation:
page.evaluate(): এটি পেজের মধ্যে JavaScript কোড রান করে এবং তার রিটার্ন ভ্যালু PhantomJS স্ক্রিপ্টে পাঠায়। এখানে, পেজেরdocument.titleনিয়ে আসা হয়েছে।page.open(): এই ফাংশনটি একটি ওয়েব পেজ লোড করে, তারপরevaluate()ব্যবহার করে ওয়েবপেজের ভিতরে JavaScript কোড রান করা হয়।phantom.exit(): স্ক্রিপ্ট শেষ হলে PhantomJS প্রক্রিয়াটি বন্ধ হয়ে যায়।
- JavaScript Object Access
PhantomJS এর মাধ্যমে আপনি ওয়েবপেজের DOM এ থাকা যে কোনো JavaScript object বা মান পরীক্ষা করতে পারেন। উদাহরণস্বরূপ, পেজে থাকা কোনো ভ্যারিয়েবল বা ফাংশনের মান নেওয়া:
var page = require('webpage').create();
page.open('http://example.com', function(status) {
if (status === 'success') {
var pageData = page.evaluate(function() {
// Accessing and returning JavaScript variable or function from page context
var heading = document.querySelector('h1').textContent; // Fetching an h1 element's text
return heading;
});
console.log('Heading from the page: ' + pageData); // Log the heading from the webpage
} else {
console.log('Failed to load the page!');
}
phantom.exit();
});
Explanation:
- এখানে,
document.querySelector('h1')দিয়ে পেজের প্রথমh1ট্যাগের textContent নেওয়া হয়েছে এবংevaluate()এর মাধ্যমে সেই মান PhantomJS স্ক্রিপ্টে পাঠানো হয়েছে।
Common Use Cases for Evaluating JavaScript in PhantomJS:
- Web Scraping: ওয়েবপেজের ডেটা সংগ্রহ করার জন্য, যেমন টাইটেল, টেক্সট, লিঙ্ক বা কোনো নির্দিষ্ট কন্টেন্ট। আপনি পেজের মধ্যে থাকা JavaScript কোড ব্যবহার করে ডেটা সংগ্রহ করতে পারেন।
- Automated Testing: PhantomJS দিয়ে ওয়েবপেজে থাকা JavaScript ফাংশন বা অ্যাপ্লিকেশনের আচরণ পরীক্ষা করা সম্ভব। এর মাধ্যমে আপনি ইউনিট টেস্টিং বা এন্ড-টু-এন্ড টেস্টিং করতে পারেন।
- Page Interactions: PhantomJS দিয়ে আপনি পেজে মাউস ক্লিক, ফর্ম পূরণ, বা স্ক্রলিংয়ের মতো কাজও করতে পারেন। এর মাধ্যমে আপনি ওয়েবপেজের বিভিন্ন ইন্টারঅ্যাকশন পরীক্ষা করতে পারবেন।
- Performance Monitoring: PhantomJS দিয়ে পেজের লোডিং টাইম পরিমাপ করা, স্ক্রিপ্ট সম্পাদন পরিমাপ করা এবং সার্ভারের অবস্থা পরীক্ষা করা সম্ভব।
PhantomJS ব্যবহার করে আপনি ওয়েবপেজের মধ্যে থাকা JavaScript কোড evaluate করতে পারেন এবং সেই কোডের ফলাফল পেতে পারেন। এটি স্ক্র্যাপিং, টেস্টিং এবং অটোমেশন টাস্কের জন্য অত্যন্ত কার্যকরী একটি টুল। evaluate() ফাংশনটি ব্যবহার করে আপনি সহজে পেজের DOM এর উপাদান বা JavaScript ভ্যারিয়েবল নিয়ে কাজ করতে পারেন এবং তা স্ক্রিপ্টে প্রেরণ করতে পারেন।
Read more