JavaRush /Java блогы /Random-KK /Jsoup көмегімен Java тілінде HTML файлын талдаудың 3 мыса...
Sdu
Деңгей

Jsoup көмегімен Java тілінде HTML файлын талдаудың 3 мысалы

Топта жарияланған
Jsoup көмегімен Java тілінде HTML файлын талдаудың 3 мысалы - 1HTML - WEB-тің өзегі, JavaScript, JSP, PHP, ASP немесе басқа веб-технологиялардың көмегімен динамикалық түрде жасалғанына қарамастан, сіз көріп отырған барлық Интернет беттері HTML негізінде жасалған. Шын мәнінде, сіздің браузеріңіз HTML-ді талдайды және оны сізге ыңғайлы түрде көрсетеді. Бірақ HTML құжатын талдау және одан қандай да бір элементті, тегті, атрибутты табу немесе Java бағдарламасын пайдаланып белгілі бір элементтің бар-жоғын тексеру қажет болса ше. Егер сіз бірнеше жыл бойы Java бағдарламашысы болсаңыз, DOM немесе SAX сияқты талдаушылар арқылы XML талдауын жасаған болар едіңіз. Бірақ, бір қызығы, HTML құжатын Сервлеттер және басқа Java веб-технологиялары жоқ негізгі Java қолданбасынан талдау қажет кездер болады. Сонымен қатар, Core JDK HTTP немесе HTML кітапханаларын қамтымайды. Сондықтан, HTML файлын талдауға келгенде, көптеген Java бағдарламашылары Google-дан Java тіліндегі HTML тегінің мәнін қалай алуға болатынын сұрайды. Мен бұған тап болған кезде, шешім маған қажетті функционалдылықты жүзеге асыратын ашық бастапқы кітапхана болатынына сенімді болдым, бірақ оның Jsoup сияқты керемет және мүмкіндіктерге бай болатынын білмедім. Ол JQuery стиліндегі HTML файлдарын, атрибуттарды, CSS сыныптарын оқуға және талдауға қолдау көрсетіп қана қоймайды, сонымен бірге оларды өзгертуге мүмкіндік береді. Jsoup көмегімен сіз HTML құжатымен қалаған нәрсені жасай аласыз. Бұл мақалада біз HTML файлын талдаймыз және тегтердің атаулары мен атрибуттарын табамыз. Сондай-ақ, біз файлдан және кез келген URL мекенжайынан, мысалы, Google басты бетінен HTML жүктеп алу және талдау мысалдарын қарастырамыз.

Jsoup дегеніміз не

Jsoup – нақты HTML-мен жұмыс істеуге арналған ашық бастапқы Java кітапханасы. Ол ең жақсы DOM, CSS және jQuery сияқты әдістерді пайдаланып деректерді алу және өңдеу үшін өте ыңғайлы API ұсынады. Jsoup WHATWG HTML5 спецификациясын жүзеге асырады және HTML-ді Chrome және Firefox сияқты заманауи браузерлер сияқты DOM-ге талдайды. Міне, Jsoup кітапханасының кейбір пайдалы мүмкіндіктері:
  • Jsoup HTML файлын URL мекенжайынан, файлдан немесе жолдан сызып, талдай алады.
  • Jsoup DOM өту немесе CSS селекторлары арқылы деректерді тауып, шығарып алады.
  • Jsoup HTML элементтерін, атрибуттарын және мәтінін өңдеуге мүмкіндік береді.
  • Jsoup XSS шабуылдарының алдын алу үшін пайдаланушы ұсынған ақпаратты ақ тізімнен тазалауды қамтамасыз етеді.
  • Jsoup сонымен қатар «ұқыпты» HTML шығарады.
Jsoup нақты әлемде бар әртүрлі HTML түрлерімен, соның ішінде толық емес, расталмаған тегтер жинағы бар дұрыс тексерілген HTML-мен жұмыс істеуге арналған. Jsoup негізгі артықшылықтарының бірі оның сенімділігі болып табылады.

Jsoup көмегімен Java тілінде HTML талдауы

Бұл оқулықта біз Jsoup көмегімен Java тілінде HTML құжатын талдаудың және өтудің үш түрлі мысалын көреміз. Бірінші мысалда біз Java жолының литералы түріндегі тегтері бар HTML жолын талдаймыз. Екінші мысалда біз HTML құжатымызды Интернеттен жүктеп аламыз, ал үшінші мысалда талдау үшін өзіміздің HTML файлының login.html үлгісін жүктеп аламыз. Бұл файл 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()жолдан, файлдан, негізгі URI мекенжайынан, URL мекенжайынан және InputStream. Сондай-ақ, HTML файлы UTF-8 пішімінде болмаса, оны дұрыс оқу үшін codeтауды көрсетуге болады. Әдіс parse(String html)кіріс HTML файлын жаңа нысанға талдайды Document. Jsoup жүйесінде сынып сыныпты кеңейтетін Documentсыныптан мұра алады . Класс сонымен қатар сыныптан мұра алады . Әдіске нөлдік емес жолды берген кезде, «бас» және «дене» элементтерін қамтитын (кем дегенде) нысанның сәтті, мағыналы талдауына кепілдік беріледі . Егер сізде an object болса , қажетті деректерді класстың және оның ата-анасының сәйкес әдістерін шақыру арқылы алуға болады және . ElementNodeNodeTextNodeDocumentDocumentDocumentElementNode

HTML құжатын талдауға арналған Java бағдарламасы

Міне, HTML жолын, интернеттен жүктеп алынған HTML файлын және жергілікті HTML файлын талдауға арналған толық бағдарламамыз. Оны іске қосу үшін IDE (Eclipse немесе кез келген басқа) немесе пәрмен жолын пайдалануға болады. Eclipse-де бұл өте оңай, жай ғана осы codeты көшіріп, жаңа Java жобасын жасаңыз, «src» қалтасын тінтуірдің оң жақ түймешігімен басып, көшірілген codeты қойыңыз. Eclipse сәйкес атаумен тиісті буманы және бастапқы code файлын жасаумен айналысады, сондықтан бұл әлдеқайда аз жұмыс. Егер сізде Java жобасы бар болса, бұл бір ғана қадам. Төмендегі бағдарлама 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 талдаушысы сіз ұсынатын 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