WHAT'S NEW?

Cara Mengambil Data Dari Website Lain (Teknik Grabbing)

Grabbing adalah teknik untuk mengambil teks atau secara umum obyek yang ada di suatu situs lain kemudian diletakkan ke web kita. Konsep grabbing ini berbeda dengan konsep web service karena data teks yang diambil melalui grabbing ini tidak disajikan dalam bentuk format tertentu seperti halnya XML atau JSON. Namun teks yang diambil berada di halaman web situs, atau dengan kata lain terselip di dalam kode-kode HTML.

Untuk melakukan grabbing ini, kita bisa menggunakan CURL Belajar PHP CURL. Dengan CURL ini nanti, kita bisa baca semua kode HTML dari suatu situs lalu kita ambil informasi yang kita inginkan dan kemudian informasi tersebut kita tampilkan di website kita.

Sekarang akan saya berikan cara membaca kode HTML dari suatu situs menggunakan CURL.  Function :
<?php

function bacaHTML($url){

    // inisialisasi CURL

    $data = curl_init();

    // setting CURL

    curl_setopt($data, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($data, CURLOPT_URL, $url);

    // menjalankan CURL untuk membaca isi file

    $hasil = curl_exec($data);

    curl_close($data);

    return $hasil;

}
?>

Function bacaHTML() di atas nantinya akan menghasilkan isi file HTML dari suatu sistus. Sebagai contoh, misalkan anda ingin menampilkan isi file HTML yang ada di halaman depan dari blog PHP Indonesia (http://blog.phpindonesia.or.id/) , maka buat saja script berikut ini :

<?php

function bacaHTML($url){

    // inisialisasi CURL

    $data = curl_init();

    // setting CURL

    curl_setopt($data, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($data, CURLOPT_URL, $url);

    // menjalankan CURL untuk membaca isi file

    $hasil = curl_exec($data);

    curl_close($data);

    return $hasil;

}

echo bacaHTML('http://blog.phpindonesia.or.id/');

?>

Jika anda jalankan di localhost dengan URL http://localhost/namafolderanda/index.php maka akan muncul tampilan dari blog PHP Indonesia.


Tapi kalau agan tidak terkoneksi dengan internet, maka tidak muncul.

Ok yang tadi itu hanya pemisalan saja gan, langsung saja bagaimana cara mengambil konten dari website lain .
Pertama kita harus mengetahui struktur dari website yang akan kita ambil kontennya, lihat dari inspect element bagian yang ingin kita ambil kontennya. Disini saya ambil contoh kita akan mengambil konten berita terkini dari kompas.com.



Setelah kita tahu bagian yang mana ingin kita ambil, selanjutnya kita lihat inspect element.



Setelah itu kita bisa langsung membuat syntaxnya. Pertama buat dulu syntax curl, sebelumnya karena induk yang akan kita ambil kontennya tidak memiliki ID sebagai penggantinya kita akan mengambil menggunakan class disini saya buat fungsi agar mudah dipakai.

<?php

function bacaHTML($url){

    // inisialisasi CURL

    $data = curl_init();

    // setting CURL

    curl_setopt($data, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($data, CURLOPT_URL, $url);

    // menjalankan CURL untuk membaca isi file

    $hasil = curl_exec($data);

    curl_close($data);

    return $hasil;

}
?>

Setelah itu kita akan inisialisasi DOM HTML sekaligus mencoba fungsi diatas dan mengambil kompas.com. sisipkan syntax dibawah ini dibawah fungsi diatas.

//mengambil data dari kompas

$bacaHTML = bacaHTML("http://www.kompas.com");


//membuat dom dokumen

$dom = new DomDocument();


//mengambil html dari kompas untuk di parse


@$dom->loadHTML($bacaHTML);

Sampai disini kita hanya berhasil memanggil seluruh HTML dari kompas.com. selanjutnya kita akan mengambil konten tertentu dari HTML menggunakan DOM HTML.

//nama class yang akan dicari

$classname="latest__wrap";


//mencari class memakai dom query

$finder = new DomXPath($dom);

$spaner = $finder->query("//*[contains(@class, '$classname')]");

Dengan syntax diatas kita dapat mengambil data dari semua tag yang memiliki class latest__wrap. Sebelumnya mari kita lihat dulu tag konten yang akan kita ambil.




Setelah kita tahu maka kita akan langsung mengambil isi dari tag tersebut. Maka sisipkan syntax berikut dibawah syntax sebelumnya :

//mengambil data dari class yang pertama
$span = $spaner->item(0);
//dari class pertama mengambil 2 elemen yaitu a yang menyimpan judul dan link dan span yang menyimpan tanggal
$link =  $span->getElementsByTagName('a');
$tanggal = $span->getElementsByTagName('span');

Dengan itu kita akan mengambil seluruh link dan tanggal/waktu dari tag masing – masing, tetapi pada saat ini kedua variable itu masij berbentuk array dom, maka kita akan merapikannya menjadi array normal dengan menyisipkan lagi syntax berikut :

$data =array();
foreach ($link as $val){
    $data[] = array(
        'judul' => $link->item($no)->nodeValue,
        'link' => $link->item($no)->getAttribute('href'),
        'tanggal' => $tanggal->item($no)->nodeValue,
        );
    $no++;
}
?>

Syntax diatas untuk nodeValue itu untuk mengambil isi dari tag, sedangkan getAttribute untuk mengambil atribut. Sampai tahap ini kita sudah selesai mengambil data. Selanjutnya kita akan menampilkannya dengan cara mengeluarkan seluruh data yang ada pada $data dengan syntax ini 

<style>
     table,th,td{
         border:1px solid #000;
         font-size:12px;
     }
 </style>
 <h2>Grabbing dari Kompas.com</h2>
<table>
     <thead>
         <th>No</th>   
         <th>Judul</th>   
         <th>Link</th>   
         <th>Tanggal</th>   
     </thead>
    <tbody>
         <?php
         $no=1;
         foreach($data as $val)
         {
             ?>
             <tr>
                 <td><?php echo $no;?></td>
                 <td><?php echo $val['judul'];?></td>
                 <td><?php echo $val['link'];?></td>
                 <td><?php echo $val['tanggal'];?></td>
             </tr>
             <?php
             $no++;
         }
         ?>
     </tbody>
 </table>

Dengan begitu kita selesai melakukan pengambilan data dan mengeluarkannya dalam bentuk table.



Sekian tutorial mengambil data dari website lain (Teknik Grabbing), Semoga Bermanfaat..

Download

0 komentar:

Posting Komentar