পেজের নির্দিষ্ট ডেটা এলিমেন্ট ফিল্টার করা

PhantomJS দিয়ে Web Scraping - ফ্যান্টমজেএস (PhantomJS) - Web Development

280

PhantomJS একটি headless browser যা JavaScript এর মাধ্যমে ওয়েব পেজ রেন্ডারিং এবং স্ক্রিপ্টিং কাজ করে। এটি মূলত Webkit এ ভিত্তি করে তৈরি এবং কোনো গ্রাফিক্যাল ইউজার ইন্টারফেস ছাড়াই ওয়েব পেজের স্ক্রিনশট, PDF আউটপুট, এবং অন্যান্য ব্রাউজারীয় কার্যক্রম সম্পাদন করতে ব্যবহৃত হয়। PhantomJS এর মাধ্যমে web scraping, automated testing, screenshot capturing, এবং আরও অনেক কাজ করা যায়।

এখানে আলোচনা করা হবে কিভাবে PhantomJS ব্যবহার করে একটি ওয়েব পেজের নির্দিষ্ট ডেটা এলিমেন্ট (যেমন: টেক্সট, HTML উপাদান) ফিল্টার করা যায়।

PhantomJS দিয়ে পেজের নির্দিষ্ট ডেটা এলিমেন্ট ফিল্টার করা

PhantomJS ব্যবহার করে ওয়েব পেজ থেকে specific data elements (যেমন: টেক্সট, HTML উপাদান) ফিল্টার করতে আপনি JavaScript কোড ব্যবহার করতে পারবেন। PhantomJS এর মাধ্যমে আপনি ওয়েব পেজ লোড করার পর, সেই পেজের DOM (Document Object Model) থেকে নির্দিষ্ট তথ্য বের করতে পারেন। এটি একটি সাধারণ স্ক্র্যাপিং পদ্ধতি যেখানে আপনি পেজের HTML কনটেন্ট থেকে উপাদান বের করে তার প্রয়োজনীয় ডেটা সংগ্রহ করতে পারেন।

1. PhantomJS দিয়ে ওয়েব পেজ লোড করা

প্রথমে, PhantomJS স্ক্রিপ্ট তৈরি করে ওয়েব পেজ লোড করতে হবে। এরপর সেই পেজের ডেটা ফিল্টার করার জন্য DOM থেকে উপাদান নির্বাচন করা যাবে।

PhantomJS স্ক্রিপ্ট উদাহরণ:

var webpage = require('webpage').create();  // Create a webpage object
var url = 'http://example.com';  // The URL of the page you want to scrape

webpage.open(url, function(status) {
    if (status === 'success') {
        var data = webpage.evaluate(function() {
            // Inside the evaluate function, you can access the DOM
            // Select the elements you want to filter
            var elements = document.querySelectorAll('h1, .main-content p'); // Example: selecting <h1> and <p> with class "main-content"
            
            var textData = [];
            elements.forEach(function(element) {
                textData.push(element.textContent);  // Push text content to array
            });

            return textData;  // Return the filtered text data
        });

        console.log('Filtered Data: ' + JSON.stringify(data));  // Output the filtered data to the console

    } else {
        console.log('Failed to load the page');
    }

    phantom.exit();  // Exit PhantomJS
});

Explanation of Code:

  1. webpage.create(): এটি একটি নতুন ওয়েব পেজ তৈরি করে, যেটি PhantomJS এর মাধ্যমে লোড করা হবে।
  2. webpage.open(): এখানে ওয়েবপেজটি লোড করা হয় এবং evaluate() ফাংশনের মাধ্যমে DOM এর উপর কাজ করা হয়।
  3. document.querySelectorAll(): এই ফাংশনটি নির্দিষ্ট CSS সিলেক্টর ব্যবহার করে HTML উপাদানগুলো নির্বাচন করে। এখানে, h1 এবং .main-content p নির্বাচন করা হয়েছে।
  4. element.textContent: এটি নির্বাচিত এলিমেন্টের টেক্সট কন্টেন্ট বের করে এবং একটি অ্যারে textData তে যোগ করা হয়।
  5. console.log(): স্ক্রিপ্টের শেষে, ফিল্টার করা ডেটা কনসোলে আউটপুট হিসেবে দেখানো হয়।

2. PhantomJS দিয়ে JSON ডেটা ফিল্টার করা

যদি আপনার পেজে কোনো JSON ডেটা থাকে এবং আপনি সেই ডেটা ফিল্টার করতে চান, তাহলে JavaScript ব্যবহার করে এটি করা সম্ভব। এখানে, JSON ডেটা থেকে নির্দিষ্ট কীগুলি বের করার জন্য একটি উদাহরণ দেয়া হল।

