JavaRush /Java Blog /Random-TL /3 halimbawa kung paano mag-parse ng HTML file sa Java gam...
Sdu
Antas

3 halimbawa kung paano mag-parse ng HTML file sa Java gamit ang Jsoup

Nai-publish sa grupo
3 halimbawa kung paano mag-parse ng HTML file sa Java gamit ang Jsoup - 1Ang HTML ay ang core ng WEB, lahat ng mga pahina sa Internet na nakikita mo, dynamic man ang mga ito ay nabuo gamit ang JavaScript, JSP, PHP, ASP o iba pang mga teknolohiya sa web, ay batay sa HTML. Sa katunayan, pina-parse ng iyong browser ang HTML at ipinapakita ito sa paraang maginhawa para sa iyo. Ngunit paano kung kailangan mong i-parse ang isang HTML na dokumento at maghanap ng ilang elemento, tag, katangian dito, o suriin kung mayroong isang partikular na elemento o hindi gamit ang isang Java program. Kung naging Java programmer ka na sa loob ng ilang taon, sigurado akong nakagawa ka ng XML parsing gamit ang mga parser tulad ng DOM o SAX. Ngunit, balintuna, may mga pagkakataong kailangan mong i-parse ang isang HTML na dokumento mula sa isang pangunahing Java application na hindi naglalaman ng Servlets at iba pang mga Java web na teknolohiya. Bukod dito, ang Core JDK ay hindi rin naglalaman ng mga library ng HTTP o HTML. Kaya naman, pagdating sa pag-parse ng HTML file, maraming Java programmer ang nagtatanong sa Google kung paano makukuha ang halaga ng HTML tag sa Java. Nang makita ko ito, sigurado ako na ang solusyon ay isang open-source na library na nagpatupad ng functionality na kailangan ko, ngunit hindi ko alam na ito ay magiging kasing ganda at feature-rich gaya ng Jsoup. Hindi lamang ito nagbibigay ng suporta para sa pagbabasa at pag-parse ng mga HTML file, mga katangian, mga klase ng CSS sa estilo ng JQuery, ngunit sa parehong oras, pinapayagan kang baguhin ang mga ito. Gamit ang Jsoup maaari mong gawin ang anumang gusto mo sa isang HTML na dokumento. Sa artikulong ito, ipapa-parse namin ang isang HTML file at hahanapin ang mga pangalan at katangian ng mga tag. Titingnan din namin ang mga halimbawa ng pag-download at pag-parse ng HTML mula sa isang file at anumang URL, gaya ng home page ng Google.

Ano ang Jsoup

Ang Jsoup ay isang open-source na library ng Java para sa pagtatrabaho sa totoong HTML. Ito ay nagbibigay ng isang napaka-maginhawang API para sa pagkuha at pagmamanipula ng data gamit ang pinakamahusay na DOM, CSS, at jQuery-tulad ng mga diskarte. Ipinapatupad ng Jsoup ang pagtutukoy ng WHATWG HTML5, at pina-parse ang HTML sa parehong DOM gaya ng ginagawa ng mga modernong browser tulad ng Chrome at Firefox. Narito ang ilan sa mga kapaki-pakinabang na feature ng Jsoup library:
  • Maaaring i-scrape at i-parse ng Jsoup ang HTML mula sa isang URL, file o string.
  • Ang Jsoup ay makakahanap at makakapag-extract ng data gamit ang DOM traversal o CSS selector.
  • Binibigyang-daan ka ng Jsoup na manipulahin ang mga elemento ng HTML, mga katangian at teksto.
  • Nagbibigay ang Jsoup ng white-list na paglilinis ng impormasyong ibinigay ng user upang maiwasan ang mga pag-atake ng XSS.
  • Gumagawa din ang Jsoup ng "malinis" na HTML.
Ang Jsoup ay idinisenyo upang gumana sa iba't ibang uri ng HTML na umiiral sa totoong mundo, kabilang ang wastong na-validate na HTML na may hindi kumpleto at hindi wastong hanay ng mga tag. Ang isa sa mga pangunahing bentahe ng Jsoup ay ang pagiging maaasahan nito.

Pag-parse ng HTML sa Java gamit ang Jsoup

Sa tutorial na ito, makikita natin ang tatlong magkakaibang halimbawa ng pag-parse at pagtawid sa isang HTML na dokumento sa Java gamit ang Jsoup. Sa unang halimbawa, mag-parse kami ng HTML string na naglalaman ng mga tag sa anyo ng literal na Java string. Sa pangalawang halimbawa, ida-download namin ang aming HTML na dokumento mula sa Internet, at sa pangatlong halimbawa, ida-download namin ang aming sariling sample HTML file login.html para sa pag-parse. Ang file na ito ay isang sample na HTML na dokumento na binubuo ng isang tag na "title" at isang tag na "div" sa seksyong "body" na naglalaman ng HTML form. Ang form ay naglalaman ng mga patlang para sa pagpasok ng isang username at password, pati na rin ang mga pindutan ng pag-reset at pagkumpirma para sa karagdagang mga aksyon. Ito ay "tama" na HTML na maaaring pumasa sa "validity" check, ibig sabihin, lahat ng mga tag at attribute ay maayos na nakasara. Ito ang hitsura ng aming HTML file:
<!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>
Sa Jsoup napakadaling i-parse ang HTML, ang kailangan mo lang gawin ay tumawag ng static na paraan Jsoup.parse()at ipasa ang iyong HTML string dito. Nagbibigay ang Jsoup ng ilang overloaded na pamamaraan parse()para sa pagbabasa ng HTML mula sa isang string, isang file, mula sa isang base URI, mula sa isang URL, at mula sa isang InputStream. Maaari mo ring tukuyin ang pag-encode upang mabasa nang tama ang HTML file kung wala ito sa format na UTF-8. Ibina-parse ng pamamaraan parse(String html)ang papasok na HTML sa isang bagong bagay Document. Sa Jsoup, Documentnagmamana ang isang klase mula sa isang klase Element, na nagpapalawak sa klase Node. NodeNagmana rin ang klase sa klase TextNode. Hangga't nagpapasa ka ng isang hindi null na string sa pamamaraan, ikaw ay garantisadong magkakaroon ng matagumpay, makabuluhang pag-parse ng isang bagay Documentna naglalaman ng (hindi bababa sa) ang "ulo" at "katawan" na mga elemento. Kung mayroon kang isang bagay Document, maaari mong makuha ang nais na data sa pamamagitan ng pagtawag sa mga naaangkop na pamamaraan ng klase Documentat mga magulang nito Elementat Node.

Java program para sa pag-parse ng HTML na dokumento

Narito ang aming kumpletong programa para sa pag-parse ng HTML string, isang HTML file na na-download mula sa internet, at isang lokal na HTML file. Upang patakbuhin ito, maaari kang gumamit ng IDE (Eclipse o anumang iba pa) o ang command line. Sa Eclipse ito ay napakadali, kopyahin lamang ang code na ito, lumikha ng isang bagong proyekto ng Java, i-right click sa "src" na folder at i-paste ang kinopyang code. Ang Eclipse ang bahala sa paggawa ng wastong package at source code file na may naaangkop na pangalan, kaya hindi gaanong trabaho. Kung mayroon ka nang proyekto sa Java, ito ay isang hakbang lamang. Ang programa sa ibaba ay naglalarawan ng tatlong halimbawa ng pag-parse at pagtawid sa isang HTML file. Sa unang halimbawa, direkta naming na-parse ang isang string na naglalaman ng HTML, sa pangalawa isang HTML file na na-download mula sa isang URL, sa pangatlo ay nagda-download at nag-parse kami ng HTML na dokumento mula sa lokal na file system.
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);
    }
}
Output:
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
Ang Jsoup HTML parser ay gagawa ng lahat ng pagsusumikap upang makagawa ng "malinis" na pag-parse ng HTML na ibibigay mo, ito man ay mahusay na nabuo o hindi. Maaari nitong pangasiwaan ang mga sumusunod na error:
  • hindi saradong mga tag. Halimbawa,<p>Java <p>Scala to <p>Java</p> <p>Scala</p>
  • ipinahiwatig na mga tag. Halimbawa, ang mga bukas <td>Java is Great</td>ay ibalot<table><tr><td>
  • Gumagawa ang Jsoup ng mga matatag na istruktura ng dokumento (naglalaman ang HTML ng ulo at katawan, ngunit naglalaman lamang ng mga kaugnay na elemento ang katawan)
Ang Jsoup ay isang mahusay at maaasahang open-source na library na ginagawang napakasimple ng pagbabasa ng html na dokumento, body fragment, html string at direktang pag-parse ng html web content.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION