JavaRush /جاوا بلاگ /Random-SD /3 مثال جاوا ۾ HTML فائل کي ڪيئن پارس ڪجي Jsoup استعمال ڪن...
Sdu
سطح

3 مثال جاوا ۾ HTML فائل کي ڪيئن پارس ڪجي Jsoup استعمال ڪندي

گروپ ۾ شايع ٿيل
جاوا ۾ HTML فائل کي ڪيئن پارس ڪجي جا 3 مثال Jsoup - 1HTML WEB جو بنيادي آھي، سڀ انٽرنيٽ صفحا جيڪي توھان ڏسو ٿا، ڇا اھي متحرڪ طور تي JavaScript، JSP، PHP، ASP يا ٻيون ويب ٽيڪنالاجيون استعمال ڪري ٺاھيا آھن، HTML تي ٻڌل آھن. حقيقت ۾، توهان جو برائوزر HTML کي پارس ڪري ٿو ۽ ان کي ڏيکاري ٿو انهي طريقي سان جيڪو توهان لاءِ آسان آهي. پر ڇا ڪجي جيڪڏهن توهان کي هڪ HTML دستاويز پارس ڪرڻ جي ضرورت آهي ۽ ان ۾ ڪجهه عنصر، ٽيگ، وصف ڳولڻ، يا چيڪ ڪريو ته ڇا هڪ مخصوص عنصر موجود آهي يا نه جاوا پروگرام استعمال ڪندي. جيڪڏهن توهان ڪيترن سالن تائين جاوا پروگرامر آهيو، مون کي پڪ آهي ته توهان DOM يا SAX وانگر پارسر استعمال ڪندي XML پارس ڪيو هوندو. پر، ستم ظريفي سان، اهڙا وقت آهن جڏهن توهان کي هڪ بنيادي جاوا ايپليڪيشن مان هڪ HTML دستاويز پارس ڪرڻ جي ضرورت آهي جنهن ۾ Servlets ۽ ٻيون جاوا ويب ٽيڪنالاجيون شامل نه آهن. ان کان علاوه، ڪور JDK پڻ HTTP يا HTML لائبريرين تي مشتمل ناهي. انهي ڪري، جڏهن اهو هڪ HTML فائل کي پارس ڪرڻ لاء اچي ٿو، ڪيترائي جاوا پروگرامر گوگل کان پڇن ٿا ته جاوا ۾ HTML ٽيگ جي قيمت ڪيئن حاصل ڪجي. جڏهن مون کي اهو نظر آيو، مون کي پڪ هئي ته اهو حل هڪ اوپن سورس لائبريري هوندي جيڪا منهنجي گهربل ڪارڪردگي کي لاڳو ڪندي، پر مون کي خبر نه هئي ته اها Jsoup وانگر شاندار ۽ خاصيتن سان مالا مال هوندي. اهو نه صرف HTML فائلن، خاصيتون، CSS ڪلاسز کي JQuery انداز ۾ پڙهڻ ۽ پارس ڪرڻ لاءِ مدد فراهم ڪري ٿو، پر ساڳئي وقت، توهان کي انهن کي تبديل ڪرڻ جي اجازت ڏئي ٿو. Jsoup استعمال ڪندي توھان ڪجھھ ڪري سگھو ٿا جيڪو توھان چاھيو ٿا HTML دستاويز سان. هن آرٽيڪل ۾، اسان هڪ HTML فائل کي پارس ڪنداسين ۽ ٽيگ جا نالا ۽ خاصيتون ڳوليندا سين. اسان فائل ۽ ڪنهن به URL، جهڙوڪ گوگل هوم پيج تان HTML کي ڊائون لوڊ ۽ پارس ڪرڻ جا مثال به ڏسنداسين.

Jsoup ڇا آهي

Jsoup حقيقي HTML سان ڪم ڪرڻ لاءِ هڪ اوپن سورس جاوا لائبريري آهي. اهو بهترين DOM، CSS، ۽ jQuery جهڙيون ٽيڪنالاجيون استعمال ڪندي ڊيٽا کي ٻيهر حاصل ڪرڻ ۽ هٿ ڪرڻ لاءِ هڪ تمام آسان API مهيا ڪري ٿو. Jsoup WHATWG HTML5 وضاحتن کي لاڳو ڪري ٿو، ۽ HTML کي ساڳي ڊوم ۾ پارس ڪري ٿو جيئن جديد برائوزر جهڙوڪ Chrome ۽ Firefox ڪندا آهن. هتي Jsoup لائبريري جون ڪجهه مفيد خاصيتون آهن:
  • Jsoup URL، فائل يا اسٽرنگ مان HTML کي اسڪريپ ۽ پارس ڪري سگھي ٿو.
  • Jsoup DOM traversal يا CSS چونڊيندڙ استعمال ڪندي ڊيٽا ڳولي ۽ ڪڍي سگھي ٿو.
  • Jsoup توهان کي HTML عناصر، خاصيتون ۽ متن کي ترتيب ڏيڻ جي اجازت ڏئي ٿو.
  • Jsoup XSS حملن کي روڪڻ لاءِ صارف جي مهيا ڪيل معلومات جي وائيٽ لسٽ صاف ڪري ٿو.
  • Jsoup پڻ "صاف" HTML پيدا ڪري ٿو.
Jsoup مختلف قسم جي HTML سان ڪم ڪرڻ لاءِ ٺاهيو ويو آهي جيڪي حقيقي دنيا ۾ موجود آهن، بشمول صحيح طور تي تصديق ٿيل HTML کي ٽيگ جي نامڪمل، غير تصديق ٿيل سيٽ سان. Jsoup جي مکيه فائدن مان هڪ ان جي reliability آهي.

Jsoup استعمال ڪندي جاوا ۾ HTML پارس ڪرڻ

هن سبق ۾، اسان جاوا ۾ Jsoup استعمال ڪندي هڪ HTML دستاويزن کي پارس ڪرڻ ۽ ٽريڪ ڪرڻ جا ٽي مختلف مثال ڏسندا. پهرين مثال ۾، اسان هڪ HTML اسٽرنگ کي پارس ڪنداسين جنهن ۾ ٽيگ شامل آهن جاوا اسٽرنگ لفظي جي صورت ۾. ٻئي مثال ۾، اسان انٽرنيٽ تان اسان جي HTML دستاويزن کي ڊائون لوڊ ڪنداسين، ۽ ٽئين مثال ۾، اسان پنهنجي نموني HTML فائل login.html کي parsing لاء ڊائون لوڊ ڪنداسين. هي فائل هڪ نمونو HTML دستاويز آهي جنهن ۾ "عنوان" ٽيگ ۽ "جسم" سيڪشن ۾ هڪ "div" ٽيگ شامل آهي جنهن ۾ HTML فارم شامل آهي. فارم ۾ يوزرنيم ۽ پاس ورڊ داخل ڪرڻ لاءِ فيلڊز شامل آھن، گڏوگڏ وڌيڪ عملن لاءِ ري سيٽ ۽ تصديق جا بٽڻ شامل آھن. هي "صحيح" HTML آهي جيڪو "صحيح" چيڪ پاس ڪري سگهي ٿو، مطلب ته سڀئي ٽيگ ۽ خاصيتون صحيح طور تي بند ٿيل آهن. هي آهي جيڪو اسان جي HTML فائل وانگر نظر اچي ٿو:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Login Page</title>
    </head>
    <body>
        <div id="login" class="simple" >
            <form action="login.do">
                Username : <input id="username" type="text" /><br>
                Password : <input id="password" type="password" /><br>
                <input id="submit" type="submit" />
                <input id="reset" type="reset" />
            </form>
        </div>
    </body>
</html>
Jsoup سان اهو HTML کي پارس ڪرڻ تمام آسان آهي، توهان کي صرف هڪ مستحڪم طريقو سڏڻ Jsoup.parse()۽ پنهنجي HTML اسٽرنگ کي ان ڏانهن منتقل ڪرڻ جي ضرورت آهي. Jsoup ڪيترن ئي اوورلوڊ ٿيل طريقا مهيا ڪري ٿو parse()HTML پڙهڻ لاءِ هڪ اسٽرنگ، هڪ فائيل، بنيادي URI کان، هڪ URL کان، ۽ هڪ InputStream. توھان HTML فائل کي صحيح پڙھڻ لاءِ انڪوڊنگ پڻ بيان ڪري سگھو ٿا جيڪڏھن اھو UTF-8 فارميٽ ۾ نه آھي. طريقو parse(String html)ايندڙ HTML کي نئين اعتراض ۾ پارس ڪري ٿو Document. Jsoup ۾، ھڪڙو طبقو Documentھڪڙي طبقي مان ورثي ۾ ملي ٿو Element، جيڪو ڪلاس کي وڌائي ٿو Node. ڪلاس به ڪلاس مان Nodeورثي ۾ ملي ٿو TextNode. جيستائين توهان طريقي سان هڪ غير نول اسٽرنگ پاس ڪندا آهيو، توهان کي ضمانت ڏني وئي آهي ته هڪ ڪامياب، بامعني پارس هڪ اعتراض جو Document(گهٽ ۾ گهٽ) "سر" ۽ "جسم" عناصر تي مشتمل آهي. جيڪڏهن توهان وٽ ڪو اعتراض آهي Documentته توهان ڪلاس Document۽ ان جي والدين جي مناسب طريقن کي فون ڪري گهربل ڊيٽا حاصل ڪري سگهو ٿا Element۽ Node.

جاوا پروگرام HTML دستاويزن کي پارس ڪرڻ لاءِ