var webpage = require('webpage').create();
var url = 'http://example.com/api/data'; // Example URL for JSON data

webpage.open(url, function(status) {
    if (status === 'success') {
        var data = webpage.evaluate(function() {
            // Assuming the response is a JSON object
            var jsonData = JSON.parse(document.body.innerText);  // Parse the JSON data
            var filteredData = jsonData.map(function(item) {
                return {
                    title: item.title, // Extract specific fields from each item
                    description: item.description
                };
            });
            return filteredData;
        });

        console.log('Filtered Data: ' + JSON.stringify(data));  // Output the filtered data
    } else {
        console.log('Failed to load the page');
    }

    phantom.exit();  // Exit PhantomJS
});

Explanation of Code:

  1. JSON Parsing: JSON.parse() ব্যবহার করে ওয়েব পেজের JSON ডেটা প্যার্স করা হয়েছে। সাধারণত, JSON ডেটা HTML পেজের innerText অথবা response body তে থাকে।
  2. Data Mapping: map() ফাংশন ব্যবহার করে JSON ডেটার নির্দিষ্ট কীগুলি (যেমন: title, description) বের করা হয়েছে।

3. PhantomJS ব্যবহার করে HTML ফিল্টারিং

ফিল্টারিংয়ের মাধ্যমে আপনি HTML ডেটা বের করে সেগুলিকে প্রোসেস করতে পারেন। উদাহরণস্বরূপ, আপনি table বা list items থেকে ডেটা বের করে নিতে পারেন।

var webpage = require('webpage').create();
var url = 'http://example.com/products'; // Example page with product list

webpage.open(url, function(status) {
    if (status === 'success') {
        var productData = webpage.evaluate(function() {
            // Extract product details from a table
            var rows = document.querySelectorAll('table.product-list tr');
            var products = [];
            
            rows.forEach(function(row) {
                var cells = row.querySelectorAll('td');
                var product = {
                    name: cells[0].textContent.trim(),
                    price: cells[1].textContent.trim(),
                    description: cells[2].textContent.trim()
                };
                products.push(product);
            });

            return products;
        });

        console.log('Product Data: ' + JSON.stringify(productData));
    } else {
        console.log('Failed to load the page');
    }

    phantom.exit();  // Exit PhantomJS
});

Explanation of Code:

  1. querySelectorAll('table.product-list tr'): এই সিলেক্টরটি product-list নামক table এর সমস্ত row নির্বাচন করে।
  2. textContent: প্রতিটি সেলের (cell) টেক্সট কন্টেন্ট বের করে নিয়ে, একটি অবজেক্টে name, price, এবং description ডেটা সংগ্রহ করা হচ্ছে।
  3. productData: ফিল্টার করা ডেটা একটি অ্যারে আকারে সংরক্ষণ করা হচ্ছে।

4. PhantomJS ব্যবহার করে পেজে স্ক্রিপ্ট চালানো

PhantomJS ব্যবহার করে আপনি JavaScript কোড পেজে চালাতে পারেন এবং DOM এ ম্যানিপুলেশন করতে পারেন। এটি ওয়েব স্ক্র্যাপিং, টেস্টিং বা অ্যাকশন ট্র্যাকিং-এর জন্য উপকারী।

var page = require('webpage').create();
page.open('http://example.com', function(status) {
    if (status === 'success') {
        page.evaluate(function() {
            // You can execute JavaScript directly within the page
            var title = document.title;
            console.log('Page title is: ' + title);
        });
    }
    phantom.exit();
});

PhantomJS একটি শক্তিশালী টুল যা ওয়েব পেজ থেকে ডেটা ফিল্টার, স্ক্র্যাপিং এবং স্ক্রিনশটসহ অন্যান্য কাজের জন্য ব্যবহৃত হয়। আপনি DOM manipulation, JSON parsing, HTML element filtering, এবং automated tasks এর মাধ্যমে অনেক ধরনের ওয়েব অ্যাপ্লিকেশন অটোমেশন করতে পারবেন। PhantomJS এর মাধ্যমে ওয়েব পেজের নির্দিষ্ট ডেটা সংগ্রহ করা সহজ এবং কার্যকরী হয়ে ওঠে, এবং এটি বিভিন্ন ওয়েব ডেভেলপমেন্ট এবং স্ক্র্যাপিং প্রয়োজনে ব্যবহার করা যেতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...