PhantomJS একটি হেডলেস ব্রাউজার (headless browser) যা WebKit ইঞ্জিন ব্যবহার করে এবং এটি সার্ভার সাইড ওয়েব স্ক্র্যাপিং, টেস্টিং এবং অটোমেশন টাস্কের জন্য ব্যবহৃত হয়। এটি একটি JavaScript API প্রদান করে যা আপনাকে সম্পূর্ণ ওয়েব পেজের সাথে ইন্টারঅ্যাক্ট করতে দেয়, কিন্তু কোনো UI ছাড়া, যেহেতু এটি গ্রাফিকাল ব্রাউজার নয়।
PhantomJS এর মাধ্যমে পেজ কনটেন্ট বের করা এবং লগ করা
PhantomJS ব্যবহারের অন্যতম প্রধান সুবিধা হল এর হেডলেস অপারেশন, যেখানে আপনি ওয়েব পেজের কনটেন্ট বের করতে, স্ক্রিনশট নিতে, এবং লোগিং করতে পারেন সব কিছু কেবল কমান্ড লাইন থেকে।
PhantomJS এর ইনস্টলেশন:
আপনি PhantomJS ইনস্টল করতে পারবেন বিভিন্ন প্যাকেজ ম্যানেজার যেমন Homebrew (Mac) অথবা npm (Node.js) ব্যবহার করে। অথবা সরাসরি PhantomJS ওয়েবসাইট থেকে ডাউনলোড করতে পারেন।
PhantomJS ইনস্টল করার জন্য npm ব্যবহার করতে পারেন:
npm install phantomjs -g
এটি PhantomJS এর সর্বশেষ সংস্করণ ইনস্টল করবে।
PhantomJS দিয়ে পেজ কনটেন্ট বের করা এবং লগ করা:
আপনি PhantomJS এর মাধ্যমে একটি স্ক্রিপ্ট তৈরি করে পেজের কনটেন্ট বের করতে পারেন এবং লগ করতে পারেন। নিচে একটি উদাহরণ দেওয়া হল:
1. PhantomJS স্ক্রিপ্ট:
// Include the PhantomJS module
var page = require('webpage').create();
// Open a webpage
page.open('http://example.com', function(status) {
if (status === "success") {
// Extract page content (HTML)
var content = page.content;
// Log the content to the console
console.log(content);
} else {
console.log('Page failed to load');
}
// Exit PhantomJS after execution
phantom.exit();
});
Explanation:
require('webpage').create(): এটি PhantomJS এর একটি API যা পেজ তৈরি করতে ব্যবহৃত হয়।page.open(url, function(status) {...}): এটি পেজের URL ওপেন করতে ব্যবহৃত হয়। যখন পেজটি লোড হয়ে যাবে, তখন callback ফাংশনটি কার্যকর হবে।statusএ"success"বা"fail"আসে।page.content: এটি পেজের HTML কনটেন্ট বের করতে ব্যবহৃত হয়।console.log(content): এটি পেজের কনটেন্ট কনসোলে লগ করে।phantom.exit(): স্ক্রিপ্টের শেষে PhantomJS বন্ধ হয়ে যায়।
2. PhantomJS স্ক্রিপ্টের আউটপুট:
আপনি যদি উপরের স্ক্রিপ্ট চালান, তবে এটি example.com এর HTML কনটেন্ট কনসোলে লগ করবে।
Running the PhantomJS script:
ফাইলটি যেমন extract-content.js নামকরণ করুন এবং নিচের কমান্ড দিয়ে PhantomJS স্ক্রিপ্টটি রান করুন:
phantomjs extract-content.js
এটি example.com এর পুরো HTML কনটেন্ট কনসোলে প্রদর্শন করবে।
PhantomJS দিয়ে পেজের বিভিন্ন তথ্য বের করা:
PhantomJS ব্যবহার করে আপনি কেবল HTML কনটেন্টই বের করতে পারবেন না, এছাড়াও আপনি পেজের বিভিন্ন উপাদান যেমন meta tags, links, images, scripts ইত্যাদি বের করতে পারবেন।
Example: Extracting Meta Tags and Links
var page = require('webpage').create();
page.open('http://example.com', function(status) {
if (status === "success") {
// Extracting meta tags
var metaTags = page.evaluate(function() {
var metas = document.getElementsByTagName('meta');
var metaArray = [];
for (var i = 0; i < metas.length; i++) {
metaArray.push(metas[i].outerHTML);
}
return metaArray;
});
// Logging the meta tags to the console
console.log('Meta Tags:');
console.log(metaTags);
// Extracting links
var links = page.evaluate(function() {
var anchors = document.getElementsByTagName('a');
var linkArray = [];
for (var i = 0; i < anchors.length; i++) {
linkArray.push(anchors[i].href);
}
return linkArray;
});
// Logging the links to the console
console.log('Links:');
console.log(links);
} else {
console.log('Page failed to load');
}
phantom.exit();
});
Explanation:
page.evaluate(function() {...}): এই ফাংশনটি PhantomJS-এর ভিতরে ব্রাউজারের DOM এ কোড রান করাতে ব্যবহৃত হয়। এর মাধ্যমে আপনি পেজের উপাদানগুলি যেমন meta tags বা links সংগ্রহ করতে পারেন।- Meta tags এবং links বের করা: কোডে
document.getElementsByTagName()ব্যবহার করে meta tags এবং anchor tags (links) বের করা হয়েছে।
3. Running the Meta Tags and Links Extraction Script:
phantomjs extract-meta-links.js
এটি কনসোলে মেটা ট্যাগ এবং লিঙ্কগুলি প্রদর্শন করবে।
PhantomJS দিয়ে পেজ লগ করা (Logging Page Information):
PhantomJS ব্যবহার করে আপনি console logging করতে পারেন যা একটি পেজের বিভিন্ন কনটেন্ট বা কার্যকলাপ ট্র্যাক করতে সহায়তা করে।
Example: Logging Page Title and Other Information
var page = require('webpage').create();
page.open('http://example.com', function(status) {
if (status === "success") {
// Logging the page title
var title = page.title;
console.log('Page Title: ' + title);
// Logging the page URL
var url = page.url;
console.log('Page URL: ' + url);
// Logging the HTML content
var content = page.content;
console.log('Page Content:');
console.log(content);
} else {
console.log('Page failed to load');
}
phantom.exit();
});
Explanation:
page.title: পেজের শিরোনাম (title) বের করতে ব্যবহৃত হয়।page.url: পেজের URL বের করতে ব্যবহৃত হয়।page.content: পুরো HTML কনটেন্ট বের করা হয়, যা page.content থেকে পাওয়া যায়।
PhantomJS একটি অত্যন্ত শক্তিশালী টুল যা headless browser হিসেবে কাজ করে। এটি ওয়েব পেজের কনটেন্ট বের করতে, লগ করতে, এবং অন্যান্য স্ক্র্যাপিং কাজ করতে ব্যবহৃত হয়। এর JavaScript API দিয়ে আপনি পেজের HTML কনটেন্ট, meta tags, links, এবং অন্যান্য ডেটা সহজে বের করতে পারেন। PhantomJS-এর এই ক্ষমতাগুলি ব্যবহার করে, আপনি ওয়েব স্ক্র্যাপিং, টেস্টিং, এবং অটোমেশন সহজভাবে করতে পারবেন।
Read more