هتي هڪ HTML اسٽرنگ، انٽرنيٽ تان ڊائون لوڊ ڪيل HTML فائل، ۽ مقامي HTML فائل کي پارس ڪرڻ لاءِ اسان جو مڪمل پروگرام آهي. ان کي هلائڻ لاءِ، توهان استعمال ڪري سگهو ٿا هڪ IDE (Eclipse يا ٻيو ڪو) يا ڪمانڊ لائن. Eclipse ۾ اهو تمام آسان آهي، صرف هن ڪوڊ کي ڪاپي ڪريو، هڪ نئون جاوا پروجيڪٽ ٺاهيو، "src" فولڊر تي صحيح ڪلڪ ڪريو ۽ ڪاپي ٿيل ڪوڊ پيسٽ ڪريو. Eclipse مناسب نالي سان مناسب پيڪيج ۽ سورس ڪوڊ فائل ٺاهڻ جو خيال رکندو، تنهنڪري اهو تمام گهٽ ڪم آهي. جيڪڏهن توهان وٽ اڳ ۾ ئي جاوا پروجيڪٽ آهي، ته اهو صرف هڪ قدم آهي. هيٺ ڏنل پروگرام HTML فائل کي پارس ڪرڻ ۽ ٽريڪ ڪرڻ جا ٽي مثال بيان ڪري ٿو. پهرين مثال ۾، اسان سڌي طرح HTML تي مشتمل هڪ اسٽرنگ پارس ڪندا آهيون، ٻئي ۾ هڪ URL تان ڊائون لوڊ ڪيل HTML فائل، ٽئين ۾ اسان مقامي فائل سسٽم مان هڪ HTML دستاويز ڊائون لوڊ ۽ پارس ڪندا آهيون.
import java.io.File;
import java.io.IOException;

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

/**
* Java Program to parse/read HTML documents from File using Jsoup library.
* Jsoup is an open source library which allows Java developer to parse HTML
* files and extract elements, manipulate data, change style using DOM, CSS and
* JQuery like method.
*
* @author Javin Paul
*/
public class HTMLParser{

    public static void main(String args[]) {

        // Parse HTML String using JSoup library
        String HTMLSTring = "<!DOCTYPE html>"
                + "<html>"
                + "<head>"
                + "<title>JSoup Example</title>"
                + "</head>"
                + "<body>"
                + "<table><tr><td><h1>HelloWorld</h1></tr>"
                + "</table>"
                + "</body>"
                + "</html>";

        Document html = Jsoup.parse(HTMLSTring);
        String title = html.title();
        String h1 = html.body().getElementsByTag("h1").text();

        System.out.println("Input HTML String to JSoup :" + HTMLSTring);
        System.out.println("After parsing, Title : " + title);
        System.out.println("Afte parsing, Heading : " + h1);

        // JSoup Example 2 - Reading HTML page from URL
        Document doc;
        try {
            doc = Jsoup.connect("http://google.com/").get();
            title = doc.title();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("Jsoup Can read HTML page from URL, title : " + title);

        // JSoup Example 3 - Parsing an HTML file in Java
        //Document htmlFile = Jsoup.parse("login.html", "ISO-8859-1"); // wrong
        Document htmlFile = null;
        try {
            htmlFile = Jsoup.parse(new File("login.html"), "ISO-8859-1");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } // right
        title = htmlFile.title();
        Element div = htmlFile.getElementById("login");
        String cssClass = div.className(); // getting class form HTML element

        System.out.println("Jsoup can also parse HTML file directly");
        System.out.println("title : " + title);
        System.out.println("class of div tag : " + cssClass);
    }
}
پيداوار:
Input HTML String to JSoup :<!DOCTYPE html><html><head><title>JSoup Example</title></head><body><table><tr><td><h1>HelloWorld</h1></tr></table></body></html>
After parsing, Title : JSoup Example
Afte parsing, Heading : HelloWorld
Jsoup Can read HTML page from URL, title : Google
Jsoup can also parse HTML file directly
title : Login Page
class of div tag : simple
Jsoup HTML parser توهان جي مهيا ڪيل HTML جو "صاف" پارس پيدا ڪرڻ جي هر ممڪن ڪوشش ڪندو، ڇا اهو سٺو ٺهيل آهي يا نه. اهو هيٺيون غلطيون سنڀالي سگهي ٿو:
  • غير بند ٿيل ٽيگ. مثال طور،<p>Java <p>Scala to <p>Java</p> <p>Scala</p>
  • لاڳو ٿيل ٽيگ. مثال طور، کليل وارن <td>Java is Great</td>۾ لپي ويندا<table><tr><td>
  • Jsoup مضبوط دستاويزي جوڙجڪ ٺاهي ٿو (HTML سر ۽ جسم تي مشتمل آهي، پر جسم صرف لاڳاپيل عناصر تي مشتمل آهي)
Jsoup هڪ بهترين ۽ قابل اعتماد اوپن سورس لائبريري آهي جيڪا html ڊاڪيومينٽ، باڊي فريگمينٽس، html اسٽرنگز کي پڙهڻ ۽ html ويب مواد کي سڌي طرح پارس ڪرڻ بلڪل آسان بڻائي ٿي.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION