Skill

XPath এবং JSoup Integration

জেসুপ (JSoup) - Java Technologies

289

XPath (XML Path Language) হল একটি ভাষা যা XML ডকুমেন্টে নির্দিষ্ট নোড নির্বাচন করতে ব্যবহৃত হয়। যদিও JSoup মূলত HTML ডকুমেন্ট পার্সিংয়ের জন্য ডিজাইন করা, তবে XPath এর সুবিধাও এতে অন্তর্ভুক্ত করা যেতে পারে। XPath একটি শক্তিশালী পদ্ধতি যা আপনাকে HTML বা XML ডকুমেন্টের মধ্যে নির্দিষ্ট এলিমেন্ট খুঁজে বের করতে সাহায্য করে, যেমন একটি নির্দিষ্ট ট্যাগ, ক্লাস, আইডি বা অ্যাট্রিবিউট।

JSoup এর সাথে XPath ব্যবহার করা সম্ভব, যদিও JSoup নিজে XPath এর পূর্ণ সমর্থন দেয় না। তবে, JSoup এ XPath ইন্টিগ্রেশন করার জন্য কিছু অতিরিক্ত লাইব্রেরি বা পদ্ধতি ব্যবহার করা যেতে পারে।


XPath এবং JSoup Integration করার পদ্ধতি

1. JSoup এর মাধ্যমে XPath সমর্থন যোগ করা

যেহেতু JSoup স্বাভাবিকভাবে XPath সিলেকশন সমর্থন করে না, XPath এক্সপ্রেশন ব্যবহার করার জন্য আপনি org.jsoup.select প্যাকেজের Elements এবং Document ক্লাসগুলো ব্যবহার করতে পারেন। এক্ষেত্রে আপনি XPath থেকে সম্পর্কিত স্ট্রিং বা CSS সিলেক্টর ব্যবহার করে ডেটা এক্সট্র্যাক্ট করতে পারেন।

উদাহরণ: XPath এর মতো CSS সিলেক্টর ব্যবহার করা

JSoup এর CSS সিলেক্টরগুলি XPath এর অনেক ফিচারের সমতুল্য, যেমন ট্যাগ নাম, ক্লাস, আইডি ইত্যাদি। আপনি নিম্নলিখিতভাবে XPath এর মতো CSS সিলেক্টর ব্যবহার করতে পারেন:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupExample {
    public static void main(String[] args) {
        String html = "<html><body><div id='main'><h1>Welcome</h1><p class='text'>Hello World</p></div></body></html>";
        
        // HTML ডকুমেন্ট পার্স করা
        Document doc = Jsoup.parse(html);
        
        // CSS সিলেক্টর ব্যবহার করে ডেটা এক্সট্র্যাক্ট করা
        Element heading = doc.select("div#main h1").first();  // XPath: /html/body/div[@id='main']/h1
        System.out.println("Heading: " + heading.text());
        
        // CSS সিলেক্টর ব্যবহার করে প্যারাগ্রাফের টেক্সট এক্সট্র্যাক্ট করা
        Element paragraph = doc.select("p.text").first();  // XPath: /html/body/div[@id='main']/p[@class='text']
        System.out.println("Paragraph: " + paragraph.text());
    }
}

এখানে:

  • doc.select("div#main h1") CSS সিলেক্টরের মাধ্যমে <div id="main"> এর ভিতরের <h1> ট্যাগকে নির্বাচন করা হয়েছে।
  • doc.select("p.text") ক্লাস text এর প্যারাগ্রাফ এলিমেন্ট থেকে টেক্সট এক্সট্র্যাক্ট করা হয়েছে।

এটি XPath এর সমতুল্য, যেখানে div[@id='main'] এবং p[@class='text'] কে CSS সিলেক্টর হিসেবে ব্যবহার করা হয়েছে।


2. XPath সমর্থনকারী অতিরিক্ত লাইব্রেরি ব্যবহার করা

আপনি XPath এর পূর্ণ সমর্থন পেতে XPath সমর্থনকারী কিছু অতিরিক্ত লাইব্রেরি ব্যবহার করতে পারেন, যেমন jsoup-xpath লাইব্রেরি। এটি JSoup ডকুমেন্টের সাথে XPath এক্সপ্রেশন ব্যবহার করার ক্ষমতা প্রদান করে।

jsoup-xpath লাইব্রেরি ইনস্টল করা

Maven এর মাধ্যমে jsoup-xpath লাইব্রেরি ইনস্টল করতে পারেন:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup-xpath</artifactId>
    <version>1.10.3</version>
</dependency>

উদাহরণ: jsoup-xpath ব্যবহার করে XPath দিয়ে ডেটা এক্সট্র্যাক্ট করা

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.jsoup.xpath.XPathEvaluator;

public class JsoupXPathExample {
    public static void main(String[] args) {
        String html = "<html><body><div id='main'><h1>Welcome</h1><p class='text'>Hello World</p></div></body></html>";
        
        // HTML ডকুমেন্ট পার্স করা
        Document doc = Jsoup.parse(html);
        
        // XPath এক্সপ্রেশন ব্যবহার করে ডেটা এক্সট্র্যাক্ট করা
        XPathEvaluator xpath = new XPathEvaluator();
        Elements result = xpath.query(doc, "/html/body/div[@id='main']/h1");
        
        // ফলাফল প্রিন্ট করা
        System.out.println("Heading: " + result.text());
    }
}

এখানে XPathEvaluator ব্যবহার করা হয়েছে query() মেথডের মাধ্যমে XPath এক্সপ্রেশন প্রয়োগ করতে।


সারাংশ

JSoup মূলত CSS সিলেক্টর ভিত্তিক HTML parsing লাইব্রেরি হলেও XPath এর অনেক ফিচার CSS সিলেক্টর ব্যবহার করে সমর্থন করা যায়। তবে, যদি XPath এর পূর্ণ সমর্থন চান, তবে jsoup-xpath লাইব্রেরি ব্যবহার করা যেতে পারে, যা XPath এক্সপ্রেশন ব্যবহার করার ক্ষমতা প্রদান করে। JSoup এর সাথে XPath একত্রে ব্যবহার করার মাধ্যমে আপনি শক্তিশালী এবং লچিল HTML parsing এবং ডেটা এক্সট্র্যাকশন করতে পারবেন।

Content added By

XPath (XML Path Language) একটি কুয়েরি ভাষা যা XML ডকুমেন্টের মধ্যে বিভিন্ন উপাদান এবং তাদের বৈশিষ্ট্যগুলি নির্বাচন করতে ব্যবহৃত হয়। XPath ব্যবহার করে XML বা HTML ডকুমেন্টের নির্দিষ্ট উপাদানকে খুঁজে বের করা যায় এবং ডেটা এক্সট্র্যাক্ট করা যায়। XPath এক্সপ্রেশন ব্যবহার করে একটি নির্দিষ্ট পাথ অনুসরণ করে ডকুমেন্টের বিভিন্ন নোডে অ্যাক্সেস করা সম্ভব হয়।

XPath সাধারণত XML ডকুমেন্টের জন্য ডিজাইন করা হলেও, HTML ডকুমেন্টে এটি কার্যকরীভাবে ব্যবহার করা যায়, বিশেষত যখন DOM (Document Object Model) স্ট্রাকচার XML এর মতো থাকে। তবে, JSoup XPath সাপোর্ট সরাসরি প্রদান না করলেও, CSS সিলেক্টর ব্যবহার করে একই ধরনের কার্যকরী ফলাফল পাওয়া যায়।


JSoup এবং XPath Integration

যদিও JSoup সরাসরি XPath সাপোর্ট করে না, তবে আপনি CSS সিলেক্টর এবং XPath স্টাইল এক্সপ্রেশনগুলির মধ্যে সম্পর্ক তৈরি করতে পারেন। CSS সিলেক্টরগুলো JSoup এ খুব ভালোভাবে সমর্থিত, এবং এগুলোর মাধ্যমে HTML ডকুমেন্টে সহজে এলিমেন্ট সিলেক্ট করা যায়। XPath এক্সপ্রেশন থেকে CSS সিলেক্টর মডেলে রূপান্তর করে JSoup ব্যবহার করা যায়।

JSoup CSS সিলেক্টর ব্যবহার

JSoup এর মাধ্যমে CSS সিলেক্টর ব্যবহার করে HTML ডকুমেন্টের নির্দিষ্ট এলিমেন্ট চয়ন করা হয়। CSS সিলেক্টরের কিছু সাধারণ এক্সপ্রেশন হল:

  • #id: HTML এলিমেন্টের ID এর ভিত্তিতে নির্বাচন।
  • .class: ক্লাসের ভিত্তিতে এলিমেন্ট নির্বাচন।
  • tag: ট্যাগের ভিত্তিতে এলিমেন্ট নির্বাচন।

XPath এর সাথে তুলনা

XPath এবং CSS সিলেক্টরের মধ্যে কিছু মিল রয়েছে। উদাহরণস্বরূপ:

  • XPath: /html/body/div
  • CSS সিলেক্টর: html > body > div

যেহেতু JSoup সরাসরি XPath সমর্থন করে না, এটি CSS সিলেক্টর ব্যবহার করে প্রায় একই কাজ করতে সক্ষম হয়।


উদাহরণ: XPath-এর মতো CSS সিলেক্টর ব্যবহার

ধরা যাক, আমাদের একটি HTML ডকুমেন্ট রয়েছে এবং আমরা সেটি JSoup ব্যবহার করে কিছু এলিমেন্ট এক্সট্র্যাক্ট করতে চাই।

HTML উদাহরণ:

<html>
    <body>
        <div class="content">
            <h1>Welcome to JSoup</h1>
            <p>This is a sample paragraph.</p>
        </div>
        <div id="footer">
            <p>Footer information</p>
        </div>
    </body>
</html>

JSoup উদাহরণ: CSS সিলেক্টর ব্যবহার

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupXPathExample {
    public static void main(String[] args) throws Exception {
        String html = "<html><body><div class='content'><h1>Welcome to JSoup</h1><p>This is a sample paragraph.</p></div><div id='footer'><p>Footer information</p></div></body></html>";
        
        // HTML পার্স করা
        Document doc = Jsoup.parse(html);
        
        // CSS সিলেক্টর ব্যবহার করে div.content থেকে h1 নির্বাচন করা
        Element heading = doc.select("div.content > h1").first();
        System.out.println("Heading: " + heading.text()); // Welcome to JSoup
        
        // CSS সিলেক্টর ব্যবহার করে #footer থেকে প্যারাগ্রাফ নির্বাচন করা
        Element footerParagraph = doc.select("div#footer > p").first();
        System.out.println("Footer: " + footerParagraph.text()); // Footer information
    }
}

এখানে, div.content > h1 CSS সিলেক্টর XPath এর /html/body/div[@class='content']/h1 এর মতো কাজ করছে।


XPath এক্সপ্রেশন এবং JSoup-এর সীমাবদ্ধতা

JSoup সরাসরি XPath সমর্থন না করলেও, CSS সিলেক্টরের মাধ্যমে খুবই কার্যকরীভাবে ডেটা এক্সট্র্যাক্ট করা সম্ভব। XPath এর কিছু জটিল এক্সপ্রেশন যেমন contains(), starts-with() বা text() মেথড JSoup-এ CSS সিলেক্টর ব্যবহার করে কিছুটা পরিবর্তন করেই ব্যবহার করা যেতে পারে।

যেমন:

  • XPath: //div[contains(@class, 'content')]
  • CSS সিলেক্টর: div[class~='content']

তবে, XPath-এর পূর্ণ শক্তি যদি দরকার হয়, তখন আপনাকে XML Parsing লাইব্রেরি যেমন JAXP বা SAX ব্যবহার করতে হবে, যা XPath সমর্থন করে।


সারাংশ

