Pembahasan lebih jauh mengenain Regular Expresion dapa dibaca pada artikel berikut pencarian-string-menggunakan-regular-expresion . Singkatnya pada artikel ini kita menggunakan Regular Expresion untuk mengambil data teks yang kita inginkan pada teks HTML yang didapat dari URL.
Sebagai bahan pembelajaran, kita akan mencoba untuk mengambil judul artikel pertama yang tampil pada blog saya ini^^.
Pertama kita buat satu class untuk menangani koneksi dan pengambilan teks HTML dari URL. Berikut adalah contoh kode classnya :
import java.io.BufferedInputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; class URLConnector { public static String getHTTPResource (String link) { StringBuffer result = new StringBuffer(); try { System.out.println("Melakukan koneksi ke " + link + "..."); URL url = new URL(link); URLConnection con = url.openConnection(); con.addRequestProperty("User-Agent", "Mozilla/3.6"); BufferedInputStream in = new BufferedInputStream(con.getInputStream()); System.out.println("Koneksi berhasil."); System.out.println("Membaca data..."); int buff; // membaca data dari web server per byte while ((buff = in.read()) != -1) { result.append((char)buff); } System.out.println("Selesai."); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result.toString(); } }
Setelah itu, buat satu class lagi yang bertugas untuk melakukan pencarian teks judul dan kesimpulan. Berikut adalah contoh kode classnya :
import java.util.regex.Matcher; import java.util.regex.Pattern; class Pencari { public static String cariJudul (String htmlSource) { String regexPembuka = "[\\s]"; String regexJudul = ".*"; String regexPenutup = "[\\s]
"; String hasil = Pencari.cari(regexPembuka + regexJudul + regexPenutup, htmlSource); return hapus(regexPenutup, hapus(regexPembuka, hasil)); } public static String cari (String regex, String source) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(source); if (matcher.find()) { return matcher.group(); } else { return null; } } public static String hapus (String regex, String source) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(source); return matcher.replaceAll(""); } }
Selanjutnya tinggal membuat satu class lagi yang berfungsi sebagai implementator kedua class diatas, misalnya disini kita buat class Main :
class Main { public static void main (String[] args) { String htmlSource = URLConnector.getHTTPResource("http://ikhsanaulia.blogspot.com/"); String judul = Pencari.cariJudul(htmlSource); System.out.println("Judul : " + judul); } }
Berikut adalah tampilan console saat class Main dieksekusi :
Nilai variabel judul pada main method yang ada di class Main diisi dari hasil pencarian pada class Pencari yang kebetulan pada saat artikel ini ditulis judul artikel pertama yang muncul di halaman depan blog adalah "Pencarian String Menggunakan Regular Expresion dan JAVA"
Kurang lebih seperti itulah dasar-dasar web scraping yang selanjutnya metode ini dapat dikembangkan lagi seperti program pembaca artikel atau juga bisa saja dikembangkan menjadi program untuk mencuri konten dari berbagai situs.
Selamat mencoba :)
mantab gan, tp bisa di berikan action di javanya gak bila d webnya itu ada button
ReplyDeletetidak bisa jalan, ada solusi?
ReplyDelete