Gambar di atas menjelaskan struktur dari web crawler dan indexing yang nantinya mendukung proses sistem mesin pencari. Pada tulisan kali ini hanya akan dibahas secara singkat tentang web crawling.
Web crawling adalah proses mengambil kumpulan halaman dari sebuah web untuk dilakukan pengindeksan sehingga mendukung kinerja mesin pencari. Tujuan dari proses crawling adalah mempercepat dan mengefisienkan kumpulan halaman web dengan cepat, mengumpulkan struktur tautan yang menghubungkan kumpulan halaman web tersebut (Manning et al. 2008).
Salah satu contoh situs yang menerapkan web crawling adalah www.webcrawler.com . Di samping situs-situ mesin pencari terkemuka tentunya, seperti Google, Yahoo, Ask, Live, dan lain sebagainya.
Algoritma dari crawling adalah sebagai berikut : (Rada Mihalcea 2006)*
1 2 3 4 5 6 7 8 9 10 11 12 | Initialize queue (Q) with initial set of known URL’s. Until Q empty or page or time limit exhausted: Pop URL, L, from front of Q. If L is not to an HTML page (.gif, .jpeg, .ps, .pdf, .ppt…) continue loop. If already visited L, continue loop. Download page, P, for L. If cannot download P (e.g. 404 error, robot excluded) continue loop. Index P (e.g. add to inverted index or store cached copy). Parse P to obtain list of new links N. Append N to the end of Q. |
Algoritma di atas menjelaskan pengambilan konten (berupa teks) dari suatu situs sampai ke halaman terakhir yang ditandai dengan tidak ada lagi tautan yang merujuk ke halaman selanjutnya.
Pada tulisan kali ini akan diberi contoh cara mengambil konten dari suatu situs berupa tautan. Dengan menggunakan bahasa pemrograman PHP, library CURL, dan penggunaan regex (regular expression).
Sumber kode :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | // Fungsi untuk mengambil meng-scan seluruh konten dan disimpan dalam format teks // Menggunakan library CURL function scanPage($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_TIMEOUT, 120); //timeout after 120 seconds curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $result=curl_exec ($ch); curl_close ($ch); return $result ; } $url = "http://www.kohaci.com/" ; // Situs yang akan di crawl $rs = scanPage($url) ; /* * Pada tahap ini telah dilakukan pengambilan seluruh * konten dan teknik crawling telah dilakukan */ // Memilah isi konten untuk diambil hanya isi yang mengandung tautan saja // Menggunakan regular expression (info selanjutnya klik di www.php.net :D ) preg_match_all('/<a(?:[^>]*)href="(.*?)"(?:[^>]*)>(.*?)<\/a>/is',$rs,$output,PREG_SET_ORDER) ; // Menampilkan hasil foreach($output as $item) { print_r($item) ; } |
Semoga bermanfaat.
Referensi :
Manning, Raghavan, and Schutze. 2008. Introduction to Information Retrieval. Cambridge University Press, New York.



oi…. ini gambarnya mirip sama kaya yang di slidenya pak julio… huehehehehe… master neh..
keren2
aq coba kode nya untuk site lokal si bisa, tapi waktu aq coba ke wikipedia kok ga bisa ya? di sini si koneksinya lewat proxy…apa ada hubungannya?? kalo iya gimana cara ngatasinnya y??thx…
saya coba koq g kluar apa2 y?
Ada beberapa faktor, di antaranya :
- php_curl-nya belum diaktifkan, tinggal setting di php.ini
- koneksi internet memakai proxy atw gak? klw ya, jawabannya seperti pertanyaan mbak vivi di atas.
- kemungkinan terakhir apakah web yang mau dicrawl telah terlindungi dari serangan crawler, klw iya, berarti memang tidak bisa.
untuk langkah awal, coba crawl koneksi lokal (localhost-red.)
sip berhasil!!
thanks bro atas tulisannya
happy coding ^_^