XPath হলো একটি কুয়েরি ভাষা যা XML বা HTML ডকুমেন্টের নির্দিষ্ট এলিমেন্ট খুঁজে বের করতে ব্যবহৃত হয়। যদিও JSoup সরাসরি XPath সাপোর্ট করে না, তবে CSS সিলেক্টর ব্যবহার করে অনেক XPath এর মতো কাজ করা সম্ভব। JSoup এর মাধ্যমে HTML ডকুমেন্টে এলিমেন্ট খুঁজে বের করার জন্য CSS সিলেক্টর একটি কার্যকরী উপায়, এবং XPath এর জটিল এক্সপ্রেশনগুলির জন্য CSS সিলেক্টর ব্যবহার করা যেতে পারে।

Content added By

জেসুপ (JSoup) ব্যবহার করার সময় HTML ডকুমেন্ট থেকে উপাদান নির্বাচন করতে দুটি প্রধান পদ্ধতি ব্যবহৃত হয়: XPath এবং CSS Selectors। দুইটি পদ্ধতিই HTML এলিমেন্টগুলো সিলেক্ট করতে সাহায্য করে, তবে এদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। এই গাইডে আমরা XPath এবং CSS Selectors এর তুলনা করবো।


XPath কি?

XPath (XML Path Language) একটি ভাষা যা XML ডকুমেন্ট থেকে তথ্য এক্সট্র্যাক্ট করার জন্য ব্যবহৃত হয়, তবে এটি HTML ডকুমেন্টের জন্যও প্রযোজ্য। XPath বিভিন্ন উপাদান সিলেক্ট করতে এবং তাদের সম্পর্ক নির্দেশ করতে ব্যবহার করা হয়।

XPath এর বৈশিষ্ট্য

  • গঠনমূলক পদ্ধতি: XPath ডকুমেন্টের গঠন বা স্ট্রাকচার অনুযায়ী উপাদান নির্বাচন করে। এটি ডকুমেন্টের ট্রি বা কাঠামোর মধ্যে নির্দিষ্ট নোডগুলো খুঁজে বের করে।
  • অ্যাডভান্সড সিলেকশন: XPath এর মাধ্যমে এলিমেন্ট নির্বাচন করতে আরও বেশি জটিল পদ্ধতি ব্যবহার করা যেতে পারে, যেমন নির্দিষ্ট অ্যাট্রিবিউটের মান বা আংশিক টেক্সট মিলিয়ে উপাদান খোঁজা।
  • অফলাইন কাজ: XPath XML ডকুমেন্টের জন্য বিশেষভাবে ডিজাইন করা হলেও, HTML ডকুমেন্টের জন্যও এটি কার্যকরী।

XPath এর উদাহরণ

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupExample {
    public static void main(String[] args) throws Exception {
        String html = "<html><body><div id='content'><p class='text'>Hello, World!</p></div></body></html>";
        
        // XPath দিয়ে সিলেকশন
        Document doc = Jsoup.parse(html);
        Element paragraph = doc.selectXpath("//div[@id='content']/p[@class='text']").first();
        System.out.println(paragraph.text());  // Output: Hello, World!
    }
}

এখানে selectXpath() মেথডের মাধ্যমে XPath ব্যবহার করে নির্দিষ্ট div এবং তার ভিতরের p ট্যাগ সিলেক্ট করা হয়েছে।


CSS Selectors কি?

CSS Selectors ওয়েব পেজের HTML ডকুমেন্ট থেকে এলিমেন্ট সিলেক্ট করার একটি সহজ এবং জনপ্রিয় পদ্ধতি। CSS Selectors সাধারাণভাবে এলিমেন্টের id, class, tag, অথবা বিভিন্ন বৈশিষ্ট্য অনুসারে উপাদান সিলেক্ট করতে ব্যবহৃত হয়।

CSS Selectors এর বৈশিষ্ট্য

  • সরলতা: CSS Selectors সাধারণত বুঝতে এবং ব্যবহার করতে সহজ। এটি বিশেষ করে ওয়েব ডিজাইন এবং ডেভেলপমেন্টের জন্য আদর্শ।
  • স্টাইলিং ও সিলেকশন: CSS Selectors মূলত HTML এলিমেন্টের স্টাইলিংয়ের জন্য ডিজাইন করা হলেও, জেসুপ (JSoup) এ এটি ডকুমেন্টের এলিমেন্ট সিলেক্ট করতে ব্যবহৃত হয়।
  • সাধারণ ও কার্যকরী: CSS Selectors সাধারণত ছোট এবং কার্যকরী হয়, তবে কিছু জটিল সিলেকশন যেমন পারেন্ট এলিমেন্ট নির্বাচন করতে XPath তুলনায় কিছু সীমাবদ্ধতা রয়েছে।

