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.

* update 28 November 2010 : website tiki sekarang telah berubah struktur web nya, sehingga code di atas menjadi tidak valid

Advertisement

15 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

  8. nur says:

    nice info..

  9. bardi says:

    aduh ane newbie… gmn nih ngeaplikasiin… :( :hammer: :?

  10. pemilik oscommerce says:

    Bos kenapa nggak bikin yg JNE karena http://www.tiki-online.com sering out of service

  11. yoe says:

    kok saya jalankan contohnya g bs ya muncul pesan error :
    array(0) { }
    Fatal error: Call to a member function clear() on a non-object in D:\latihan\tes2.php on line 35

    • int2k says:

      sayang nya baru2 ini tiki merubah struktur website nya
      sehingga code yang terdapat dalam post menjadi obsolete :oops:

      • mqueue says:

        dengan perubahan struktur websitenya yang sekarang, parsingnya jadi lebih sederhana pak :)

  12. Dhema says:

    maaf sblmnya klo ane lancang… heheehe, script di atas tidak bisa digunakan lg… krena skr website nya tiki sudah menggunaka script dgn metode MVC (Model View Controller) yg merunut pada model Objek oriented sehingga script nya lmyan secure, utk menggunakan teknik curl (grab script secara paksa) sudah tidak bisa lg… maaf lhooo itu cma mnurut ane aj… mngkin sedulur2 ad yg bsa lebih dalem lg analisa scripting nya.. mohon dibantu ya… trims…. :ngacir: :peace:

    • int2k says:

      he kan dan udah di kasih note update, kalo ada perubahan struktur website :P

      di curl masih bisa koq, cuman musti agak muter2 dulu dikit untuk dapetin kode kota :oops: