• Translate

3/03/2016

Cara Mudah Membuat Web Crawler Sederhana dengan PHP

Tutorial PHP |

Advertisement

Cara Mudah Membuat Web Crawler Sederhana dengan PHP | Web Crawler adalah sebuah program yang merayapi suatu situs Web dan meng-indeks URL tersebut. Search Engine menggunakan crawler untuk mengindeks URL di Web. Google menggunakan crawler yang ditulis dengan bahasa Python. Ada juga mesin pencari lainnya yang menggunakan berbagai jenis crawler.

Dalam Tutorial ini saya akan memberitahu Anda bagaimana untuk membuat Web Crawler sederhana dengan bahasa pemrograman PHP.

Cara Mudah Membuat Web Crawler Sederhana dengan PHP

Membuat Web Crawler bukan perkara mudah yang bisa diselesaikan dengan cepat. Jadi, Berapa banyak waktu yang akan dibutuhkan untuk membuat crawler sempurna? Membuat Crawler adalah tugas yang sangat sulit, Ini seperti menciptakan sebuah Robot. Mari kita coba membangun Web Crawler yang sederhana dengan PHP.


Untuk parsing halaman web dari URL, kita akan menggunakan Simple HTML class Dom yang dapat didownload di Sourceforge. Sertakan file "simple_html_dom.php" dan mention variabel kita akan menggunakan :
include("simple_html_dom.php");
$crawled_urls=array();
$found_urls=array();
Kemudian, Tambahkan fungsi yang akan kita gunakan. Fungsi berikut akan mengkonversi URL relatif ke URL absolut :
function rel2abs($rel, $base){
 if (parse_url($rel, PHP_URL_SCHEME) != ''){
  return $rel;
 }
 if ($rel[0]=='#' || $rel[0]=='?'){
  return $base.$rel;
 }
 extract(parse_url($base));
 $path = preg_replace('#/[^/]*$#', '', $path);
 if ($rel[0] == '/'){
  $path = '';
 }
 $abs = "$host$path/$rel";
 $re = array('#(/.?/)#', '#/(?!..)[^/]+/../#');
 for($n=1; $n>0;$abs=preg_replace($re,'/', $abs,-1,$n)){}
 $abs=str_replace("../","",$abs);
 return $scheme.'://'.$abs;
}
fungsi berikut akan mengubah URL yang ditemukan ketika dirayapi ke URL nyata :
function perfect_url($u,$b){
 $bp=parse_url($b);
 if(($bp['path']!="/" && $bp['path']!="") || $bp['path']==''){
  if($bp['scheme']==""){
   $scheme="http";
  }else{
   $scheme=$bp['scheme'];
  }
  $b=$scheme."://".$bp['host']."/";
 }
 if(substr($u,0,2)=="//"){
  $u="http:".$u;
 }
 if(substr($u,0,4)!="http"){
  $u=rel2abs($u,$b);
 }
 return $u;
}
Kode ini adalah inti dari crawler :
function crawl_site($u){
 global $crawled_urls, $found_urls;
 $uen=urlencode($u);
 if((array_key_exists($uen,$crawled_urls)==0 || $crawled_urls[$uen] < date("YmdHis",strtotime('-25 seconds', time())))){
  $html = file_get_html($u);
  $crawled_urls[$uen]=date("YmdHis");
  foreach($html->find("a") as $li){
   $url=perfect_url($li->href,$u);
   $enurl=urlencode($url);
   if($url!='' && substr($url,0,4)!="mail" && substr($url,0,4)!="java" && array_key_exists($enurl,$found_urls)==0){
    $found_urls[$enurl]=1;
    echo $url."<br/>";
   }
  }
 }
}
Akhirnya, kita akan memanggil fungsi crawl_site untuk merayapi URL. saya akan menggunakan http://alltutorials.info untuk dirayapi sebagai ujicoba.
crawl_site("http://alltutorials.info");
Saat Anda menjalankan crawler PHP sekarang, Anda akan mendapatkan semua URL di halaman site anda. Anda dapat kembali merayapi URL tersebut untuk menemukan lebih banyak URL, tetapi Anda akan membutuhkan Server yang cepat dan koneksi internet yang cepat.

Super Komputer dengan koneksi Internet dari 10 GB/Second akan sempurna untuk itu. Jika Anda berpikir bahwa komputer Anda cepat dan bisa merayapi banyak URL, maka anda harus mengubah kode pada baris berikut ini :
echo $url."<br/>";
Menjadi :
crawl_site($url);
Catatan: - Kode ini tidak sempurna, mungkin ada kesalahan ketika merayapi beberapa URL. Saya tidak menyarankan Anda untuk merayapi URL untuk ditemukan lagi kecuali Anda memiliki Super Komputer dengan koneksi internet yang cepat.

Jika Anda memiliki masalah/saran/masukan, echo di komentar. Tanggapan Anda adalah kebahagiaan saya. Semoga Bermanfaat.

Disqus
Blogger
Comment
How to style text in Disqus comments Top Disqus Commentators
  • To write a bold letter please use <strong></strong> or <b></b>.
  • To write a italic letter please use <em></em> or <i></i>.
  • To write a underline letter please use <u></u>.
  • To write a strikethrought letter please use <strike></strike>.
  • To write HTML code, please use <code></code> or <pre></pre> or <pre><code></code></pre>, and please parse the code in the parser box below.
Show Parser Box