CSS Selectors এর উদাহরণ

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupExample {
    public static void main(String[] args) throws Exception {
        String html = "<html><body><div id='content'><p class='text'>Hello, World!</p></div></body></html>";
        
        // CSS Selector দিয়ে সিলেকশন
        Document doc = Jsoup.parse(html);
        Element paragraph = doc.select("div#content p.text").first();
        System.out.println(paragraph.text());  // Output: Hello, World!
    }
}

এখানে select() মেথডের মাধ্যমে CSS Selector ব্যবহার করে div এর ভিতরের p ট্যাগ সিলেক্ট করা হয়েছে।


XPath এবং CSS Selectors এর তুলনা

বৈশিষ্ট্যXPathCSS Selectors
সাধারণ ব্যবহারXML এবং HTML ডকুমেন্টের জন্যHTML ডকুমেন্টের জন্য
সিলেকশন ক্ষমতাগভীর সম্পর্কের মধ্যে এলিমেন্ট সিলেক্ট করতে পারাসহজ এবং সীমিত সিলেকশন
জটিল সিলেকশনখুবই শক্তিশালী, সম্পর্ক ভিত্তিক সিলেকশন সম্ভবসীমিত, তবে সাধারণ সিলেকশন দ্রুত এবং কার্যকর
সিনট্যাক্সজটিল এবং নমনীয়সরল এবং সহজ
পারফরমেন্সকিছুটা ধীর হতে পারে (বিশেষ করে জটিল XPath এর ক্ষেত্রে)দ্রুত এবং বেশি পারফরম্যান্ট
ব্যবহারখুবই ফ্লেক্সিবল, বিশেষ করে সম্পর্ক ভিত্তিক সিলেকশন এবং অ্যাট্রিবিউট অনুসন্ধানসাধারাণত ওয়েব পেজের এলিমেন্ট সিলেক্ট করার জন্য ব্যবহৃত

সারাংশ

XPath এবং CSS Selectors উভয়ই HTML ডকুমেন্ট থেকে এলিমেন্ট সিলেক্ট করার জন্য ব্যবহৃত হয়, তবে এদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। XPath একটি শক্তিশালী এবং নমনীয় সিলেকশন পদ্ধতি যা ডকুমেন্টের গঠন এবং সম্পর্কের ভিত্তিতে এলিমেন্ট সিলেক্ট করতে সক্ষম। অন্যদিকে, CSS Selectors সহজ এবং দ্রুত পদ্ধতিতে এলিমেন্ট সিলেক্ট করতে সাহায্য করে, তবে কিছু জটিল সিলেকশন XPath তুলনায় সীমাবদ্ধ। একদিকে XPath যেখানে সম্পর্ক ভিত্তিক এবং জটিল সিলেকশন করতে সক্ষম, CSS Selectors সরল এবং দ্রুত পদ্ধতিতে কাজ করে, যা সাধারণত ওয়েব স্ক্র্যাপিংয়ের জন্য আদর্শ।

Content added By

XPath (XML Path Language) একটি ভাষা যা XML বা HTML ডকুমেন্টের মধ্যে নির্দিষ্ট উপাদানগুলিকে সনাক্ত করতে ব্যবহৃত হয়। জেসুপ (JSoup) সরাসরি XPath সমর্থন করে না, তবে আপনি CSS সিলেক্টর ব্যবহার করে HTML ডকুমেন্টের মধ্যে উপাদান নির্বাচন করতে পারেন, যা XPath এর সমতুল্য একটি পদ্ধতি।

