HTML adalah inti dari WEB. Semua halaman yang Anda lihat di Internet adalah HTML, baik yang dihasilkan secara dinamis oleh JavaScript, JSP, PHP, ASP, atau teknologi WEB lainnya. Browser Anda akan mengurai HTML dan merendernya untuk Anda. Tetapi bagaimana jika Anda perlu mengurai sendiri dokumen HTML dalam program Java dan menemukan elemen, tag, atribut tertentu, atau memeriksa apakah elemen tertentu ada? Jika Anda telah memprogram Java selama bertahun-tahun, saya yakin Anda pasti sudah mencoba parsing XML dan menggunakan parser seperti DOM atau SAX, tetapi kemungkinan besar Anda belum pernah melakukan parsing HTML apa pun. Yang lebih ironis lagi adalah bahwa dalam aplikasi Java, ada kalanya Anda perlu mengurai dokumen HTML, dan ini tidak termasuk Servlets atau teknologi Java WEB lainnya. Yang lebih parahnya adalah inti JDK tidak menyertakan pustaka HTTP atau HTML, setidaknya saya tidak mengetahuinya. Inilah sebabnya ketika ingin mengurai file HTML, banyak pemrogram Java harus mencari di Google terlebih dahulu untuk melihat cara mengekstrak tag HTML di Java. Ketika saya memiliki kebutuhan ini, saya percaya bahwa akan ada beberapa perpustakaan sumber terbuka yang dapat mencapai hal ini, tetapi saya tidak menyangka akan ada perpustakaan yang keren dan berfungsi penuh seperti JSoup. Ini tidak hanya mendukung membaca dan menguraikan dokumen HTML, tetapi juga memungkinkan Anda mengekstrak elemen apa pun dari file HTML, serta atribut dan properti CSSnya, dan Anda juga dapat memodifikasinya. Dengan JSoup Anda dapat melakukan hampir semua hal dengan dokumen HTML. Kita akan melihat contoh cara mengunduh dan mengurai file HTML dari beranda Google atau URL apa pun di Java.
Apa itu perpustakaan JSoup
Jsoup adalah perpustakaan Java sumber terbuka yang dapat digunakan untuk memproses HTML dalam aplikasi praktis. Ini menyediakan API yang sangat nyaman untuk ekstraksi dan modifikasi data, memanfaatkan sepenuhnya keunggulan metode gaya DOM, CSS, dan jquery. Jsoup mengimplementasikan spesifikasi WAHTWG HTML5, dan DOM yang diurai dari HTML sama persis dengan yang diurai oleh browser modern seperti Chrome dan Firefox. Berikut adalah beberapa fitur berguna dari perpustakaan Jsoup:
1.Jsoup dapat memperoleh dan mengurai HTML dari URL, file, atau string.
2.Jsoup dapat menemukan dan mengekstrak data, menggunakan traversal DOM atau pemilih CSS.
3. Anda dapat menggunakan Jsoup untuk memodifikasi elemen, atribut, dan teks HTML.
4.Jsoup memastikan bahwa konten yang dikirimkan oleh pengguna bersih melalui daftar putih yang aman untuk mencegah serangan XSS.
5.Jsoup juga dapat menghasilkan HTML yang rapi.
Jsoup dirancang untuk menangani semua jenis HTML berbeda yang muncul di kehidupan nyata, termasuk HTML yang benar dan valid serta kumpulan tag yang tidak lengkap dan tidak valid. Salah satu daya saing inti Jsoup adalah ketahanannya.
Menggunakan Jsoup untuk parsing HTML di Java
Dalam tutorial parsing Java HTML ini, kita akan melihat tiga contoh berbeda penggunaan Jsoup untuk mengurai dan melintasi HTML di Java. Pada contoh pertama, kita akan mengurai string HTML, yang isinya adalah tag yang terdiri dari string literal di Java. Pada contoh kedua, kita akan mendownload dokumen HTML dari WEB, dan pada contoh ketiga, kita akan memuat file contoh HTML login.html untuk parsing. File ini adalah contoh dokumen HTML. File ini berisi tag judul dan tag div di dalam badannya, yang berisi formulir. Ini memiliki tag masukan untuk mendapatkan nama pengguna dan kata sandi, serta tombol kirim dan setel ulang untuk langkah berikutnya. Ini adalah HTML yang benar dan valid, yaitu semua tag dan atribut ditutup dengan benar. Berikut ini contoh file HTML kami:
Copy kode kodenya sebagai berikut:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transisi//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<kepala>
<meta http-equiv="Jenis Konten" content="teks/html; charset=ISO-8859-1">
<title>Halaman Masuk</title>
</kepala>
<tubuh>
<div id="login" >
<formulir tindakan="login.do">
Nama pengguna : <input id="nama pengguna" type="teks" /><br>
Kata Sandi : <masukan id="kata sandi" type="kata sandi" /><br>
<masukan id="kirim" type="kirim" />
<masukan id = "reset" type = "reset" />
</bentuk>
</div>
</tubuh>
</html>
Menggunakan Jsoup untuk mengurai HTML sangat sederhana, Anda hanya perlu memanggil metode statisnya Jsoup.parse() dan meneruskan string HTML Anda. Jsoup menyediakan beberapa metode parse() yang kelebihan beban, yang dapat membaca file HTML dari string, file, URI, URL, dan bahkan InputStreams. Jika bukan pengkodean UTF-8, Anda juga dapat menentukan pengkodean karakter agar file HTML dapat dibaca dengan benar. Di bawah ini adalah daftar lengkap metode parsing HTML di perpustakaan Jsoup. Metode parse(String html) mem-parsing HTML masukan ke dalam Dokumen baru. Di Jsoup, Dokumen mewarisi dari Elemen, yang pada gilirannya mewarisi dari Node. TextNode yang sama juga mewarisi dari Node. Selama Anda memasukkan string non-null, Anda pasti akan mendapatkan penguraian yang sukses dan bermakna serta mendapatkan Dokumen yang berisi elemen head dan body. Setelah Anda mendapatkan Dokumen ini, Anda dapat memanggil metode yang sesuai pada Dokumen dan kelas induknya Elemen dan Node untuk mendapatkan data yang Anda inginkan.
Program Java yang mem-parsing dokumen HTML
Di bawah ini adalah program Java lengkap yang mem-parsing string HTML, file HTML yang diunduh dari Internet, dan file HTML di sistem file lokal. Anda dapat menggunakan Eclipse IDE atau IDE lain atau bahkan perintah untuk menjalankan program ini. Di Eclipse, ini sangat sederhana. Cukup salin kode ini, buat proyek Java baru, klik kanan pada paket src dan tempelkan. Eclipse akan membuat paket yang benar dan file sumber Java dengan nama yang sama, sehingga beban kerjanya minimal. Jika Anda sudah memiliki proyek sampel Java, maka hanya diperlukan satu langkah. Program Java berikut menunjukkan tiga contoh berbeda dalam penguraian dan penjelajahan file HTML. Pada contoh pertama, kita langsung mengurai string dengan konten HTML, pada contoh kedua kita mengurai file HTML yang diunduh dari URL, dan pada contoh ketiga kita memuat dokumen HTML dari sistem file lokal dan menguraikannya. Metode parse digunakan pada contoh pertama dan ketiga untuk mendapatkan objek Dokumen, yang dapat Anda kueri untuk mengekstrak nilai tag atau nilai atribut apa pun. Pada contoh kedua, kami menggunakan metode Jsoup.connect, yang akan membuat koneksi URL, mendownload HTML dan menguraikannya. Metode ini juga akan mengembalikan Dokumen, yang dapat digunakan untuk kueri selanjutnya dan mendapatkan nilai tag atau atribut.
Copy kode kodenya sebagai berikut:
impor java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
/**
[*] Program Java untuk mengurai/membaca dokumen HTML dari File menggunakan perpustakaan Jsoup.
[*] Jsoup adalah perpustakaan sumber terbuka yang memungkinkan pengembang Java mengurai HTML
[*] file dan ekstrak elemen, manipulasi data, ubah gaya menggunakan DOM, CSS dan
[*] Metode seperti JQuery.
[*]
[*] @penulis Javin Paul
[*]/
HTMLParser kelas publik{
public static void main(String args[]) {
// Parsing String HTML menggunakan perpustakaan JSoup
String HTMLSTring = "<!DOCTYPE html>"
+ "<html>"
+ "<kepala>"
+ "<title>Contoh JSoup</title>"
+ "</kepala>"
+ "<tubuh>"
+ "|[b]HaloDunia[/b]"
+ ""
+ "</tubuh>"
+ "</html>";
Dokumen html = Jsoup.parse(HTMLSTring);
String judul = html.judul();
String h1 = html.tubuh().getElementsByTag("h1").teks();
System.out.println("Masukkan String HTML ke JSoup:" + HTMLSTring);
System.out.println("Setelah di parsing, Judul : " + judul);
System.out.println("Setelah diurai, Judul : " + h1);
// JSoup Contoh 2 - Membaca halaman HTML dari URL
dokumen dokumen;
mencoba {
doc = Jsoup.connect("http://google.com/").get();
judul = dok.judul();
} tangkapan (IOException e) {
e.printStackTrace();
}
System.out.println("Jsoup Dapat membaca halaman HTML dari URL, judul : " + judul);
// JSoup Contoh 3 - Mengurai file HTML di Java
//Dokumen htmlFile = Jsoup.parse("login.html", "ISO-8859-1"); // salah
Dokumen htmlFile = null;
mencoba {
htmlFile = Jsoup.parse(File baru("login.html"), "ISO-8859-1");
} tangkapan (IOException e) {
// TODO Blok tangkapan yang dibuat secara otomatis
e.printStackTrace();
} // Kanan
judul = htmlFile.judul();
Elemen div = htmlFile.getElementById("login");
String cssClass = div.className(); // mendapatkan elemen HTML bentuk kelas
System.out.println("Jsoup juga dapat mengurai file HTML secara langsung");
System.out.println("judul : " + judul);
System.out.println("kelas tag div : " + cssClass);
}
}
Keluaran:
Copy kode kodenya sebagai berikut:
Masukkan String HTML ke JSoup :<!DOCTYPE html><html><head><title>Contoh JSoup</title></head><body><table><tr><td><h1>HelloWorld</h1> </tr></tabel></tubuh></html>
Setelah diurai, Judul: Contoh JSoup
Setelah penguraian, Judul: HelloWorld
Jsoup Dapat membaca halaman HTML dari URL, judul: Google
Jsoup juga dapat mengurai file HTML secara langsung dengan judul : Halaman Login
kelas tag div: sederhana
Kelebihan Jsoup adalah sangat kuat. Parser HTML Jsoup akan mengurai HTML yang Anda berikan sebersih mungkin, terlepas dari apakah HTML tersebut dibuat dengan baik. Ia dapat menangani kesalahan seperti tag yang tidak ditutup (misalnya, Java <p>Scala hingga <p>JavaScala), tag implisit (misalnya, |Java is Great yang dibungkus dengan |), dan selalu dapat membuat Output struktur dokumen (HTML termasuk kepala dan badan, dan hanya elemen yang benar yang akan dimasukkan ke dalam kepala). Beginilah cara HTML diurai di Java. Jsoup adalah pustaka sumber terbuka yang luar biasa dan kuat yang membuatnya sangat mudah untuk membaca dokumen HTML, fragmen isi, string HTML, dan mengurai konten HTML langsung dari WEB. Pada artikel ini, kita mempelajari cara mendapatkan tag HTML tertentu di Java, seperti pada contoh pertama kita mengekstrak nilai judul dan tag H1 ke dalam teks, dan pada contoh ketiga kita mempelajari cara mendapatkannya melalui Ekstrak properti CSS ke dapatkan nilai properti dari tag HTML. Selain metode html.body().getElementsByTag("h1").text() bergaya jQuery yang kuat, Anda juga dapat mengekstrak tag HTML arbitrer, dan juga menyediakan fungsi seperti Document.title() dan Element.className( ) Metode mudah, Anda bisa dengan cepat mendapatkan judul dan kelas CSS. Saya harap Anda bersenang-senang dengan JSoup dan kita akan segera melihat beberapa contoh API ini.