JavaRush /Blog Java /Random-MS /3 contoh cara menghuraikan fail HTML dalam Java menggunak...
Sdu
Tahap

3 contoh cara menghuraikan fail HTML dalam Java menggunakan Jsoup

Diterbitkan dalam kumpulan
3 contoh cara menghuraikan fail HTML dalam Java menggunakan Jsoup - 1HTML ialah teras WEB, semua halaman Internet yang anda lihat, sama ada ia dijana secara dinamik menggunakan JavaScript, JSP, PHP, ASP atau teknologi web lain, adalah berdasarkan HTML. Malah, penyemak imbas anda menghuraikan HTML dan memaparkannya dengan cara yang mudah untuk anda. Tetapi bagaimana jika anda perlu menghuraikan dokumen HTML dan mencari beberapa elemen, teg, atribut di dalamnya, atau menyemak sama ada unsur tertentu wujud atau tidak menggunakan program Java. Jika anda telah menjadi pengaturcara Java selama beberapa tahun, saya pasti anda akan melakukan penghuraian XML menggunakan parser seperti DOM atau SAX. Tetapi, ironinya, ada kalanya anda perlu menghuraikan dokumen HTML daripada aplikasi Java asas yang tidak mengandungi Servlets dan teknologi web Java yang lain. Selain itu, Core JDK juga tidak mengandungi perpustakaan HTTP atau HTML. Itulah sebabnya, semasa menghuraikan fail HTML, ramai pengaturcara Java bertanya kepada Google cara mendapatkan nilai teg HTML dalam Java. Apabila saya menjumpai ini, saya pasti bahawa penyelesaiannya ialah perpustakaan sumber terbuka yang melaksanakan fungsi yang saya perlukan, tetapi saya tidak tahu bahawa ia akan menjadi hebat dan kaya dengan ciri seperti Jsoup. Ia bukan sahaja menyediakan sokongan untuk membaca dan menghuraikan fail HTML, atribut, kelas CSS dalam gaya JQuery, tetapi pada masa yang sama, membolehkan anda mengubah suainya. Menggunakan Jsoup anda boleh melakukan apa sahaja yang anda mahu dengan dokumen HTML. Dalam artikel ini, kami akan menghuraikan fail HTML dan mencari nama dan atribut teg. Kami juga akan melihat contoh memuat turun dan menghuraikan HTML daripada fail dan mana-mana URL, seperti halaman utama Google.

Apa itu Jsoup

Jsoup ialah perpustakaan Java sumber terbuka untuk bekerja dengan HTML sebenar. Ia menyediakan API yang sangat mudah untuk mendapatkan dan memanipulasi data menggunakan teknik terbaik seperti DOM, CSS dan jQuery. Jsoup melaksanakan spesifikasi WHATWG HTML5 dan menghuraikan HTML ke dalam DOM yang sama seperti pelayar moden seperti Chrome dan Firefox lakukan. Berikut ialah beberapa ciri berguna perpustakaan Jsoup:
  • Jsoup boleh mengikis dan menghuraikan HTML daripada URL, fail atau rentetan.
  • Jsoup boleh mencari dan mengekstrak data menggunakan traversal DOM atau pemilih CSS.
  • Jsoup membolehkan anda memanipulasi elemen HTML, atribut dan teks.
  • Jsoup menyediakan sanitasi senarai putih bagi maklumat yang dibekalkan pengguna untuk mencegah serangan XSS.
  • Jsoup juga menghasilkan HTML yang "kemas".
Jsoup direka bentuk untuk berfungsi dengan pelbagai jenis HTML yang wujud di dunia nyata, termasuk HTML yang disahkan dengan betul dengan set teg yang tidak lengkap dan tidak sah. Salah satu kelebihan utama Jsoup ialah kebolehpercayaannya.

Menghuraikan HTML dalam Java menggunakan Jsoup

Dalam tutorial ini, kita akan melihat tiga contoh berbeza untuk menghurai dan melintasi dokumen HTML dalam Java menggunakan Jsoup. Dalam contoh pertama, kami akan menghuraikan rentetan HTML yang mengandungi teg dalam bentuk literal rentetan Java. Dalam contoh kedua, kami akan memuat turun dokumen HTML kami dari Internet, dan dalam contoh ketiga, kami akan memuat turun contoh fail HTML kami sendiri login.html untuk penghuraian. Fail ini ialah contoh dokumen HTML yang terdiri daripada teg "tajuk" dan teg "div" dalam bahagian "badan" yang mengandungi borang HTML. Borang ini mengandungi medan untuk memasukkan nama pengguna dan kata laluan, serta set semula dan butang pengesahan untuk tindakan selanjutnya. Ini ialah HTML "betul" yang boleh lulus semakan "kesahan", bermakna semua teg dan atribut ditutup dengan betul. Beginilah rupa fail HTML kami:
<!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>
Dengan Jsoup adalah sangat mudah untuk menghuraikan HTML, anda hanya perlu memanggil kaedah statik Jsoup.parse()dan menghantar rentetan HTML anda kepadanya. Jsoup menyediakan beberapa kaedah terlebih beban parse()untuk membaca HTML daripada rentetan, fail, daripada URI asas, daripada URL dan daripada InputStream. Anda juga boleh menentukan pengekodan untuk membaca fail HTML dengan betul jika ia tidak dalam format UTF-8. Kaedah parse(String html)menghuraikan HTML masuk ke dalam objek baharu Document. Dalam Jsoup, kelas Documentmewarisi daripada kelas Element, yang memanjangkan kelas Node. Kelas juga Nodemewarisi daripada kelas TextNode. Selagi anda menghantar rentetan bukan nol kepada kaedah tersebut, anda dijamin mempunyai penghuraian yang berjaya dan bermakna bagi objek Documentyang mengandungi (sekurang-kurangnya) elemen "kepala" dan "badan". Jika anda mempunyai objek Document, anda boleh mendapatkan data yang dikehendaki dengan memanggil kaedah kelas yang sesuai Documentdan ibu bapanya Elementdan Node.

Program Java untuk menghuraikan dokumen HTML

Berikut ialah program lengkap kami untuk menghuraikan rentetan HTML, fail HTML yang dimuat turun dari internet dan fail HTML tempatan. Untuk menjalankannya, anda boleh menggunakan IDE (Eclipse atau mana-mana yang lain) atau baris arahan. Dalam Eclipse ini sangat mudah, hanya salin kod ini, buat projek Java baharu, klik kanan pada folder "src" dan tampal kod yang disalin. Eclipse akan menguruskan untuk mencipta pakej yang betul dan fail kod sumber dengan nama yang sesuai, jadi ia adalah lebih sedikit kerja. Jika anda sudah mempunyai projek Java, maka ini hanya satu langkah. Program di bawah menggambarkan tiga contoh menghurai dan melintasi fail HTML. Dalam contoh pertama, kami terus menghuraikan rentetan yang mengandungi HTML, dalam yang kedua fail HTML dimuat turun dari URL, dalam yang ketiga kami memuat turun dan menghuraikan dokumen HTML daripada sistem fail tempatan.
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);
    }
}
Pengeluaran:
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
Penghurai HTML Jsoup akan berusaha sedaya upaya untuk menghasilkan penghuraian "bersih" bagi HTML yang anda berikan, sama ada ia dibentuk dengan baik atau tidak. Ia boleh menangani ralat berikut:
  • tag yang tidak tertutup. Sebagai contoh,<p>Java <p>Scala to <p>Java</p> <p>Scala</p>
  • tag tersirat. Sebagai contoh, yang terbuka <td>Java is Great</td>akan dibungkus<table><tr><td>
  • Jsoup mencipta struktur dokumen yang teguh (HTML mengandungi kepala dan badan, tetapi badan mengandungi elemen yang berkaitan sahaja)
Jsoup ialah perpustakaan sumber terbuka yang sangat baik dan boleh dipercayai yang menjadikan membaca dokumen html, serpihan badan, rentetan html dan menghuraikan kandungan web html secara langsung sangat mudah.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION