Berbagai macam komponen sebuah web search engine (Manning et al. 2008)

Berbagai macam komponen sebuah web search engine (Manning et al. 2008)

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.