btc baner

Pages

Sunday, January 4, 2015

Screen Scrapper, aplikasi sejenis web crawler untuk mengambil data dari website lain

Saya lagi mengerjakan aplikasi torrent search engine dimana aplikasi ini akan melakukan pencarian ke beberapa torrent indexer pada saat user memberi input keyword torrent yang ingin di cari. Intinya aplikasi ini akan mengambil data dari website lain dan menyajikannya ke user langsung dari aplikasi tersebut.
Saya ingin menceritakan beberapa konsep dari aplikasi ini dan class PHP yang saya gunakan untuk membantu fungsi scrapper pada aplikasi ini. Seperti aplikasi web yang selalu saya bangun dengan Prado maka aplikasi ini juga saya bangun dengan Prado. Prado sangat membantu saya fokus pada logic aplikasi, tidak perlu memusingkan masalah template, caching, dan sebagainya.
Konsep kerja dari aplikasi ini adalah sebagai berikut:
  1. User memasukkan keyword pada form search di aplikasi
  2. Sesuai dengan keyword user maka aplikasi meload halaman results untuk menampilkan hasil pencarian.
  3. Pada halaman results aplikasi akan melakukan AJAX callback ke aplikasi untuk memanggil fungsi screen scrapper untuk mengambil data dari torrent site indexer. Dengan AJAX maka aplikasi dapat mensimulasikan multi threading pada aplikasi.
  4. Aplikasi akan mengambil data sesuai keyword dari torrent indexer seperti mininova, btjungkie, isohunt, dan lain-lain dengan menggunakan class CURL. CURL adalah class PHP yang berfungsi seperti browser sehingga kita dapat mengambil output HTML dari suatu website.
  5. Hasil pengambilan HTML output akan diparser dimana parser harus dibuat masing-masing untuk tiap website yang ingin diambil datanya. Parser menggunakan phpQuery yang merupakan class PHP yang dibangun diatas class DOM untuk mengakses HTML DOM pada hasil HTML output dari website yang diambil datanya.
  6. Hasil parser akan menyimpan data di database untuk digabungkan dengan semua hasil parser dari tiap web yang diambil datanya. Selain itu hasil juga akan menjadi cache bila ada user memasukkan keyword yang sama dalam jangka waktu tertentu.
  7. Setelah proses parser selesai, aplikasi akan melakukan pencarian ke dalam database yang telah di index dengan full-text indexing sehingga memudahkan pencarian.
  8. Hasil pencarian di database ditampilkan kepada user pada halaman results.
Jadi dalam aplikasi ini ada 3 class yang berperan penting yaitu CURL, phpQuery, dan DOM. CURL dan DOM merupakan extension default PHP5 sedangkan phpQuery merupakan class tambahan yang merupakan ported jQuery dari javascript ke PHP untuk manipulasi DOM.
Saya juga sempat melakukan perbandingan performance antara DOM, phpQuery, Simple HTML Parser, dan DOMXPath dan hasilnya adalah phpQuery lebih cepat dari lainnya. Selain lebih mudah melakukan parsing ternyata performancenya juga cukup baik. Hasil penelusuran saya juga menemukan bahwa untuk pengambilan content dari website lain lebih baik menggunakan CURL dari pada fungsi lainnya seperti fsockopen. Hal ini merupakan hasil test dari developer lain, dan saya tidak melakukan test langsung karena beberapa developer juga meng-amini hal ini.
Aplikasi semacam ini bisa digunakan untuk aplikasi lain seperti mengambil data kurs dari website bank, aggregator blog atau website berita, dan juga pembaca rss feed. Semua tergantung kreatifitas anda.

0 komentar:

Post a Comment