Java में HTML पार्सिंग: Jsoup और HtmlUnit लाइब्रेरी की समीक्षा
HTML पार्सिंग (या वेब स्क्रैपिंग) HTML दस्तावेज़ों से डेटा निकालने की प्रक्रिया है। Java में इस कार्य के लिए कई शक्तिशाली लाइब्रेरी मौजूद हैं, जिनमें Jsoup (स्टैटिक HTML के लिए) और HtmlUnit (JavaScript वाले डायनामिक पेजों के लिए) प्रमुख हैं। इस लेख में हम दोनों लाइब्रेरी को विस्तार से समझेंगे, कोड उदाहरण दिखाएंगे और आपके प्रोजेक्ट के लिए सही टूल चुनने में मदद करेंगे।
Jsoup क्या है?
Jsoup एक हल्की-फुल्की लाइब्रेरी है जो HTML दस्तावेज़ों को पार्स करने, डेटा निकालने और उनमें हेरफेर करने के लिए उपयोग की जाती है। यह CSS-सेलेक्टर को सपोर्ट करती है, जिससे वेब डेवलपर्स के लिए इसे समझना आसान हो जाता है। Jsoup किसी भी HTML के साथ काम कर सकती है, भले ही वह गलत तरीके से बना हो।
Jsoup की स्थापना
अपने pom.xml (Maven) में यह डिपेंडेंसी जोड़ें:
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.17.2</version>
</dependency>
Jsoup के साथ पार्सिंग का उदाहरण
आइए एक बुनियादी उदाहरण देखें — पेज का शीर्षक और सभी लिंक प्राप्त करना:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupExample {
public static void main(String[] args) throws Exception {
// 1. HTML दस्तावेज़ लोड करें
Document doc = Jsoup.connect("https://example.com").get();
// 2. पेज का शीर्षक निकालें
String title = doc.title();
System.out.println("शीर्षक: " + title);
// 3. सभी लिंक (<a> टैग) खोजें
Elements links = doc.select("a[href]");
for (Element link : links) {
String href = link.attr("href");
String text = link.text();
System.out.println("लिंक: " + href + " — टेक्स्ट: " + text);
}
// 4. किसी विशेष ब्लॉक से टेक्स्ट निकालें (जैसे <div class="content">)
Element content = doc.selectFirst("div.content");
if (content != null) {
System.out.println("ब्लॉक की सामग्री: " + content.text());
}
}
}
इस उदाहरण में Jsoup.connect() HTTP अनुरोध करता है, और select() एलिमेंट खोजने के लिए CSS-सेलेक्टर का उपयोग करता है। Jsoup स्थानीय फ़ाइलों और HTML स्ट्रिंग के साथ भी काम कर सकती है।
HtmlUnit क्या है?
HtmlUnit Java में एक "हेडलेस ब्राउज़र" (headless browser) है। यह न केवल HTML को पार्स करता है, बल्कि JavaScript को भी चलाता है, AJAX अनुरोधों को संभालता है और उपयोगकर्ता की क्रियाओं का अनुकरण करता है। यह उन साइटों के लिए आदर्श है जहां कंटेंट डायनामिक रूप से लोड होता है।
HtmlUnit की स्थापना
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.70.0</version>
</dependency>
HtmlUnit के साथ पार्सिंग का उदाहरण
JavaScript के माध्यम से डेटा लोड करने वाले पेज को पार्स करना:
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
public class HtmlUnitExample {
public static void main(String[] args) throws Exception {
// 1. WebClient बनाएं (ब्राउज़र का एनालॉग)
try (WebClient webClient = new WebClient()) {
// गति के लिए CSS और लॉगिंग बंद करें
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
// 2. पेज लोड करें (JavaScript अपने आप चलेगा)
HtmlPage page = webClient.getPage("https://example.com/dynamic");
// 3. AJAX अनुरोध पूरा होने तक प्रतीक्षा करें (वैकल्पिक)
webClient.waitForBackg