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
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
Sekian tutorial mengambil data dari website lain (Teknik Grabbing), Semoga Bermanfaat..
Download
0 komentar:
Posting Komentar