জাভা ব্যবহার করে একটি ওয়েব পেজের কন্টেন্ট পড়ার অনেক উপায় আছে। এখানে তিনটি পদ্ধতি আলোচনা করা হলো।
১. openStream() মেথড ব্যবহার করে
java.net প্যাকেজের URL ক্লাস একটি Uniform Resource Locator রিপ্রেজেন্ট করে যা ওয়ার্ল্ড ワイド ওয়েবে একটি রিসোর্স (ফাইল বা ডিরেক্টরি বা রেফারেন্স) নির্দেশ করতে ব্যবহৃত হয়।
এই ক্লাসের openStream() মেথড বর্তমান অবজেক্ট দ্বারা রিপ্রেজেন্টেড URL-এর সাথে সংযোগ খুলে এবং একটি InputStream অবজেক্ট রিটার্ন করে যা ব্যবহার করে আপনি URL থেকে ডেটা পড়তে পারেন।
তাই, একটি ওয়েব পেজ থেকে ডেটা পড়তে (URL ক্লাস ব্যবহার করে):
- java.net.URL ক্লাস ইনস্ট্যানশিয়েট করুন কাঙ্ক্ষিত ওয়েব পেজের URL পাস করে কনস্ট্রাক্টরে।
- openStream() মেথড আহ্বান করুন এবং InputStream অবজেক্ট রিট্রিভ করুন।
- Scanner ক্লাস ইনস্ট্যানশিয়েট করুন উপরের রিট্রিভ করা InputStream অবজেক্ট পাস করে প্যারামিটার হিসেবে।
উদাহরণ
import java.io.IOException;
import java.net.URL;
import java.util.Scanner;
public class ReadingWebPage {
public static void main(String args[]) throws IOException {
URL url = new URL("https://www.something.com/");
Scanner sc = new Scanner(url.openStream());
StringBuffer sb = new StringBuffer();
while (sc.hasNext()) {
sb.append(sc.next());
}
String result = sb.toString();
System.out.println(result);
result = result.replaceAll("<[^>]*>", "");
System.out.println("Contents of the web page: " + result);
}
}
আউটপুট
<html><body><h1>Itworks!</h1></body></html>
Contents of the web page: Itworks!
২. HttpClient ব্যবহার করে
Http client একটি ট্রান্সফার লাইব্রেরি, এটি ক্লায়েন্ট সাইডে থাকে, HTTP মেসেজ পাঠায় এবং গ্রহণ করে। এটি আপ-টু-ডেট, ফিচার-রিচ এবং কার্যকর ইমপ্লিমেন্টেশন প্রদান করে যা সাম্প্রতিক HTTP স্ট্যান্ডার্ড মেট করে।
HTTP প্রোটোকলের GET রিকোয়েস্ট একটি দিয়ে_URI ব্যবহার করে দেওয়া সার্ভার থেকে ইনফরমেশন রিট্রিভ করতে ব্যবহৃত হয়। GET ব্যবহার করে রিকোয়েস্ট শুধু ডেটা রিট্রিভ করতে হবে এবং ডেটার ওপর অন্য কোনো ইফেক্ট নেই।
HttpClient API একটি ক্লাস প্রদান করে নামক HttpGet যা GET রিকোয়েস্ট মেথড রিপ্রেজেন্ট করে। GET রিকোয়েস্ট এক্সিকিউট করে এবং ওয়েব পেজের কন্টেন্ট রিট্রিভ করতে:
- createDefault() মেথড HttpClients ক্লাসের একটি CloseableHttpClient অবজেক্ট রিটার্ন করে, যা HttpClient ইন্টারফেসের বেস ইমপ্লিমেন্টেশন। এই মেথড ব্যবহার করে HttpClient অবজেক্ট তৈরি করুন।
- HttpGet ক্লাস ইনস্ট্যানশিয়েট করে HTTP GET রিকোয়েস্ট তৈরি করুন। এই ক্লাসের কনস্ট্রাক্টর একটি স্ট্রিং ভ্যালু গ্রহণ করে যা কাঙ্ক্ষিত ওয়েব পেজের URI রিপ্রেজেন্ট করে।
- execute() মেথড আহ্বান করে HttpGet রিকোয়েস্ট এক্সিকিউট করুন।
- রেসপন্স থেকে ইনপুটস্ট্রিম অবজেক্ট রিট্রিভ করুন যেটি ওয়েব সাইটের কন্টেন্ট রিপ্রেজেন্ট করে:
httpresponse.getEntity().getContent()
উদাহরণ
import java.util.Scanner;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
public class HttpClientExample {
public static void main(String args[]) throws Exception {
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpget = new HttpGet("https://www.something.com/");
HttpResponse httpresponse = httpclient.execute(httpget);
Scanner sc = new Scanner(httpresponse.getEntity().getContent());
StringBuffer sb = new StringBuffer();
while (sc.hasNext()) {
sb.append(sc.next());
}
String result = sb.toString();
System.out.println(result);
result = result.replaceAll("<[^>]*>", "");
System.out.println("Contents of the web page: " + result);
}
}
আউটপুট
<html><body><h1>Itworks!</h1></body></html>
Contents of the web page: Itworks!
৩. Jsoup লাইব্রেরি ব্যবহার করে
Jsoup একটি জাভা-ভিত্তিক লাইব্রেরি HTML-ভিত্তিক কন্টেন্ট নিয়ে কাজ করার জন্য। এটি ডেটা এক্সট্র্যাক্ট এবং ম্যানিপুলেট করার জন্য খুব সুবিধাজনক API প্রদান করে, DOM, CSS, এবং jquery-লাইক মেথডের সেরা ব্যবহার করে। এটি WHATWG HTML5 স্পেসিফিকেশন ইমপ্লিমেন্ট করে, এবং HTML পার্স করে আধুনিক ব্রাউজারের মতো DOM-এ।
Jsoup লাইব্রেরি ব্যবহার করে একটি ওয়েব পেজের কন্টেন্ট রিট্রিভ করতে:
- Jsoup ক্লাসের connect() মেথড একটি ওয়েব পেজের URL গ্রহণ করে এবং নির্দিষ্ট ওয়েব পেজের সাথে সংযোগ করে এবং কানেকশন অবজেক্ট রিটার্ন করে। connect() মেথড ব্যবহার করে কাঙ্ক্ষিত ওয়েব পেজের সাথে সংযোগ করুন।
- Connection ইন্টারফেসের get() মেথড GET রিকোয়েস্ট পাঠায়/এক্সিকিউট করে এবং HTML ডকুমেন্ট Document ক্লাসের অবজেক্ট হিসেবে রিটার্ন করে। get() মেথড আহ্বান করে পেজে GET রিকোয়েস্ট পাঠান।
- প্রাপ্ত ডকুমেন্টের কন্টেন্ট স্ট্রিং-এ রিট্রিভ করুন:
String result = doc.body().text();
উদাহরণ
import java.io.IOException;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupExample {
public static void main(String args[]) throws IOException {
String page = "https://www.something.com/";
Connection conn = Jsoup.connect(page);
Document doc = conn.get();
String result = doc.body().text();
System.out.println(result);
}
}
আউটপুট
It works!
সারসংক্ষেপ: URL.openStream() - কোনো এক্সটার্নাল লাইব্রেরি ছাড়া, সহজ। HttpClient - আরও ফিচার, কনফিগারেবল (টাইমআউট, হেডার)। Jsoup - HTML পার্সিং/ম্যানিপুলেশনের জন্য সেরা, ক্লিন টেক্সট এক্সট্র্যাকশন (doc.body().text())।