এখন, আমরা জেসুপ দিয়ে CSS সিলেক্টর ব্যবহার করে কিভাবে কমপ্লেক্স HTML উপাদান এক্সট্র্যাক্ট করা যায়, তা দেখবো।


জেসুপ দিয়ে Complex HTML Elements Extraction

HTML ডকুমেন্টের উদাহরণ

ধরা যাক, আমাদের একটি জটিল HTML ডকুমেন্ট আছে যেখানে বিভিন্ন ধরণের ট্যাগ এবং ক্লাস রয়েছে। নিচে এমন একটি উদাহরণ দেওয়া হয়েছে:

<html>
<head>
    <title>Complex HTML Example</title>
</head>
<body>
    <div class="container">
        <h1>Welcome to the Complex HTML Example</h1>
        <p class="intro">This is an introduction paragraph.</p>
        <div class="section">
            <h2>Section 1</h2>
            <p class="description">This is the first section's description.</p>
        </div>
        <div class="section">
            <h2>Section 2</h2>
            <p class="description">This is the second section's description.</p>
        </div>
        <a href="https://example.com" class="link">Go to Example</a>
    </div>
</body>
</html>

এখানে, একটি div ট্যাগের মধ্যে কয়েকটি উপাদান রয়েছে, যেমন h1, p, এবং a ট্যাগ, যা আলাদা আলাদা ক্লাস সহ রয়েছে।


CSS সিলেক্টর ব্যবহার করে Complex Elements Extraction

জেসুপ সরাসরি XPath সমর্থন না করলেও, CSS সিলেক্টর ব্যবহার করে আপনি কার্যকরভাবে HTML উপাদান এক্সট্র্যাক্ট করতে পারেন। CSS সিলেক্টরের মাধ্যমে আমরা খুব সহজেই যেকোনো HTML ট্যাগ বা ক্লাস নির্বাচন করতে পারি।

উদাহরণ

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupXPathExample {
    public static void main(String[] args) throws Exception {
        String html = "<html><head><title>Complex HTML Example</title></head><body>" +
                      "<div class='container'>" +
                      "<h1>Welcome to the Complex HTML Example</h1>" +
                      "<p class='intro'>This is an introduction paragraph.</p>" +
                      "<div class='section'>" +
                      "<h2>Section 1</h2>" +
                      "<p class='description'>This is the first section's description.</p>" +
                      "</div>" +
                      "<div class='section'>" +
                      "<h2>Section 2</h2>" +
                      "<p class='description'>This is the second section's description.</p>" +
                      "</div>" +
                      "<a href='https://example.com' class='link'>Go to Example</a>" +
                      "</div>" +
                      "</body></html>";
        
        // HTML পার্স করা
        Document doc = Jsoup.parse(html);
        
        // CSS সিলেক্টর ব্যবহার করে বিভিন্ন উপাদান এক্সট্র্যাক্ট করা
        Element title = doc.select("h1").first();  // প্রথম h1 ট্যাগ
        Element introParagraph = doc.select(".intro").first();  // intro ক্লাসের প্রথম p ট্যাগ
        Elements sections = doc.select(".section");  // সকল section ক্লাসের div ট্যাগ
        Element link = doc.select(".link").first();  // link ক্লাসের প্রথম a ট্যাগ
        
        // উপাদানগুলো প্রদর্শন করা
        System.out.println("Title: " + title.text());
        System.out.println("Intro Paragraph: " + introParagraph.text());
        
        for (Element section : sections) {
            System.out.println("Section: " + section.select("h2").text() + " - " + section.select(".description").text());
        }
        
        System.out.println("Link: " + link.attr("href"));
    }
}

ব্যাখ্যা

  • doc.select("h1").first() — এই CSS সিলেক্টর প্রথম h1 ট্যাগটি নির্বাচন করে।
  • doc.select(".intro").first() — এখানে .intro ক্লাসের প্রথম p ট্যাগটি নির্বাচন করা হয়েছে।
  • doc.select(".section").section ক্লাসের সকল div ট্যাগ নির্বাচন করা হয়েছে।
  • doc.select(".link").first().link ক্লাসের প্রথম a ট্যাগটি নির্বাচন করা হয়েছে।
  • .text() এবং .attr("href").text() মেথড দ্বারা টেক্সট এক্সট্র্যাক্ট করা এবং .attr("href") দ্বারা লিঙ্কের URL পাওয়া গেছে।

XPath এর সাথে তুলনা

যদিও জেসুপ সরাসরি XPath সমর্থন করে না, তবুও CSS সিলেক্টর ব্যবহার করে আপনি কার্যকরভাবে XPath এর মতো ফিচার পেতে পারেন। XPath এর মতোই, CSS সিলেক্টরও নির্দিষ্ট উপাদান নির্বাচন করতে সাহায্য করে, তবে XPath সিলেকশন অনেক বেশি জটিল এবং নিখুঁত হতে পারে।


সারাংশ

জেসুপ (JSoup) সরাসরি XPath সমর্থন না করলেও, CSS সিলেক্টরের মাধ্যমে আপনি HTML ডকুমেন্টের জটিল উপাদানগুলো সহজে এক্সট্র্যাক্ট করতে পারেন। CSS সিলেক্টরের ব্যবহার খুবই সহজ এবং কার্যকর, যা আপনাকে বিভিন্ন ট্যাগ, ক্লাস এবং অন্যান্য HTML উপাদান সিলেক্ট করতে সহায়তা করে। select() মেথড ব্যবহার করে সহজেই কমপ্লেক্স HTML ডকুমেন্ট থেকে ডাটা বের করা সম্ভব।

Content added By

XPath এবং JSoup দুটোই HTML বা XML ডকুমেন্ট থেকে ডাটা এক্সট্র্যাক্ট করতে ব্যবহৃত হয়। যদিও জেসুপ নিজের API দিয়ে HTML ডকুমেন্ট থেকে ডাটা বের করার জন্য খুবই শক্তিশালী, তবুও অনেক সময় XPath ব্যবহার করা হয় যখন আরো জটিল ও নির্দিষ্ট পাথের মাধ্যমে ডাটা এক্সট্র্যাক্ট করতে হয়। JSoup ডকুমেন্ট থেকে XPath মত চাহিদা অনুযায়ী ডাটা বের করার জন্য .select() মেথডে CSS সিলেক্টর ব্যবহার করে কাজ করে।

এই টিউটোরিয়ালে আমরা দেখব কিভাবে XPath ধারণাকে JSoup-এ কনভার্ট করে ডাটা এক্সট্র্যাক্ট করা যায়।


XPath এবং JSoup এর মধ্যে পার্থক্য

  • XPath: XML বা HTML ডকুমেন্টের নির্দিষ্ট এলিমেন্ট বা নোডের অবস্থান চিহ্নিত করার জন্য ব্যবহৃত একটি ভাষা।
  • JSoup: Java লাইব্রেরি যা HTML ডকুমেন্ট পার্সিং এবং ডেটা এক্সট্র্যাকশনের জন্য ব্যবহৃত হয়, এবং CSS সিলেক্টর ব্যবহার করে ডাটা এক্সট্র্যাক্ট করা যায়।

JSoup দিয়ে XPath সমতুল্য ডাটা এক্সট্র্যাকশন

যদিও জেসুপ সরাসরি XPath সমর্থন করে না, তবে CSS সিলেক্টর ব্যবহার করে আপনি XPath-এর কার্যকারিতা কিছুটা অনুকরণ করতে পারেন। CSS সিলেক্টরের মাধ্যমে HTML ডকুমেন্টের বিভিন্ন উপাদানকে নির্বাচিত করা যায়। এটি XPath-এ ব্যবহৃত নানা সিলেক্টরের মতো কাজ করে।


উদাহরণ: XPath এবং CSS সিলেক্টর তুলনা

ধরা যাক, একটি HTML পেজের কিছু উপাদান আমরা এক্সট্র্যাক্ট করতে চাই:

<html>
<head><title>XPath and JSoup Example</title></head>
<body>
    <div id="content">
        <h1>Welcome to XPath and JSoup</h1>
        <p class="description">This is a tutorial on using JSoup and XPath.</p>
        <p class="info">Learn more about web scraping.</p>
        <a href="https://www.example.com">Visit Example</a>
    </div>
</body>
</html>

এখন আমরা এই HTML ডকুমেন্ট থেকে কিছু ডাটা এক্সট্র্যাক্ট করতে চাই:

  1. Title: <title> ট্যাগের মধ্যে থাকা ডাটা।
  2. Paragraph with class 'description': class="description" সহ <p> ট্যাগ।
  3. Anchor tag (link): <a> ট্যাগের href অ্যাট্রিবিউট।

JSoup ব্যবহার করে এক্সট্র্যাকশন

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupXPathExample {
    public static void main(String[] args) throws Exception {
        String html = "<html><head><title>XPath and JSoup Example</title></head><body>" +
                      "<div id='content'>" +
                      "<h1>Welcome to XPath and JSoup</h1>" +
                      "<p class='description'>This is a tutorial on using JSoup and XPath.</p>" +
                      "<p class='info'>Learn more about web scraping.</p>" +
                      "<a href='https://www.example.com'>Visit Example</a>" +
                      "</div></body></html>";
        
        // HTML পার্সিং
        Document doc = Jsoup.parse(html);
        
        // 1. Title এক্সট্র্যাক্ট করা
        String title = doc.select("title").text();
        System.out.println("Title: " + title);
        
        // 2. Paragraph with class 'description' এক্সট্র্যাক্ট করা
        String description = doc.select("p.description").text();
        System.out.println("Description: " + description);
        
        // 3. Anchor Tag (link) এক্সট্র্যাক্ট করা
        String link = doc.select("a").attr("href");
        System.out.println("Link: " + link);
    }
}

কোড ব্যাখ্যা

  1. doc.select("title"): CSS সিলেক্টর ব্যবহার করে <title> ট্যাগের মধ্যে থাকা টেক্সট এক্সট্র্যাক্ট করা হয়েছে। এটি XPath এর //title সমতুল্য।
  2. doc.select("p.description"): CSS সিলেক্টর ব্যবহার করে class="description" সহ <p> ট্যাগের মধ্যে থাকা টেক্সট এক্সট্র্যাক্ট করা হয়েছে। এটি XPath এর //p[@class='description'] সমতুল্য।
  3. doc.select("a").attr("href"): <a> ট্যাগের href অ্যাট্রিবিউট এক্সট্র্যাক্ট করা হয়েছে। এটি XPath এর //a/@href সমতুল্য।

XPath এর ব্যবহারযোগ্য CSS সিলেক্টর

XPathCSS সিলেক্টরব্যাখ্যা
//tagnametagnameট্যাগ অনুযায়ী নির্বাচন।
//tagname[@attribute='value']tagname[attribute=value]অ্যাট্রিবিউট অনুযায়ী নির্বাচন।
//tagname[contains(@attribute, 'value')]tagname[attribute~=value]অ্যাট্রিবিউটে অংশের মিল।
//tagname[text()='value']tagname:contains('value')ট্যাগের টেক্সট অনুযায়ী নির্বাচন।

এই টেবিলের মাধ্যমে আপনি দেখতে পারেন কিভাবে XPath এর কিছু সাধারণ সিলেক্টর CSS সিলেক্টরের মাধ্যমে অনুকরণ করা যায়।


সারাংশ

জেসুপ (JSoup) এর মাধ্যমে XPath সমতুল্য ডাটা এক্সট্র্যাকশন করা সম্ভব CSS সিলেক্টর ব্যবহার করে। XPath এর মাধ্যমে নির্দিষ্ট HTML বা XML এলিমেন্ট এক্সট্র্যাক্ট করার জন্য যে পাথ ব্যবহার করা হয়, সেই পাথের কার্যকারিতা JSoup এর .select() মেথডের মাধ্যমে CSS সিলেক্টর দিয়ে অনুকরণ করা যায়। এই প্রক্রিয়া ওয়েব স্ক্র্যাপিংয়ের জন্য খুবই কার্যকরী এবং সহজ।

Content added By
Promotion

Are you sure to start over?

Loading...