Pusat Ilmu Secara Detil

Tutorial CURL PHP :Mengambil Data Tertentu dari Website Lain

Tutorial CURL PHP :Mengambil Data Tertentu dari Website Lain

Dalam tutorial pemrograman PHP kali ini, kita akan membahas tentang kegunaan dari curl php serta bagaimana cara mengimplementasinya.

Pernahkah anda membuat sebuah situs yang menampilkan tentang informasi cuaca atau gempa yang uptodate data-datanya, dimana data-data tersebut kita dapatkan dari databasenya BMKG ?.

Dalam menampilkan data-data update dari BMKG, tentunya kita memanfaatkan teknik web service yang disediakan oleh situs BMKG sendiri yang dapat ditemukan pada url : http://data.bmkg.go.id/ Umumnya web service menggunakan metode pengambilan data/sinkronisasi data melalui XML-RPC, REST, SOAP atau JSON.

Nah sekarang bagaimana seandainya sebuah situs (web) tidak menyediakan web service resminya, sedangkan kita membutuhkan data dari web tersebut untuk kita letakkan dalam website kita. Apakah hal tersebut dimungkinkan ?. Tentunya sangat memungkinkan. Kita dapat memanfaatkan librari cURL PHP.

Apa itu PHP cURL ?

cURL merupakan singkatan dari Client URL. cURL adalah librari untuk mengtransfer data ke berbagai protokol, seperti : http, ftp, tftp dsb. Dengan menggunakan cURL, kita dapat mengirimkan HTTP request dengan menggunakan method GET atau POST.


Fungsi PHP cURL

Dengan menerapkan libari cURL, maka kita dapat mengambil bagian data tertentu untuk dimasukkan ke dalam website kita. Sistem cURL bekerja dengan melakukan request url dari sebuah web client ke web target (cURL Request), kemudian akan web target akan menerima bagian data yang diminta dan akan diterima oleh web client (cURL Receive).
(Gambar.1)

Dari Gambar.1, web client (http://ilmu-detil.com) ingin mengambil data penerbangan garuda dari website web target (http://sultaniskandarmuda-airport.co.id/id/airport/airlines) untuk ditampilkan diwebsitenya web client.

Seandainya data penerbangan garuda di web target berubah, maka data di web client juga ikut berubah.

Nah dari sini, kita sudah dapat memahami apa itu kegunaan fungsi cURL PHP. Seperti yang dijelaskan diatas, cURL kita terapkan kepada web target yang tidak memiliki web service.

Fungsi-fungsi dalam librari PHP cURL

Sebenarnya terdapat sekitar 28 method dalam librari PHP cURL yang dapat kita manfaatkan. Namun disini kita akan menjelaskan beberap diantaranya yang akan kita gunakan dalam contoh kasus nantinya, yaitu:
  • curl_init
  • curl_setopt
  • curl_exec
  • curl_close

#1. curl_init : Method dari curl_init digunakan untuk memulai sebuah session. Nilai balik (return value) dari method ini adalah resource cURL. Dalam method curl_init, kita dapat menggunakan parameter url. Berikut ini adalah contoh dari curl_init tanpa menggunakan parameter url dari sebuah website: t ini adalah curl_init yang mengandung parameter url:
<?php
$session = curl_init(); 
?>

Berikut ini curl_init yang mengandung parameter url:
<?php
$session = curl_init(http://ilmu-detil.blogspot.co.id/); 
?>

#2. curl_setopt : Method dari curl_setopt digunakan untuk memberikan parameter terhadap resource cURL.

Penulisan dari curl_setopt:
bool curl_setopt ( ch , option , value )

Dimana :
  • ch merupakan nilai dari curl_init()
  • option merupakan nilai opsi yang dimulai dengan sintaks CURLOPT_XXX.
  • value merupakan nilai yang dapat berupa : bool, string, array, stream resource. Untuk lebih jelasnya lihat tabel pada PHP MANUAL

Untuk bagian option, nilai opsi yang akan kita gunakan nantinya adalah :
  • CURLOPT_RETURNTRANSFER bertujuan untuk mengembalikan nilai respon dalam bentuk string. Jika kita menggunakan opsi ini, maka pada bagian valuenya harus diset TRUE atau 1.
  • CURLOPT_URL bertujuan untuk mengfetching sebuah website. Sehingga pada bagian value diset dengan sebuah alamat url website
Contoh :
<?php
$session = curl_init();
curl_setopt($session, CURLOPT_URL, "http://ilmu-detil.blogspot.co.id/"); //Setting option url
curl_setopt($session, CURLOPT_RETURNTRANSFER, 1); //setting option Return Transfer
?>

#3.curl_exec dan curl_close : Method curl_exec bertujuan untuk eksekusi session curl. Method ini akan mengembalikan nilai true jika session berhasil dieksekusi. Sedangkan curl_close untuk mengakhiri session.
<?php
$session = curl_init('"http://ilmu-detil.blogspot.co.id/");
$result = curl_exec($session); // will return true or false
curl_close($session);
print $result;
?>

Jika script tersebut dijalankan, maka akan tertampilkan website http://ilmu-detil.blogspot.com

Contoh Menggunakan cURL PHP

Dalam contoh ini kita akan mengimplementasikan penerapan curl dengan menggunakan bantuan fungsi explode, untuk mengambil data tertentu dari sebuah file yang bernama sumber.html dimana tampilannya dalam browser diperlihatkan oleh Gambar.2 dibawah ini :
(Gambar.2)

Script html-nya yang berada pada url : localhost/curl/sumber.htmlsebagai berikut :
<html>
   <head>
       <title>Berita tentan TI</title>
   </head>
   <body>
       <h1>Dunia Teknologi Informasi</h1>
       <p>Perkembangan Smartphone terutama <b>ANDROID</b> berkembang begitu pesat </p>
       <p>Saat ini banyak vendor seperti  <b>SAMSUNG</b> menggunakan sistem operasi tersebut</p>
  </body>
</html>

Dari kode HTML diatas, misalnya kita hanya ingin mengambil kata ANDROID dari url :localhost/curl/sumber.html. Bagaimana caranya ??.

Perhatikan, kata ANDROID berada setelah tag <b>. Disini kita menerapakan function dari curl dan bantuan function explode. Apa itu fucntion explode, silahkan baca tutorial memahami fungsi explode pada PHP.

Karena kata "ANDROID" berada setelah tag<b>, maka kita akan coba buat logika kode program sebagai berikut:
<?php
function bacaURL($url){
     $session = curl_init(); // buat session
     // setting CURL
     curl_setopt($session, CURLOPT_URL, $url);
  curl_setopt($session, CURLOPT_RETURNTRANSFER, 1);
     $hasil = curl_exec($session);
     curl_close($session);
     return $hasil;
}
$sumber =  bacaURL('http://localhost/curl/sumber.html');
$ambil_kata = explode('<b>', $sumber);
echo $ambil_kata[0];
?>

Perhatikan pada baris terakhir yaitu kode : echo $ambil_kata[0] akan menghasilkan output seperti Gambar.3 dibawah ini :

(Gambar.3)

Jika seandainya pada bagian terakhir diganti dengan kode : echo $ambil_kata[1] akan menghasilkan output seperti Gambar.4 dibawah ini
(Gambar.4)

Karena output Gambar.4 mengandung kata "ANDROID", maka harus kita pisah lagi untuk mengambil hanya kata tersebut dari output Gambar.4. Jika kita perhatikan kode HTML diatas, kata "ANDROID" juga berada sebelum closing tag </b>. Sehingga perlu kita pisahkan kata tersebut dengan menggunakan fungsi explode untuk closing tag</b>. Kode lengkapnya sebagai berikut :
<?php
function bacaURL($url){
     $session = curl_init(); // buat session
     // setting CURL
     curl_setopt($session, CURLOPT_URL, $url);
  curl_setopt($session, CURLOPT_RETURNTRANSFER, 1);
     $hasil = curl_exec($session);
     curl_close($session);
     return $hasil;
}
$sumber =  bacaURL('http://localhost/curl/sumber.html');
$ambil_kata = explode('<b>', $sumber);
$ambil_kata_lagi = explode('</b>', $ambil_kata[1]);
echo $ambil_kata_lagi[0];
?>

Maka outputnya akan sesuai dengan keinginan kita yaitu hanya mengambil kata "Android" seperti yang ditunjukkan oleh Gambar.5 dibawah ini :
(Gambar.5)


Mengambil konten halaman web dengan library cURL PHP

Dalam contoh ini kita akan mencontohkan bagaimana caranya mengambil data tertentu dari sebuah situs yang menyajikan informasi konversi uang dengan url : http://www.seputarforex.com/data/konversi_matauang/. Kalau kita buka situs tersebut, ada banyak informasi tentang dunia forex. Sedangkan kita hanya membutuhkan pada bagian konversi uangnya saja, dimana dalam situs tersebut disajikan dalam bentuk tabel.
(Gambar.6)

Dari Gambar.6, kita hanya ingin mengambil informasi Header Informasi dan Tabel Konversi Mata Uang. Langkah yang anda lakukan jika menggunakan browser Chrome, click kanan->klik Inspect, pilih pada elemen yang menyatakan tabel konversi uang tersebut seperti yang ditunjukkan oleh Gambar.7 dibawah ini :

(Gambar.7)


Jika kita perhatikan informasi konversi uang tersebut berada setelah tag <div id="content"> dan sebelum closing tag </table>. Anda bisa juga hanya mengambil informasi konversi uang yang hanya berada dalam tag <table>. Dalam contoh ini, kita ikut mengambil Judul beserta konversi mata uang yang berada dalam tabel, sehingga kodenya akan menjadi sebagai berikut :
<?php

function resourceWeb($url){
     $data = curl_init();
  curl_setopt($data, CURLOPT_URL, $url);
  curl_setopt($data, CURLOPT_RETURNTRANSFER, 1);
     $hasil = curl_exec($data);
     curl_close($data);
     return $hasil;
}
$sumber =  resourceWeb('http://www.seputarforex.com/data/konversi_matauang/');
$split = explode('<div id="content">', $sumber);
$splitLagi = explode('</table>', $split[1]);

echo $splitLagi[0];
?>

Sehingga akan didapatkan output seperti Gambar.8 dibawah ini :
(Gambar.8)

Nah jika dilihat pada Gambar.8, kita telah mengambil informasi tertentu dari website http://www.seputarforex.com/data/konversi_matauang/.

Share this:

You Might Also Like:

Disqus Comments