জেসুপ (JSoup) ব্যবহার করার সময় ওয়েব পেজে সংযোগ স্থাপন (connection) এবং এর মাধ্যমে ডাটা এক্সট্র্যাক্ট করার সময় বিভিন্ন ধরনের সমস্যা আসতে পারে। যেমন, টাইমআউট (timeout) সমস্যা বা অন্যান্য নেটওয়ার্কের ত্রুটি (network errors)। এই ধরনের সমস্যাগুলো সঠিকভাবে হ্যান্ডেল করা খুবই গুরুত্বপূর্ণ, যাতে স্ক্র্যাপিং প্রক্রিয়াটি নষ্ট না হয় এবং প্রোগ্রামটি সঠিকভাবে কাজ করতে থাকে।
এই গাইডে, আমরা দেখব কিভাবে জেসুপে connection timeouts এবং error handling করা যায়।
Connection Timeout
কোনো ওয়েবসাইট বা ওয়েব পেজ থেকে ডাটা এক্সট্র্যাক্ট করার সময় যদি সার্ভারের সাথে সংযোগ স্থাপন করতে অনেক সময় নেয় বা সার্ভার কোনো কারণে সাড়া না দেয়, তাহলে টাইমআউট সমস্যা দেখা দিতে পারে। টাইমআউটের জন্য একটি নির্দিষ্ট সময় সীমা নির্ধারণ করা যেতে পারে।
জেসুপের Connection ক্লাসে timeout() মেথড ব্যবহার করে আপনি টাইমআউট সময় নির্ধারণ করতে পারেন।
উদাহরণ: Connection Timeout সেট করা
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupTimeoutExample {
public static void main(String[] args) {
try {
// 10 সেকেন্ডের টাইমআউট সেট করা
Document doc = Jsoup.connect("https://example.com")
.timeout(10000) // মিলিসেকেন্ডে টাইমআউট সময়
.get();
System.out.println("Document title: " + doc.title());
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}
কোডের ব্যাখ্যা:
- timeout() মেথড:
timeout(10000)মেথডের মাধ্যমে টাইমআউট ১০ সেকেন্ডে সেট করা হয়েছে। - Exception Handling: যদি টাইমআউট হয় বা কোনো সমস্যা ঘটে, তাহলে এটি
Exceptionক্যাচ করে, যাতে প্রোগ্রামটি ক্র্যাশ না হয়।
Error Handling
ওয়েব স্ক্র্যাপিং এর সময় অন্যান্য ধরনের ত্রুটিও আসতে পারে, যেমন নেটওয়ার্ক সমস্যার কারণে সংযোগ না হওয়া, বা পেজের ফরম্যাট ভুল হওয়ার কারণে ডাটা এক্সট্র্যাক্ট না হওয়া। এগুলোর জন্যও সঠিক ত্রুটি হ্যান্ডলিং করা গুরুত্বপূর্ণ।
উদাহরণ: Error Handling (404, 500, এবং অন্যান্য)
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.HttpStatusException;
import java.io.IOException;
public class JsoupErrorHandlingExample {
public static void main(String[] args) {
try {
// ওয়েব পেজে সংযোগ স্থাপন
Document doc = Jsoup.connect("https://example.com/nonexistent")
.get();
System.out.println("Document title: " + doc.title());
} catch (HttpStatusException e) {
System.out.println("HTTP Error: " + e.getStatusCode());
} catch (IOException e) {
System.out.println("IOException: " + e.getMessage());
} catch (Exception e) {
System.out.println("General Error: " + e.getMessage());
}
}
}
কোডের ব্যাখ্যা:
- HttpStatusException: যদি কোনো HTTP ত্রুটি ঘটে (যেমন 404 বা 500), তবে
HttpStatusExceptionক্যাচ করা হয়। এই ত্রুটির মাধ্যমে আপনি HTTP স্ট্যাটাস কোড জানতে পারেন। - IOException: নেটওয়ার্ক বা ইনপুট/আউটপুট সমস্যা হলে
IOExceptionক্যাচ করা হয়। - General Exception Handling: অন্যান্য সাধারণ ত্রুটির জন্য একটি সাধারণ
Exceptionক্যাচ করা হয়েছে।
সারাংশ
জেসুপ (JSoup) ব্যবহার করার সময় connection timeouts এবং error handling গুরুত্বপূর্ণ বিষয়। টাইমআউট সমস্যা এড়াতে আপনি timeout() মেথড ব্যবহার করে নির্দিষ্ট সময়সীমা নির্ধারণ করতে পারেন। এছাড়া, বিভিন্ন ধরনের HTTP বা নেটওয়ার্ক ত্রুটির জন্য সঠিক exception handling প্রয়োগ করলে আপনার স্ক্র্যাপিং প্রক্রিয়া আরও স্থিতিশীল এবং কার্যকরী হবে।
Read more