JavaRush /Java Blog /Random-TK /Jsoup ulanyp, Java faýlynda HTML faýly nädip analiz etmel...
Sdu
Dereje

Jsoup ulanyp, Java faýlynda HTML faýly nädip analiz etmelidiginiň 3 mysaly

Toparda çap edildi
Jsoup - 1 ulanyp, HTML faýlyny Java-da nädip derňemegiň 3 mysalyHTML WEB-iň özenidir, görýän ähli internet sahypalaryňyz, JavaScript, JSP, PHP, ASP ýa-da beýleki web tehnologiýalary arkaly dinamiki taýdan döredilendigine garamazdan HTML-e esaslanýar. Aslynda, brauzeriňiz HTML-ni derňeýär we ony size amatly görnüşde görkezýär. HTMLöne HTML resminamasyny derňemeli we käbir elementi, belligi, atributyny tapmaly ýa-da belli bir elementiň bardygyny ýa-da Java programmasyny ulanmaýandygyny barlamaly bolsa näme etmeli? Birnäçe ýyl Java programmist bolan bolsaňyz, DOM ýa-da SAX ýaly derňewçileri ulanyp, XML derňewini ýerine ýetirendigiňize ynanýaryn. Icallyöne, geň ýeri, “Servlets” we beýleki Java web tehnologiýalaryny öz içine almaýan esasy Java programmasyndan HTML resminamasyny derňemeli wagtyňyz bolýar. Mundan başga-da, Core JDK-da HTTP ýa-da HTML kitaphanalary ýok. Şol sebäpli HTML faýly derňemek barada aýdylanda, köp Java programmisti Google-dan Java belliginde HTML belliginiň bahasyny nädip almalydygyny soraýarlar. Bu meselä duşanymda, çözgüdiň zerur funksiýany ýerine ýetirýän açyk çeşmeli kitaphanadygyna ynanýardym, ýöne Jsoup ýaly ajaýyp we aýratynlyklara baý boljakdygyny bilmedim. Diňe HTML faýllaryny, atributlaryny, CSS synplaryny JQuery stilinde okamak we derňemek üçin goldaw bermeýär, şol bir wagtyň özünde olary üýtgetmäge mümkinçilik berýär. Jsoup ulanyp, HTML resminamasy bilen islän zadyňyzy edip bilersiňiz. Bu makalada HTML faýlyny öwreneris we bellikleriň atlaryny we atributlaryny taparys. Şeýle hem, bir faýldan we Google baş sahypasy ýaly islendik URL-den HTML göçürip almak we derňemek mysallaryna serederis.

Jsoup näme

Jsoup hakyky HTML bilen işlemek üçin açyk çeşme Java kitaphanasydyr. Iň oňat DOM, CSS we jQuery ýaly usullary ulanyp maglumatlary almak we dolandyrmak üçin örän amatly API üpjün edýär. Jsoup WHATWG HTML5 spesifikasiýasyny amala aşyrýar we HTML-ni Chrome we Firefox ýaly häzirki zaman brauzerleri ýaly DOM-a bölýär. Jsoup kitaphanasynyň käbir peýdaly aýratynlyklary:
  • Jsoup HTML-ni URL-den, faýldan ýa-da setirden döwüp we derňäp biler.
  • Jsoup DOM traversal ýa-da CSS saýlaýjylaryny ulanyp maglumatlary tapyp we çykaryp biler.
  • Jsoup HTML elementlerini, atributlaryny we tekstini dolandyrmaga mümkinçilik berýär.
  • Jsoup, XSS hüjümleriniň öňüni almak üçin ulanyjy tarapyndan berlen maglumatlary ak sanawda arassalamagy üpjün edýär.
  • Jsoup şeýle hem "arassa" HTML öndürýär.
Jsoup, hakyky dünýäde bar bolan dürli HTML, şol sanda doly däl, tassyklanmadyk bellikler toplumy bilen dogry tassyklanan HTML bilen işlemek üçin döredildi. Jsoup-iň esasy artykmaçlyklaryndan biri hem ygtybarlylygydyr.

Jsoup ulanyp, Java-da HTML-ni derňemek

Bu gollanmada, Jsoup ulanyp, Java resminamasynda HTML resminamasyny derňemegiň we geçmegiň üç dürli mysalyny göreris. Birinji mysalda, bellikleri öz içine alýan HTML setirini Java sözme-söz görnüşinde öwreneris. Ikinji mysalda, HTML resminamamyzy internetden göçürip alarys, üçünji mysalda bolsa derňemek üçin HTML HTML login.html nusgasyny göçürip alarys. Bu faýl, HTML görnüşini öz içine alýan "beden" bölüminde "titul" belliginden we "div" belliginden ybarat HTML resminamasydyr. Formada ulanyjy adyny we paroly girizmek üçin meýdanlar, şeýle hem indiki hereketler üçin täzeden düzmek we tassyklamak düwmeleri bar. Bu, "bellik" barlagyndan geçip bilýän "dogry" HTML, ähli bellikleriň we atributlaryň dogry ýapylandygyny aňladýar. HTML faýlymyz şu:
<!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 bilen HTML-ni derňemek gaty aňsat, etmeli zadyňyz, statiki usula jaň etmek Jsoup.parse()we HTML setiriňizi oňa geçirmek. parse()Jsoup HTML-ni bir setirden, faýldan, esasy URI-den, URL-den we a-dan HTML-ni okamak üçin birnäçe artykmaç usullary hödürleýär InputStream. Şeýle hem, UTF-8 formatda bolmasa, HTML faýlyny dogry okamak üçin kodlamagy kesgitläp bilersiňiz. Usul parse(String html)gelýän HTML-ni täze bir obýekte bölýär Document. Jsoup-da bir synp synpy uzaldýan Documentbir synpdan miras alýar . Synp hem synpdan miras alýar . Nul däl bir setiri usula geçireniňizde, "iň bolmanda" "kelle" we "beden" elementlerini öz içine alýan obýektiň üstünlikli, manyly bir bölegi bolmagy kepillendirilýär . Obýektiňiz bar bolsa , synpyň we onuň ene-atalarynyň degişli usullaryna jaň edip, islenýän maglumatlary alyp bilersiňiz . ElementNodeNodeTextNodeDocumentDocumentDocumentElementNode

HTML resminamasyny derňemek üçin Java programmasy

Ine, HTML setirini, internetden göçürilen HTML faýly we ýerli HTML faýly derňemek üçin doly programmamyz. Ony işletmek üçin IDE (Eclipse ýa-da başga bir) ýa-da buýruk setirini ulanyp bilersiňiz. “Eclipse” -de bu gaty aňsat, diňe şu kody göçüriň, täze Java taslamasyny dörediň, “src” bukjasyna sag basyň we göçürilen kody goýuň. “Eclipse” degişli at bilen degişli bukjany we deslapky kod faýly döretmek barada alada eder, şonuň üçin bu has az iş. Java programmaňyz bar bolsa, bu diňe bir ädim. Aşakdaky programma HTML faýly derňemegiň we gezmegiň üç mysalyny görkezýär. Birinji mysalda HTML-ni öz içine alýan bir setiri, ikinjisinde URL-den göçürilen HTML faýly, üçünjisinde ýerli faýl ulgamyndan HTML resminamasyny göçürip alýarys.
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);
    }
}
Çykyş:
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 seljerijisi, gowy döredilen ýa-da ýok bolsa, hödürleýän HTML-iň "arassa" bölümini öndürmek üçin ähli tagallalary eder. Aşakdaky ýalňyşlyklary dolandyryp biler:
  • açylmadyk bellikler. Mysal üçin,<p>Java <p>Scala to <p>Java</p> <p>Scala</p>
  • göz öňünde tutulan bellikler. Mysal üçin, açyklar <td>Java is Great</td>örtüler<table><tr><td>
  • Jsoup ygtybarly resminama gurluşlaryny döredýär (HTML kelläni we bedeni öz içine alýar, ýöne beden diňe degişli elementleri öz içine alýar)
Jsoup ajaýyp we ygtybarly açyk çeşme kitaphanasy bolup, html resminamasyny, beden böleklerini, html setirlerini okamagy we html web mazmunyny gönüden-göni derňemegi aňsatlaşdyrýar.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION