JSoup – search html element by value text

JSoup merupakan salah satu java library yang membantu kita untuk melakukan ekstraksi serta memanipulasi file HTML, library ini juga bisa kita pake ketika membuat aplikasi android yang mana membutuhkan untuk ekstraksi hasil scrap HTML dari sebuah URL / Website ataupun dari sebuah file HTML.

Konsep pemakaiannya hampir sama ketika kita bermain-main dengan JQuery (JavaScript). Misalkan kita ingin mendapatkan atribut, value atau elemen lainnya yang ada di halaman HTML yang ditentukan berdasarkan ID elemen, Class elemen atau atribut sejenisnya. Langsung ke contoh awal penggunaan JSoup aja ya biar lebih paham.

[sourcecode language=”html” wraplines=”false”]
<div id="area1">
<table id="contoh1" class="tb">
<tr>
<td>Nama Lengkap</td>
<td>:</td>
<td>Rendra Kurniawan</td>
</tr>
<tr>
<td>Website</td>
<td>:</td>
<td>www.kreasigaruda.com</td>
</tr>
</table>
</div>

Dari potongan kode HTML diatas, misalkan kita ingin mengambil table secara keseluruhan untuk kemudian ditampilkan atau dilakukan manipulasi lainnya di aplikasi android atau aplikasi java kita. Bisa dilakukan dengan kode berikut :

[sourcecode language=”java” wraplines=”false”]
/**
* Kita ingin dapat elemen <table>
*
* Document doc : variabel untuk menyimpan source HTML
*/

// Disini kita mainkan
Elements ambilTable = doc.select("#area1");

// Output dari ambilTable adalah seluruh script <table> beserta isinya dari HTML diatas

Nah, oke contoh pertama cukup mudah bukan? Sama halnya ketika kita ingin mendapatkan value / text dari sebuah DIV, SPAN atau elemen HTML lainnya. Cukup kita tau ID elemen atau Class atau penanda lainnya yang bisa kita pake untuk identifikasi elemen mana yang mau kita obrak-abrik.

TAPI, bagaiman jika kalian tidak tahu atau TIDAK ADA PENANDA khusus pada sebuah elemen yang mau kita ambil value / text-nya? Contohnya adalah, BAGAIMANA caranya jika kita ingin mendapatkan text Rendra Kurniawan dari potongan kode HTML diatas??? Jangan risau jangan gundah, caranya mudah kok silahkan pahami potongan kode dibawah ini :

[sourcecode language=”java” wraplines=”false”]
Element nama = doc.select("td:contains(Rendra Kurniawan)").first();
System.out.println(nama.text());

Kuncinya adalah di kode td:contains yang mana kode tersebut berarti “cari dan dapatkan elemen TD yang di dalamnya mengandung kata Rendra Kurniawan”. Nah, begitulah adanya mudah ya? Alhamdulillah, semoga bermanfaat.

Leave a Reply