আসসালামুআলাইকুম। আশা করি সবাই ভালো আছেন। আজকে আমি আপনাদের সবার সাথে Puppeteer দিয়ে ওয়েব স্ক্র্যাপিং নিয়ে আলোচনা করবো। মূল আলোচনা যাওয়ার আগে আমাদেরকে সর্বপ্রথম জানতে হবে ওয়েব স্ক্র্যাপিং কি? ওয়েব স্ক্র্যাপিং হল একটা ওয়েবসাইট থেকে তথ্য কম্পিউটার প্রোগ্রাম বা সফটওয়্যারের মাধ্যমে সংগ্রহ করা। ধরা যাক, একটা অনলাইন স্টোরের ওয়েবসাইট আছে। আমরা সেই ওয়েবসাইটে গেলে বিভিন্ন পণ্যের তথ্য দেখতে পাই। আমরা যদি চাই, এই ওয়েবসাইটের সবগুলো পণ্যের তথ্য সংগ্রহ করতে, তথন আমাদের বসে বসে ওই ওয়েবসাইটের সবগুলো পেইজে যেতে হবে। তা না করে আমরা একটা সফটওয়্যার লিখতে পারি যে এই কাজটা করে দিবে। অর্থাৎ, ওয়েবসাইটের সবগুলো পেইজ লোড করবে ও পণ্যের তথ্য গুলো সংগ্রহ করে আমাকে দেবে এখন অনেকেই ভাবতে পারেন আজকের পর্বে আমরা অন্যের তথ্যাদি এই জাতীয় যাবতীয় বিষয়াদি দেখাবো কিনা । এখন এই পণ্যের তথ্য সংগ্রহ এবং প্রাইজের বিষয়টি নিয়ে আমরা পরবর্তী পর্বে আলোচনা করব আপাতত আজকের পর্বে আমরা বেসিক বেসিক স্ক্রিপ্ট লিখে কোন প্রকার আউটপুট বের করা যায় কিনা সেসব বিষয়াদি নিয়ে আলোচনায় যাব ।

মুল কার্যক্রম শুরু করার আগে আমাদেরকে কিছু বিষয় সম্পর্কে খেয়াল রাখতে হবে সেই বিষয়গুলো হলো আমরা এখানে ল্যাংগুয়েজ হিসেবে ব্যবহার করব যাব জাভাস্ক্রিপ্ট এবং আমাদের স্ক্র্যাপিং করার জন্য ব্যবহার করব Puppeteer । এখন আপনার কম্পিউটারে অবশ্যই Node-Js (অবশ্যই বর্তমানের এলটিএস ভার্শন ব্যবহার করা প্রয়োজন) ইনস্টল করা থাকতে হবে যার মাধ্যমেই মূলত আমরা এই সকল ধরনের প্রক্রিয়া পরিচালনা করব । Node-Js ইনস্টল করা না থাকলে অবশ্যই এই লিংক থেকে গিয়ে আপনার অপারেটিং সিস্টেম অনুযায়ী ইন্সটল করে ফেলতে হবে এবং ইনস্টলেশন কোন প্রবলেম হলে প্রয়োজনীয় ইউটিউব ভিডিও দেখে ফেলতে হবে - এ জাতীয় হাজার রকম ভিডিও ইউটিউবে পাওয়া যায় যে কারণে এই বিষয়ে আর আলোচনায় যাওয়া হলো না । আর কোন কথা নয় এবার আমরা চলে যাবো আমাদের মূল কার্যক্রমে ।

[ বিশেষ দ্রষ্টব্য : এবার আমরা কিছু জিনিস একটু ইংরেজিতে লিখবো যাতে করে জিনিসপত্র বুঝতে সুবিধা হয় এবং অনেক ক্ষেত্রে এ ধরনের জিনিসপত্রের বঙ্গানুবাদ খুব বেশি পছন্দ সই হয় না ]

প্রথমতঃ ইনস্টলেশন এবং সেটাপ দেখব এবং দ্বিতীয়তঃ আমাদের প্রথম স্ক্রিপ্ট রান করব ।

ইনস্টলেশন এবং সেটাপ Puppeteer

আপনাকে অবশ্যই আপনার Puppeteer প্রজেক্ট তৈরি করতে হবে, প্রজেক্ট এর মধ্যে দিয়ে তারপর npm এবং Puppeteer দিয়ে Puppeteer ইনস্টল করতে হবে।

  1. কমান্ড লাইন ইন্টারফেস/টার্মিনাল খুলতে হবে

  2. আপনার Puppeteer প্রকল্পের জন্য একটি নতুন ডিরেক্টরি তৈরি করুন

বিশেষ দ্রষ্টব্য : উইন্ডোজের ক্ষেত্রে হয়তো আপনারা কমান্ড লাইন ছাড়াই এ কাজ করতে পারবেন

mkdir puppeteer-project
  1. ডিরেক্টরিতে পরিবর্তন করে Puppeteer প্রজেক্ট ডিরেক্টরীতে যেতে হবে
cd puppeteer-project
  1. একটি নতুন npm প্রজেক্ট তৈরি করতে নিম্নলিখিত কমান্ডটি চালান
npm init

এবার সেই মাহেন্দ্রক্ষন

  1. নিম্নলিখিত কমান্ড ব্যবহার করে Puppeteer ইনস্টল করুন
npm install puppeteer

ইনস্টল হয়ে গেলে ব্যাস প্রথম ধাপের কাজ শেষ ।

প্রথম রান করার পালা

এখানে আমরা দেখব একটা ব্রাউজার ওপেন করে কিভাবে ব্রাউজারের মধ্যে টুকিটাকি জিনিসপত্র লেখে তার একটা আউটপুট করে বের করা যায়

  1. VSCode এর puppeteer প্রজেক্ট ডিরেক্টরি নতুন একটি ফাইল index.js খুলতে হবে

  2. ফাইলটিতে নিম্নলিখিত কোডটি কপি করে পেস্ট করতে হবে

// import puppetter
import puppeteer from "puppeteer";

(async () => {
  // launch browser
  const browser = await puppeteer.launch({
    headless: false,
    defaultViewport: { width: 810, height: 1080 },
    userDataDir: "temp",
  });
  const page = await browser.newPage();

  const searchTerm = `github`;

  try {
    await page.goto("https://duckduckgo.com/", {
      waitUntil: "networkidle2",
      timeout: 60000,
    });
    await page.type("#searchbox_input", searchTerm);
    await page.click('button[type="submit"]');
    await page.waitForSelector('[data-testid="result-title-a"]');

    const results = await page.evaluate(() => {
      return [
        ...document.querySelectorAll('[data-testid="result-title-a"] span'),
      ].map((a) => a.innerText);
    });

    console.log(results);
  } catch (error) {
    console.error("Error scraping DuckDuckGo:", error);
  } finally {
    await browser.close();
  }
})();
  1. নিম্নলিখিত কমান্ড লিখে দেখতে হবে আউটপুট কি আসে
node index.js

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