How to Grab HTML Content Using PHP

Pada saat berkunjung ke suatu halaman, kadang kita ingin mendapat update pada bagian tertentu. Namun untuk mendapatkan informasi yang kita butuhkan tersebut kita harus membuka halaman web tersebut secara lengkap dan tentu saja makan waktu untuk koneksi lemot.

Pertanyaanya apakah ada cara lain yang bisa dipakai???
tentu saja ada…klo ga ada, halaman ini tentu tidak akan pernah saya tulis… 😀

Gimana sih caranya??
well, saya cuma akan membahas sekilas saja bagaimana cara mengambil suatu bagian tertentu dari halaman HTML dengan fungsi pada PHP dan bantuan Regex.

Persiapan??
tentu saja anda harus tau code HTML dan yang paling penting koneksi internet untuk mengetes hasil pekerjaan anda.

Uda…uda…ga saya perpanjang dan perlebar lagi…langsung ke intinya saja…
Pertama anda harus menampung halaman web tersebut pada suatu variabel di PHP. Fungsu yang dapat dipakai cukup beragam, mulai dari file_get_contents, fopen & fread, CURL, dll… Pada contoh ini saya menggunakan fungsi file_get_contents

Kemudian pada halaman web yang ingin anda ambil, anda harus tau code source halaman tersebut. Caranya sederhana sekali, tinggal klik kanan dan view source code atau inspect element halaman web tersebut.
Anda pasti akan melihat banyak sekali coding dan tag bertebaran seperti <div>, <p>, dll

contoh yang saya pakai sederhana saja, misalkan anda temui code HTML sebagai berikut:

&lt;div class=&quot;news&quot;&gt;ini isi berita saya
saya ingin mengambil bagian ini&lt;/div&gt;

dapat terlihat bahwa tag <div id=”news”> </div> mengapit isi berita yang ingin diambil. Nah untuk mengambil isi berita tersebut dapat digunakan fungsi preg_match yang disediakan pada PHP

Fungsi preg_match yang akan digunakan untuk kasus di atas adalah sebagai berikut:

$text = file_get_contents($URL);
preg_match('/&lt;div class=&quot;news&quot;&gt;(.*?)&lt;/div&gt;/s', $text, $grab);
echo $grab[0];

Ingat!! hasil dari fungsi preg_match tersebut akan ditampung ke variabel dalam bentuk array satu dimensi.

Bagaimana kalau ingin ambil bagian tertentu dari isi suatu tag, contohnya mengambil link dari tag <img src=”ini link yang akan diambil”>
Sama seperti sebelumnya, kita dapat menggunakan fungsi preg_match

$text = file_get_contents($URL);
$match = preg_match('/&lt;img.*src=&quot;(.*?)&quot;/', $text , $img );
echo $img[0];

Ingat juga kalau melakukan grabbing seperti, pencocokan dilakukan dari awal sampai ditemukan jika menggunakan preg_match, sehingga kalau pada kasus seperti ini

&lt;div class=&quot;news&quot;&gt;
ini isi berita 1
&lt;/div&gt;
&lt;div class=&quot;news&quot;&gt;
ini isi berita 2
&lt;/div&gt;
&lt;div class=&quot;news&quot;&gt;
ini isi berita 3
&lt;/div&gt;
&lt;div class=&quot;footer&quot;&gt;...

jika menggunakan fungsi tadi, maka yang terambil hanya isi berita 1, sementara isi berita 2 dan 3 terabaikan karena tag div sudah tertutup. Kalau ingin mengambil isi berita 2 dan 3 bagaimana?
Cara paling sederhana yang bisa dilakukan dengan melihat tag penutup unik yang kira-kira bisa dijadika pengapit, dalam contoh tersebut isi berita 3 ada di atas <div class=”footer”> sehingga bisa dijadikan tag penutup dalam fungsi preg_match sehingga menjadi seperti ini

$text = file_get_contents($URL);
preg_match('/&lt;div class=&quot;news&quot;&gt;(.*?)&lt;/div class=&quot;footer&quot;&gt;/s', $text, $grab);
echo $grab[0];

dengan cara tersebut isi berita 1, 2, dan 3 dapat terambil.. akan tetapi…. semua tag div pun ikut terambil…tidak ada jalan lain selain dibersihkan secara manual dengan str_replace

nah jika menggunakan preg_match_all pencocokan akan dilakukan dari awal sampai akhir. Hasil akhirnya akan disimpan dalam array 2 dimensi, sperti grab[0][1], dst

regard
~andrew89ongi~

3 Comment

  1. jo says: Balas

    dapet ilmu baru nih…

  2. tioammar says: Balas

    kalo menggunakan teknik ini apakah desain juga terambil atau cuma hanya text nya?

  3. It’s appropriate time to create some plans for the longer term and it is time to exist content. I’ve
    read this put up and if I may I want to counsel you some fascinating things or suggestions.
    Perhaps you could write next articles relating to this article.
    I desire to learn more things about it!

Tinggalkan Balasan