JavaRush /Java Blogu /Random-AZ /Jsoup-dan istifadə edərək Java-da HTML faylını təhlil etm...
Sdu
Səviyyə

Jsoup-dan istifadə edərək Java-da HTML faylını təhlil etməyin 3 nümunəsi

Qrupda dərc edilmişdir
Jsoup istifadə edərək Java-da HTML faylını təhlil etmək üçün 3 nümunə - 1HTML WEB-in əsasını təşkil edir, JavaScript, JSP, PHP, ASP və ya digər veb texnologiyalarından istifadə edərək dinamik şəkildə yaradılmalarından asılı olmayaraq, gördüyünüz bütün İnternet səhifələri HTML-ə əsaslanır. Əslində, brauzeriniz HTML-i təhlil edir və onu sizin üçün əlverişli şəkildə göstərir. Bəs əgər siz HTML sənədini təhlil etmək və orada hansısa element, etiket, atribut tapmaq və ya Java proqramından istifadə edərək müəyyən elementin olub-olmadığını yoxlamaq lazımdırsa nə etməli? Əgər siz bir neçə il Java proqramçısı olsanız, əminəm ki, DOM və ya SAX kimi analizatorlardan istifadə edərək XML təhlilini edərdiniz. Ancaq ironik olaraq, HTML sənədini Servletləri və digər Java veb texnologiyalarını ehtiva etməyən əsas Java proqramından təhlil etməli olduğunuz vaxtlar olur. Üstəlik, Core JDK-da HTTP və ya HTML kitabxanaları da yoxdur. Buna görə də, HTML faylının təhlilinə gəldikdə, bir çox Java proqramçıları Google-dan Java-da HTML etiketinin dəyərini necə əldə edəcəyini soruşurlar. Bununla rastlaşdığımda əmin idim ki, həll yolu mənə lazım olan funksionallığı həyata keçirən açıq mənbəli kitabxana olacaq, lakin onun Jsoup qədər gözəl və xüsusiyyətlərlə zəngin olacağını bilmirdim. O, yalnız JQuery üslubunda HTML faylları, atributları, CSS siniflərini oxumaq və təhlil etmək üçün dəstək vermir, eyni zamanda onları dəyişdirməyə imkan verir. Jsoup-dan istifadə edərək HTML sənədi ilə istədiyiniz hər şeyi edə bilərsiniz. Bu yazıda biz HTML faylını təhlil edəcəyik və etiketlərin adlarını və atributlarını tapacağıq. Biz həmçinin fayldan və istənilən URL-dən, məsələn, Google əsas səhifəsindən HTML-ni yükləmək və təhlil etmək nümunələrinə baxacağıq.

Jsoup nədir

Jsoup real HTML ilə işləmək üçün açıq mənbəli Java kitabxanasıdır. Ən yaxşı DOM, CSS və jQuery kimi üsullardan istifadə edərək məlumatların əldə edilməsi və manipulyasiyası üçün çox rahat API təmin edir. Jsoup WHATWG HTML5 spesifikasiyasını həyata keçirir və HTML-ni Chrome və Firefox kimi müasir brauzerlər kimi eyni DOM-da təhlil edir. Jsoup kitabxanasının bəzi faydalı xüsusiyyətləri bunlardır:
  • Jsoup URL, fayl və ya sətirdən HTML-ni qıra və təhlil edə bilər.
  • Jsoup DOM traversal və ya CSS seçicilərindən istifadə edərək məlumatları tapa və çıxara bilər.
  • Jsoup sizə HTML elementləri, atributları və mətni manipulyasiya etməyə imkan verir.
  • Jsoup, XSS hücumlarının qarşısını almaq üçün istifadəçi tərəfindən verilən məlumatların ağ siyahıdan təmizlənməsini təmin edir.
  • Jsoup həmçinin "səliqəli" HTML istehsal edir.
Jsoup, natamam, təsdiqlənməmiş etiketlər dəsti ilə düzgün təsdiqlənmiş HTML daxil olmaqla, real dünyada mövcud olan müxtəlif HTML növləri ilə işləmək üçün nəzərdə tutulmuşdur. Jsoup-un əsas üstünlüklərindən biri onun etibarlılığıdır.

Jsoup istifadə edərək Java-da HTML-nin təhlili

Bu dərslikdə Jsoup-dan istifadə edərək Java-da HTML sənədini təhlil etmək və keçmək üçün üç fərqli nümunə görəcəyik. Birinci misalda biz Java sətri hərfi şəklində teqləri olan HTML sətirini təhlil edəcəyik. İkinci misalda biz HTML sənədimizi internetdən yükləyəcəyik, üçüncü misalda isə analiz üçün öz nümunə HTML faylımız login.html yükləyəcəyik. Bu fayl HTML formasını ehtiva edən "bədən" bölməsində "başlıq" teqindən və "div" teqindən ibarət nümunə HTML sənədidir. Formada istifadəçi adı və parol daxil etmək üçün sahələr, həmçinin sonrakı hərəkətlər üçün sıfırlama və təsdiq düymələri var. Bu, "etibarlılıq" yoxlanışından keçə bilən "düzgün" HTML-dir, yəni bütün teqlər və atributlar düzgün bağlanmışdır. HTML faylımız belə görünür:
<!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 ilə HTML-i təhlil etmək çox asandır, sizə lazım olan tək şey statik metodu çağırmaq Jsoup.parse()və HTML sətirinizi ona ötürməkdir. Jsoup parse()HTML-ni sətirdən, fayldan, əsas URI-dən, URL-dən və InputStream. HTML faylı UTF-8 formatında deyilsə, onu düzgün oxumaq üçün kodlaşdırmanı da təyin edə bilərsiniz. Metod parse(String html)daxil olan HTML-ni yeni obyektə təhlil edir Document. Jsoup-da sinif sinfi genişləndirən Documentsinifdən miras alır . Sinif də sinifdən miras alır . Metodun null olmayan sətrini ötürdüyünüz müddətcə sizə (ən azı) "baş" və "bədən" elementlərini ehtiva edən obyektin uğurlu, mənalı təhlilinə zəmanət verilir. Əgər obyektiniz varsa , sinfin müvafiq metodlarına və onun valideynlərinə zəng edərək istədiyiniz məlumatları əldə edə bilərsiniz . ElementNodeNodeTextNodeDocumentDocumentDocumentElementNode

HTML sənədini təhlil etmək üçün Java proqramı

Budur, HTML sətirini, internetdən yüklənmiş HTML faylını və yerli HTML faylını təhlil etmək üçün tam proqramımız. Onu işə salmaq üçün siz IDE (Eclipse və ya hər hansı digər) və ya əmr satırından istifadə edə bilərsiniz. Eclipse-də bu çox asandır, sadəcə bu kodu kopyalayın, yeni Java layihəsi yaradın, "src" qovluğuna sağ vurun və kopyalanan kodu yapışdırın. Eclipse müvafiq ada malik düzgün paket və mənbə kodu faylının yaradılması ilə məşğul olacaq, ona görə də bu, çox az işdir. Əgər artıq Java layihəniz varsa, bu, sadəcə bir addımdır. Aşağıdakı proqram HTML faylını təhlil etmək və keçmək üçün üç nümunəni göstərir. Birinci misalda biz birbaşa HTML ehtiva edən sətri, ikincidə URL-dən yüklənmiş HTML faylını, üçüncüdə isə yerli fayl sistemindən HTML sənədini yükləyib təhlil edirik.
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);
    }
}
Çıxış:
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 analizatoru, yaxşı formalaşdırılmış və ya olmamasından asılı olmayaraq, təqdim etdiyiniz HTML-nin "təmiz" təhlilini hazırlamaq üçün hər cür səy göstərəcəkdir. O, aşağıdakı səhvləri idarə edə bilər:
  • bağlanmamış etiketlər. Misal üçün,<p>Java <p>Scala to <p>Java</p> <p>Scala</p>
  • nəzərdə tutulan etiketlər. Məsələn, açıq olanlar <td>Java is Great</td>büküləcək<table><tr><td>
  • Jsoup möhkəm sənəd strukturları yaradır (HTML baş və bədəndən ibarətdir, lakin gövdə yalnız müvafiq elementləri ehtiva edir)
Jsoup html sənədini, bədən fraqmentlərini, html sətirlərini oxumağı və html veb məzmununu birbaşa təhlil etməyi çox sadə edən əla və etibarlı açıq mənbəli kitabxanadır.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION