RSS

How to Grab HTML Content Using PHP

21 Jun

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:

<div class="news">ini isi berita saya
saya ingin mengambil bagian ini</div>

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('/\<div class=\"news\"\>(.*?)\<\/div\>/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('/<img.*src="(.*?)"/', $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

<div class="news">
ini isi berita 1
</div>
<div class="news">
ini isi berita 2
</div>
<div class="news">
ini isi berita 3
</div>
<div class="footer">...

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('/\<div class=\"news\"\>(.*?)\<\/div class=\"footer\"\>/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~

 
10 Comments

Posted by on 21 June 2011 in Software & Development, Website

 

Tags: , , , , , ,

10 responses to “How to Grab HTML Content Using PHP

  1. jo

    22 June 2011 at 20:03

    dapet ilmu baru nih…

     
  2. tioammar

    23 May 2012 at 20:39

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

     
  3. internet

    22 December 2012 at 17:52

    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!

     
  4. aalserly

    20 November 2014 at 19:20

    rumit Ganā€¦.. kalo boleh saya minta buatkan scrip grabber + panduanya yg lebih detail ganā€¦.untuk kompensasinya kita buat kesepakatan terlebih dahuluā€¦.bisa gak Ganā€¦???ā€¦

     
  5. Setafaband

    15 January 2016 at 09:31

    Berhasil pak, terima kasih banyak

     
    • pionize

      15 January 2016 at 13:31

      senang bisa membantušŸ™‚
      kalau mau lebih mudah bisa dengan phpQuery

       
  6. jadwal21info

    19 March 2016 at 21:22

    gimana caranya agar kita dapat judulnya aja

     
    • pionize

      22 March 2016 at 09:34

      pakai phpQuery aja, ntar tinggal pakai selector2 css/jquery

       
  7. necha

    23 August 2016 at 21:48

    kalau grabbing dri banyak we gmana ya?

     
    • pionize

      26 August 2016 at 15:55

      kalau sekarang bisa pakai banyak tools, termasuk nodeJS untuk scrapping/crawling website
      atau kalau mau PHP, bisa pakai library phpQuery

       

Monggo share dimari :D

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: