JavaRush /Java Blog /Random-ID /3 contoh cara parsing file HTML di Java menggunakan Jsoup...
Sdu
Level 17

3 contoh cara parsing file HTML di Java menggunakan Jsoup

Dipublikasikan di grup Random-ID
3 contoh cara parsing file HTML di Java menggunakan Jsoup - 1HTML adalah inti dari WEB, semua halaman Internet yang Anda lihat, apakah dibuat secara dinamis menggunakan JavaScript, JSP, PHP, ASP, atau teknologi web lainnya, didasarkan pada HTML. Faktanya, browser Anda mem-parsing HTML dan menampilkannya dengan cara yang nyaman bagi Anda. Tetapi bagaimana jika Anda perlu mengurai dokumen HTML dan menemukan beberapa elemen, tag, atribut di dalamnya, atau memeriksa apakah elemen tertentu ada atau tidak menggunakan program Java. Jika Anda telah menjadi programmer Java selama beberapa tahun, saya yakin Anda pasti pernah melakukan parsing XML menggunakan parser seperti DOM atau SAX. Namun ironisnya, ada kalanya Anda perlu mengurai dokumen HTML dari aplikasi Java dasar yang tidak berisi Servlet dan teknologi web Java lainnya. Selain itu, Core JDK juga tidak berisi pustaka HTTP atau HTML. Itu sebabnya, ketika ingin mengurai file HTML, banyak programmer Java yang bertanya kepada Google bagaimana cara mendapatkan nilai tag HTML di Java. Ketika saya menemukan ini, saya yakin bahwa solusinya adalah perpustakaan sumber terbuka yang mengimplementasikan fungsionalitas yang saya perlukan, tetapi saya tidak tahu bahwa itu akan sehebat dan kaya fitur seperti Jsoup. Ini tidak hanya memberikan dukungan untuk membaca dan mengurai file HTML, atribut, kelas CSS dalam gaya JQuery, tetapi pada saat yang sama, memungkinkan Anda untuk memodifikasinya. Menggunakan Jsoup Anda dapat melakukan apapun yang Anda inginkan dengan dokumen HTML. Pada artikel ini, kita akan mengurai file HTML dan menemukan nama serta atribut tag. Kami juga akan melihat contoh pengunduhan dan penguraian HTML dari file dan URL apa pun, seperti beranda Google.

Apa itu Jsoup

Jsoup adalah perpustakaan Java sumber terbuka untuk bekerja dengan HTML asli. Ini menyediakan API yang sangat nyaman untuk mengambil dan memanipulasi data menggunakan teknik seperti DOM, CSS, dan jQuery terbaik. Jsoup mengimplementasikan spesifikasi WHATWG HTML5, dan mem-parsing HTML ke dalam DOM yang sama seperti yang dilakukan browser modern seperti Chrome dan Firefox. Berikut adalah beberapa fitur berguna dari perpustakaan Jsoup:
  • Jsoup dapat mengikis dan mengurai HTML dari URL, file, atau string.
  • Jsoup dapat menemukan dan mengekstrak data menggunakan traversal DOM atau pemilih CSS.
  • Jsoup memungkinkan Anda memanipulasi elemen, atribut, dan teks HTML.
  • Jsoup menyediakan pembersihan daftar putih informasi yang disediakan pengguna untuk mencegah serangan XSS.
  • Jsoup juga menghasilkan HTML yang "rapi".
Jsoup dirancang untuk bekerja dengan berbagai jenis HTML yang ada di dunia nyata, termasuk HTML yang divalidasi dengan benar dengan kumpulan tag yang tidak lengkap dan tidak divalidasi. Salah satu keunggulan utama Jsoup adalah keandalannya.

Parsing HTML di Java menggunakan Jsoup

Dalam tutorial ini, kita akan melihat tiga contoh berbeda parsing dan traversing dokumen HTML di Java menggunakan Jsoup. Pada contoh pertama, kita akan mengurai string HTML yang berisi tag dalam bentuk literal string Java. Pada contoh kedua, kita akan mendownload dokumen HTML kita dari Internet, dan pada contoh ketiga, kita akan mendownload contoh file HTML login.html kita sendiri untuk diurai. File ini merupakan contoh dokumen HTML yang terdiri dari tag "title" dan tag "div" pada bagian "body" yang berisi form HTML. Formulir berisi kolom untuk memasukkan nama pengguna dan kata sandi, serta tombol reset dan konfirmasi untuk tindakan lebih lanjut. Ini adalah HTML "benar" yang dapat lolos pemeriksaan "validitas", artinya semua tag dan atribut ditutup dengan benar. Seperti inilah tampilan file HTML kita:
<!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 sangat mudah untuk mengurai HTML, yang perlu Anda lakukan hanyalah memanggil metode statis Jsoup.parse()dan meneruskan string HTML Anda ke sana. Jsoup menyediakan beberapa metode kelebihan beban parse()untuk membaca HTML dari string, file, dari URI dasar, dari URL, dan dari file InputStream. Anda juga dapat menentukan pengkodean untuk membaca file HTML dengan benar jika tidak dalam format UTF-8. Metode parse(String html)mem-parsing HTML yang masuk menjadi objek baru Document. Di Jsoup, kelas Documentmewarisi dari kelas Element, yang memperluas kelas tersebut Node. Kelas juga Nodemewarisi dari kelas TextNode. Selama Anda meneruskan string non-null ke metode ini, Anda dijamin berhasil mengurai objek Documentyang berisi (setidaknya) elemen "head" dan "body" dengan sukses. Jika Anda memiliki sebuah objek Document, Anda bisa mendapatkan data yang diinginkan dengan memanggil metode yang sesuai dari kelas tersebut Documentbeserta induknya Elementdan Node.

Program Java untuk mengurai dokumen HTML

Berikut adalah program lengkap kami untuk mengurai string HTML, file HTML yang diunduh dari internet, dan file HTML lokal. Untuk menjalankannya, Anda dapat menggunakan IDE (Eclipse atau lainnya) atau baris perintah. Di Eclipse ini sangat mudah, cukup salin kode ini, buat proyek Java baru, klik kanan pada folder "src" dan tempelkan kode yang disalin. Eclipse akan mengurus pembuatan paket dan file kode sumber yang tepat dengan nama yang sesuai, sehingga lebih sedikit pekerjaan yang harus dilakukan. Jika Anda sudah memiliki proyek Java, ini hanyalah satu langkah. Program di bawah ini mengilustrasikan tiga contoh parsing dan traversing file HTML. Pada contoh pertama, kita langsung mengurai string yang berisi HTML, pada contoh kedua, file HTML diunduh dari URL, pada contoh ketiga kita mengunduh dan mengurai dokumen HTML dari sistem file lokal.
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);
    }
}
Keluaran:
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
Pengurai HTML Jsoup akan melakukan segala upaya untuk menghasilkan penguraian "bersih" dari HTML yang Anda berikan, baik dalam bentuk yang baik atau tidak. Itu dapat menangani kesalahan berikut:
  • tag yang tidak tertutup. Misalnya,<p>Java <p>Scala to <p>Java</p> <p>Scala</p>
  • tag tersirat. Misalnya yang terbuka <td>Java is Great</td>akan dibungkus<table><tr><td>
  • Jsoup membuat struktur dokumen yang kuat (HTML berisi kepala dan badan, tetapi badan hanya berisi elemen yang relevan)
Jsoup adalah pustaka sumber terbuka yang luar biasa dan andal yang membuat pembacaan dokumen html, fragmen isi, string html, dan penguraian langsung konten web html menjadi sangat sederhana.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION