Parser tarif kiriman TIKI Online

November 3rd, 2009 by int2k Leave a reply »

TIKI / titipan kilat untuk saat ini memang belum mempunyai sebuah layanan web service untuk memudahkan para pemilik toko online dalam melakukan perhitungan tarif. Pada halaman web dari tiki online sendiri sebenarnya telah di sediakan sebuah tool untuk menghitung tarif yang dibebankan untuk sebuah pengiriman.
Pada bahasan kali ini akan coba di buat sebuah parser untuk halaman penghitungan tarif tersebut. Untuk ini kita membutuhkan sebuah library tambahan yaitu “PHP Simple HTML DOM Parser” . Library ini akan memudahkan script kita dalam memproses sebuah struktur HTML, sehingga bisa dilakukan pengambilan data-data yang di perlukan saja. Di butuhkan juga dukungan untuk cURL pada server yang kita gunakan.

Dari halaman perhitungan tarif Tiki Online kita akan dapati sebuah form yang terdiri dari 3 buah input teks, yaitu Origin, Destination dan Weight. Form tersebut di arahkan ke halaman yang sama, dalam hal melakukan proses perhitungannya.

Contoh penghitungan tarif

Contoh penghitungan tarif


Berikut adalah contoh kode yang di gunakan untuk perhitungan :

/****************************************************************
Version: 0.01
Website: http://www.int2k.web.id/
Author: int2k
Licensed under The MIT License
Redistributions of files must retain the above copyright notice.
*****************************************************************/
include "simple_html_dom.php";

$url = "http://www.tiki-online.com/tardom.asp";
$ch = curl_init();//Initialise CURL
curl_setopt($ch, CURLOPT_URL, $url);//Set the url
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);//We want the data to return
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 10);//Of course, we don't want your script to run forever, so set a timeout
curl_setopt($ch, CURLOPT_POST, true);//We want to request the page by post
curl_setopt($ch, CURLOPT_POSTFIELDS, "TxtOrg=Jakarta&TxtDest=Bandung&TxtWg=1");//Post the fields

$text = curl_exec($ch);
curl_close($ch);
$html = str_get_html($text);
$dataall = array();

foreach( $html->find('tr[bgcolor!=#A6A5A5]') as $hasil)
{
  $data['service'] =
  preg_replace("(^\s|\s$)", "",
    str_replace(" ", "",
      str_replace("-", "",
        str_replace("\r\n","",
          $hasil->find("td[width='350']",0)->plaintext." "))));
  preg_match("(\(.*\))",$data['service'],$kode);
  $data['kode']=preg_replace("(\(|\))","",$kode[0]);
  $data['biaya'] = (float) preg_replace("([\.,])","",
    str_replace(" ","",
	  str_replace("-","",str_replace("\r\n","",
        $hasil->find("td[width='250']",0)->plaintext))));
  $dataall[]=$data;
}
var_dump($dataall);
$html->clear();
$hasil->clear();
unset($html);
unset($hasil);

Hasil dari kode di atas kira-kira adalah sebagai berikut :

Contoh hasil parsing tarif TIKI

Contoh hasil parsing tarif TIKI

Bagian utama dari parser ini berada pada bagian foreach yang akan mengambil hasil dari perintah $html->find(‘tr[bgcolor!=#A6A5A5]‘). Perintah ini maksud nya mencari element HTML TR yang memiliki elemen bgcolor tidak sama dengan #A6A5A5. Elemen ini di pilih setelah melihat kedalam source dari halaman perhitungan tarif setelah selesai memproses form, yaitu elemen yang menampung tabel hasil perhitungan.

Kode di atas hanya merupakan sebuah kode dasar, namun cukup lengkap untuk kemudian digunakan dalam membantu perhitungan sesungguhnya pada sebuah toko online. Silahkan jika ada yang ingin mengembangkan lebih lanjut sehingga bisa langsung di pakai sebagai modul pada script e-commerce.

Advertisement

7 comments

  1. andicted says:

    Mantep oM :oops:

  2. narko says:

    wah… keren banget om….
    ane coba ahh…. :ngacir:

  3. Uchan says:

    Beugh, bahasa dewa bener2 dah. Ane bantu sundul gan

    :sup:

    :ck

  4. azul says:

    good post bro

    semoga TIKI ngehire org spt ente :)
    buat nyediain APInya dlm JSON atw XML
    :D :ck

  5. richskrenta says:

    nice info om itik :o :D :( 8O :-) :nohope: :genit: :ngacir: :ck :x :hammer: :oops: :roll: :wink:

  6. aocek says:

    numpang baca dulu gan ……………. :ngacir:

  7. nurussadad says:

    ane bantu sundul :ck

Leave a Reply

:-) :D :( 8O :? 8) :P :peace: :o :x :hammer: :oops: :roll: :wink: :nohope: :genit: :ngacir: :tabrakan: :ck