Komputoo sudah lahir sejak beberapa tahun yang lalu, sampai sekarang masih kurang dari 300 artikel yang berhasil diterbitkan. Ada saja perasaan malas untuk melanjutkan blogging, tapi dengan dedikasi dan percaya bahwa kerja kerasa tidak akan pernah ada ruginya; Komputoo tetap setia berada di internet menyajikan informasi dan tutorial berkualitas. :D
Sebagai gantinya, rasa malas itu mulai dimanfaatkan penulis ke arah lebih positif. Rasa malas tersebut melahirkan ide untuk membuat grabber blog berbasis PHP dan RSS. Tidak sulit membuat grabber, apalagi jika sudah memiliki pengalaman dalam pemrograman OOP. Salah satu objek grabber yang bisa diambil peluangnya adalah RSS(Really Simple Syndication) yang hampir semua situs maupun blog memilikinya.
Untuk melihat RSS tiap blog, kita cukup melihat kode sumber laman dari blog target.
Contoh kode meta RSS adalah sebagai berikut:
Jangan senang dulu, metode grabber melalui RSS kadang butuh keberuntungan. Karena tidak semua blog menyajikan seluruh konten dalam deskriptor RSS. Sering kali hanya ringkasan. Jika target dirasa sudah tepat, buka URL RSS dan kopi semua kodenya di https://codebeautify.org/xmlviewer. Klik Tree View dan pelajari struktur RSS tersebut.
Kode RSS tersaji dalam format XML; dan cara termudah mengolahnya adalah dengan SimpleXML. Berikut referensinya:
http://php.net/manual/en/book.simplexml.php
Langkah paling awal dalam proses grabber adalah mengunduh kode XML dari RSS dan menjadikannya sebagai objek.
Biasanya aanda akan menemukan kode tag XML <dc:creator></dc:creator> dalam RSS. untuk mengakses tag ini, anda harus memproses namespaces terlebih dahulu.
Jika sudah, perhatikan baik-baik struktur RSS yang sudah kita lihat di awal. Umumnya, konten posting blogger tersaji dalam bentuk array di bawah $rss->channel->item.
Karena array, kita jadi lebih mudah memilah-milahnya dengan foreach.
Komponen posting tanpa namespavces bisa diakses seperti mengakses objek biasa, contohnya saja $item->title untuk judul. Tapi, kalau sudah berhadapan dengan namespace, mau tak mau gunakan kode yang agak lebih panjang.
<title>Judul</title>
$item->title
<atom:summary>Ringkasan</atom:summary>
$item->children($namespaces['atom'])->summary;
Sesekali kita juga harus mengakses atribut. Kode yang diperlukan ditulis semacam ini:
<thumbnail url="???">...</thumbnail>
$item->thumbnail->attributes()->url;
<atom:thumbnail href="???">...</atom:thumbnail>
$item->children($namespaces['atom'])->thumbnail->attributes()->href;
Yak, mungkin sampai disini saja penjelasan dari saya. Sebenarnya proses grabbing mudah saja kalau targetnya mendukung. Kalau ada kode yang tidak diketahui, ada dokumentasi lengkap dan sebagian besar juga dibahas di stackoverflow.
Ada pula metode grabbing lain, yaitu dengan DOM(Document Object Model). Metode ini bisa dilakukan dengan mengekstrak langsung dari halaman berformat HTML yang biasa kita lihat. Kita tidak akan membahasnya sekali waktu ini, mngkin di kesempatan lain, saya akan tuliskan tutorial untuk itu.
Selamat mencoba, happy coding. ;)
Sebagai gantinya, rasa malas itu mulai dimanfaatkan penulis ke arah lebih positif. Rasa malas tersebut melahirkan ide untuk membuat grabber blog berbasis PHP dan RSS. Tidak sulit membuat grabber, apalagi jika sudah memiliki pengalaman dalam pemrograman OOP. Salah satu objek grabber yang bisa diambil peluangnya adalah RSS(Really Simple Syndication) yang hampir semua situs maupun blog memilikinya.
Untuk melihat RSS tiap blog, kita cukup melihat kode sumber laman dari blog target.
Contoh kode meta RSS adalah sebagai berikut:
<link href='http://www.blogger.com/feeds/5968298389595427058/posts/default' rel='alternate' title='Komputoo Tech - Atom' type='application/atom+xml'/>
Jangan senang dulu, metode grabber melalui RSS kadang butuh keberuntungan. Karena tidak semua blog menyajikan seluruh konten dalam deskriptor RSS. Sering kali hanya ringkasan. Jika target dirasa sudah tepat, buka URL RSS dan kopi semua kodenya di https://codebeautify.org/xmlviewer. Klik Tree View dan pelajari struktur RSS tersebut.
Kode RSS tersaji dalam format XML; dan cara termudah mengolahnya adalah dengan SimpleXML. Berikut referensinya:
http://php.net/manual/en/book.simplexml.php
$rss = simplexml_load_file('URL RSS'); $namespaces = $rss->getNamespaces(true); $items = $rss->channel->item; foreach ($items as $item){ $content->title = $item->title; $content->content = $item->children($namespaces['atom'])->summary; $content->source = $item->link; $content->date = date("Y-m-d", strtotime($item->children($namespaces['atom'])->updated)); $content->uid = md5($content->source); $content->image = $item->children($namespaces['media'])->thumbnail->attributes()->url; $content->dump(); //Tambahkan fungsi untuk memasukkan $content ke database echo "<hr/>"; }
Langkah paling awal dalam proses grabber adalah mengunduh kode XML dari RSS dan menjadikannya sebagai objek.
$rss = simplexml_load_file('URL RSS');
Biasanya aanda akan menemukan kode tag XML <dc:creator></dc:creator> dalam RSS. untuk mengakses tag ini, anda harus memproses namespaces terlebih dahulu.
$namespaces = $rss->getNamespaces(true);
Jika sudah, perhatikan baik-baik struktur RSS yang sudah kita lihat di awal. Umumnya, konten posting blogger tersaji dalam bentuk array di bawah $rss->channel->item.
Karena array, kita jadi lebih mudah memilah-milahnya dengan foreach.
foreach ($items as $item){ //lakukan sesuatu untuk tiap $item }
Komponen posting tanpa namespavces bisa diakses seperti mengakses objek biasa, contohnya saja $item->title untuk judul. Tapi, kalau sudah berhadapan dengan namespace, mau tak mau gunakan kode yang agak lebih panjang.
<title>Judul</title>
$item->title
<atom:summary>Ringkasan</atom:summary>
$item->children($namespaces['atom'])->summary;
Sesekali kita juga harus mengakses atribut. Kode yang diperlukan ditulis semacam ini:
<thumbnail url="???">...</thumbnail>
$item->thumbnail->attributes()->url;
<atom:thumbnail href="???">...</atom:thumbnail>
$item->children($namespaces['atom'])->thumbnail->attributes()->href;
Yak, mungkin sampai disini saja penjelasan dari saya. Sebenarnya proses grabbing mudah saja kalau targetnya mendukung. Kalau ada kode yang tidak diketahui, ada dokumentasi lengkap dan sebagian besar juga dibahas di stackoverflow.
Ada pula metode grabbing lain, yaitu dengan DOM(Document Object Model). Metode ini bisa dilakukan dengan mengekstrak langsung dari halaman berformat HTML yang biasa kita lihat. Kita tidak akan membahasnya sekali waktu ini, mngkin di kesempatan lain, saya akan tuliskan tutorial untuk itu.
Selamat mencoba, happy coding. ;)
0 comments