আপনি জাভা ব্যবহার করে বিভিন্ন উপায়ে একটি ওয়েব পৃষ্ঠার বিষয়বস্তু পড়তে পারেন। এখানে, আমরা তাদের তিনটি নিয়ে আলোচনা করতে যাচ্ছি।
ওপেনস্ট্রিম() পদ্ধতি ব্যবহার করে
URL java.net প্যাকেজের ক্লাস একটি ইউনিফর্ম রিসোর্স লোকেটারকে উপস্থাপন করে যা ওয়ার্ল্ড ওয়াইড ওয়েবে একটি সংস্থান (ফাইল বা, ডিরেক্টরি বা একটি রেফারেন্স) নির্দেশ করতে ব্যবহৃত হয়৷
ওপেনস্ট্রিম() এই শ্রেণীর পদ্ধতিটি বর্তমান বস্তু দ্বারা উপস্থাপিত URL-এর সাথে একটি সংযোগ খোলে এবং একটি ইনপুটস্ট্রিম অবজেক্ট প্রদান করে যা ব্যবহার করে আপনি URL থেকে ডেটা পড়তে পারেন।
অতএব, ওয়েব পৃষ্ঠা থেকে ডেটা পড়তে (ইউআরএল ক্লাস ব্যবহার করে) -
-
java.net.URL ক্লাসটি ইন্সট্যান্টিয়েট করুন কাঙ্খিত ওয়েব পেজের ইউআরএলটি প্যারামিটার হিসেবে এর কনস্ট্রাক্টরের কাছে দিয়ে।
-
OpenStream() পদ্ধতি চালু করুন এবং InputStream অবজেক্টটি পুনরুদ্ধার করুন।
-
উপরের পুনরুদ্ধারকৃত ইনপুটস্ট্রিম অবজেক্টটিকে প্যারামিটার হিসাবে পাস করে স্ক্যানার ক্লাসটি ইনস্ট্যান্ট করুন৷
উদাহরণ
import java.io.IOException;
import java.net.URL;
import java.util.Scanner;
public class ReadingWebPage {
public static void main(String args[]) throws IOException {
//Instantiating the URL class
URL url = new URL("http://www.something.com/");
//Retrieving the contents of the specified page
Scanner sc = new Scanner(url.openStream());
//Instantiating the StringBuffer class to hold the result
StringBuffer sb = new StringBuffer();
while(sc.hasNext()) {
sb.append(sc.next());
//System.out.println(sc.next());
}
//Retrieving the String from the String Buffer object
String result = sb.toString();
System.out.println(result);
//Removing the HTML tags
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 ক্লায়েন্ট একটি স্থানান্তর লাইব্রেরি, এটি ক্লায়েন্টের পাশে থাকে, HTTP বার্তা পাঠায় এবং গ্রহণ করে। এটি আপ টু ডেট, বৈশিষ্ট্য সমৃদ্ধ এবং দক্ষ বাস্তবায়ন প্রদান করে যা সাম্প্রতিক এইচটিটিপি মান পূরণ করে৷
GET অনুরোধ (Http প্রোটোকলের) প্রদত্ত ইউআরআই ব্যবহার করে প্রদত্ত সার্ভার থেকে তথ্য পুনরুদ্ধার করতে ব্যবহৃত হয়। GET ব্যবহার করে অনুরোধ শুধুমাত্র ডেটা পুনরুদ্ধার করা উচিত এবং ডেটাতে অন্য কোনও প্রভাব থাকা উচিত নয়৷
৷HttpClient API HttpGet নামে একটি ক্লাস প্রদান করে যা অনুরোধের অনুরোধের পদ্ধতিকে উপস্থাপন করে। 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{
//Creating a HttpClient object
CloseableHttpClient httpclient = HttpClients.createDefault();
//Creating a HttpGet object
HttpGet httpget = new HttpGet("http://www.something.com/");
//Executing the Get request
HttpResponse httpresponse = httpclient.execute(httpget);
Scanner sc = new Scanner(httpresponse.getEntity().getContent());
//Instantiating the StringBuffer class to hold the result
StringBuffer sb = new StringBuffer();
while(sc.hasNext()) {
sb.append(sc.next());
//System.out.println(sc.next());
}
//Retrieving the String from the String Buffer object
String result = sb.toString();
System.out.println(result);
//Removing the HTML tags
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 ভিত্তিক বিষয়বস্তুর সাথে কাজ করে। এটি DOM, CSS, এবং jquery-এর মতো সেরা পদ্ধতিগুলি ব্যবহার করে ডেটা বের করতে এবং ম্যানিপুলেট করার জন্য একটি খুব সুবিধাজনক API প্রদান করে। এটি WHATWG HTML5 স্পেসিফিকেশন প্রয়োগ করে, এবং আধুনিক ব্রাউজারগুলির মতো একই DOM-এ HTML পার্স করে৷
Jsoup লাইব্রেরি −
ব্যবহার করে একটি ওয়েব পৃষ্ঠার বিষয়বস্তু পুনরুদ্ধার করতে-
সংযোগ()৷ Jsoup ক্লাসের পদ্ধতি একটি ওয়েব পৃষ্ঠার একটি URL গ্রহণ করে এবং নির্দিষ্ট ওয়েব পৃষ্ঠার সাথে সংযোগ করে এবং সংযোগ বস্তু প্রদান করে। connect() ব্যবহার করে কাঙ্খিত ওয়েব পৃষ্ঠাতে সংযোগ করুন৷ পদ্ধতি।
-
সংযোগ ইন্টারফেসের get() পদ্ধতি GET অনুরোধ পাঠায়/এক্সিকিউট করে এবং ডকুমেন্ট ক্লাসের একটি অবজেক্ট হিসাবে HTML ডকুমেন্ট ফেরত দেয়। 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 = "http://www.something.com/";
//Connecting to the web page
Connection conn = Jsoup.connect(page);
//executing the get request
Document doc = conn.get();
//Retrieving the contents (body) of the web page
String result = doc.body().text();
System.out.println(result);
}
} আউটপুট
It works!