PhantomJS একটি headless browser যা JavaScript ভিত্তিক টেস্টিং, স্ক্র্যাপিং, রেন্ডারিং, এবং অটোমেশন কাজের জন্য ব্যবহৃত হয়। এটি মূলত WebKit এর উপর ভিত্তি করে তৈরি, তবে এটি UI ছাড়া কাজ করে এবং স্ক্রিপ্টিং ক্ষমতা সম্পন্ন। PhantomJS ব্যবহার করে আপনি ওয়েব পেজের স্ক্রিনশট নিতে পারেন, JavaScript কোড রান করতে পারেন এবং বিভিন্ন ওয়েব টেস্টিং এবং স্ক্র্যাপিং কাজ সম্পন্ন করতে পারেন।
এখানে PhantomJS এর মাধ্যমে JavaScript কোড ইন্টারঅ্যাকশন এবং Execute Script এর ব্যবহারের কিভাবে করা যায় তা আলোচনা করা হয়েছে।
PhantomJS এর মাধ্যমে JavaScript কোড ইন্টারঅ্যাকশন এবং Execute Script
PhantomJS আপনাকে ব্রাউজার ভিত্তিক স্ক্রিপ্টিং এবং ওয়েব পেজের সাথে ইন্টারঅ্যাকশন করার ক্ষমতা দেয়। আপনি JavaScript কোড এক্সিকিউট করতে পারেন, যেমন:
- DOM manipulation,
- AJAX requests,
- Form submission,
- Screen capture,
- Execute arbitrary JavaScript ইত্যাদি।
এই সমস্ত কাজ করার জন্য, PhantomJS আপনাকে execute ফাংশন এবং evaluate মেথড ব্যবহার করার সুবিধা দেয়।
PhantomJS Install and Setup:
PhantomJS চালানোর জন্য প্রথমে এটি ইনস্টল করতে হবে। আপনি npm (Node.js package manager) ব্যবহার করে এটি ইনস্টল করতে পারেন:
npm install -g phantomjs
JavaScript কোড execute করার জন্য PhantomJS ব্যবহার
PhantomJS এর মধ্যে JavaScript কোড রানের জন্য, আপনি page.evaluate() মেথড ব্যবহার করতে পারেন, যা browser context এ কোড execute করে এবং এর রিটার্ন ভ্যালু প্রদান করে। এটি মূলত PhantomJS script এর বাইরে থাকে এবং page এর মধ্যে রান হয়।
PhantomJS Example: Execute Script and Interaction
var phantom = require('phantom');
// Start a PhantomJS session
phantom.create().then(function (ph) {
ph.createPage().then(function (page) {
// Open a URL
page.open('https://example.com').then(function (status) {
console.log('Page loaded: ' + status);
// Execute JavaScript in the page context
page.evaluate(function () {
// DOM manipulation or any JavaScript you want to execute in the page
return document.title; // Returning the title of the page
}).then(function (result) {
console.log('Page Title: ' + result); // Print the page title
ph.exit(); // Close PhantomJS session
});
});
});
});
Explanation:
- PhantomJS Session Start: প্রথমে,
phantom.create()মেথড দ্বারা একটি PhantomJS session শুরু হয়। - Page Object Creation: তারপর,
ph.createPage()মেথড ব্যবহার করে একটি new page object তৈরি করা হয়। - Page Open:
page.open('https://example.com')মেথড দ্বারা একটি ওয়েব পেজ ওপেন করা হয়। - JavaScript Execution:
page.evaluate()মেথড ব্যবহার করে JavaScript কোড পেজের মধ্যে রান করা হয় (যেমন ডকুমেন্টের টাইটেল নেয়া)। - Result Handling: রান করার পর, ফলাফলটি callback function এর মাধ্যমে প্রিন্ট করা হয়, এবং PhantomJS session শেষ করা হয়।
PhantomJS এ JavaScript Interaction:
PhantomJS দিয়ে আপনি JavaScript DOM interaction করতে পারেন। যেমন, ফর্ম সাবমিট করা, ক্লিক ইভেন্ট ট্রিগার করা, এবং ফিল্ড ভ্যালু সেট করা।
Form Submit Example:
var phantom = require('phantom');
// Start a PhantomJS session
phantom.create().then(function (ph) {
ph.createPage().then(function (page) {
page.open('https://example.com/login').then(function (status) {
console.log('Page loaded: ' + status);
// Fill in the form and submit
page.evaluate(function () {
document.querySelector('input[name="username"]').value = 'myUsername'; // Set username
document.querySelector('input[name="password"]').value = 'myPassword'; // Set password
document.querySelector('form').submit(); // Submit the form
}).then(function () {
console.log('Form submitted');
ph.exit(); // Exit PhantomJS session
});
});
});
});
Explanation:
- Form Filling: এখানে JavaScript ব্যবহার করে ফর্মের ইনপুট ফিল্ডে মান প্রবেশ করা হয়েছে (
usernameএবংpassword)। - Form Submit: তারপর
form.submit()মেথড দিয়ে ফর্মটি সাবমিট করা হয়েছে।
PhantomJS এবং JavaScript কোড ইন্টারঅ্যাকশন:
PhantomJS আপনাকে JavaScript কোডকে ওয়েব পেজের সাথে ইন্টারঅ্যাকশন করার জন্য কিছু useful methods প্রদান করে:
page.evaluate():- এটি পেজের JavaScript context এর মধ্যে কোড রান করে এবং ফাংশন রিটার্ন করে।
page.injectJs():- এটি external JavaScript files পেজে লোড করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, আপনি একটি jQuery লাইব্রেরি পেজে ইঞ্জেক্ট করতে পারেন।
page.injectJs('jquery.js').then(function () { console.log('jQuery injected'); });page.includeJs():- এটি ওয়েব পেজে একটি external JavaScript file অন্তর্ভুক্ত করতে ব্যবহৃত হয়।
page.includeJs('https://code.jquery.com/jquery-3.6.0.min.js').then(function () { page.evaluate(function () { return $('body').text(); }).then(function (bodyText) { console.log('Page body text: ' + bodyText); }); });
PhantomJS ও JavaScript কোড ইন্টারঅ্যাকশন এর সুবিধা:
- Web Scraping: PhantomJS দিয়ে আপনি ওয়েব পেজ থেকে ডেটা স্ক্র্যাপ করতে পারেন (যেমন টাইটেল, ইমেজ URL, টেক্সট কন্টেন্ট) এবং সেই ডেটাকে প্রক্রিয়াকরণ করতে পারেন।
- Testing: ওয়েব পেজের উপর unit testing এবং integration testing পরিচালনা করতে পারেন।
- Automation: ওয়েব ফর্ম ফিলিং, ক্লিক ইভেন্ট ট্রিগারিং, স্ক্রিনশট গ্রহণ ইত্যাদি অটোমেটেড কাজগুলি করতে পারেন।
- Headless Browsing: এটি headless থাকার কারণে আপনি ব্যাকগ্রাউন্ডে স্ক্রিপ্ট চালাতে পারেন এবং আপনার ব্রাউজারের রিসোর্স খরচ কমাতে পারেন।
PhantomJS একটি শক্তিশালী টুল যা আপনাকে JavaScript code interaction এবং web scraping সহজেই করতে সাহায্য করে। page.evaluate() মেথড ব্যবহার করে আপনি ওয়েব পেজের মধ্যে থাকা কোড এবং DOM এর সাথে ইন্টারঅ্যাকশন করতে পারেন, এবং execute script এর মাধ্যমে JavaScript কোড চালাতে পারেন। এই ক্ষমতাগুলোর মাধ্যমে আপনি ওয়েব অ্যাপ্লিকেশনের automation, testing, এবং scraping কাজগুলো অতি সহজে করতে পারবেন।