Tutorial Web Scraping di PHP

Lazuardy Khatulistiwa Software Engineer

11 Mei 2020, 2 min read

Tutorial Web Scraping di PHP

Apa itu Web Scraping?

Web scraping adalah sebuah metode atau teknik untuk mengekstrak data dari suatu website.
Misalnya kita ada keperluan untuk mendata judul film dari sebuah website. Jika judul yang diperlukan hanya satu, maka kita cukup untuk sekadar copy paste judulnya. Tapi, bagaimana jika judul yang diperlukan banyak? Copy paste pun jadi hal yang melelahkan, bukan?
Maka dari itu, kita membutuhkan sebuah automation tool untuk melakukannya, inilah fungsi dari web scraping.
Perlu diketahui, web scraping bisa dilakukan di berbagai bahasa pemrograman. Di tutorial kali ini, kita akan mencobanya menggunakan PHP.

Studi Kasus

IMDB Movie

Kita akan mencoba mengekstrak judul dan deskripsi dari halaman film Avengers di IMDB (https://www.imdb.com/title/tt4154796/).
Langsung saja, langkah pertama yang kita lakukan adalah mengekstrak source-code dari halaman tersebut.

1. Mengekstrak Source Code Halaman

Di PHP, kita bisa menggunakan fungsi file_get_contents untuk mengambil source code halaman sebuah website. Buatlah sebuah file php dan isikan kode berikut:

$source  =  file_get_contents('https://www.imdb.com/title/tt4154796/');

Kode diatas berarti kita akan mengambil source code halaman https://www.imdb.com/title/tt4154796/ dan menaruhnya ke dalam variable $source.

2. Mengekstrak Judul dan Deskripsi

Untuk mengambil judul dari halaman tersebut, kita harus mengetahui dimana judul tersebut ditempatkan di scriptnya. Biasanya saya menggunakan fitur view source code dari browser untuk melakukan hal ini, dengan cara tekan CTRL + U di halamannya.

Source code halaman

Dari gambar tersebut, judul dan deskripsi filmnya terletak pada:
<meta name="title" content="disini" />
<meta name="description" content="disini" />
Sebenarnya judulnya bisa diambil dari tag yang lain karena di halaman tersebut judulnya muncul beberapa kali di tag yang berbeda, tetapi saya memakai yang diatas.

Untuk mengambil kontennya, kita bisa melakukan dengan 2 cara, yaitu dengan membuat sebuah fungsi getStringBetween atau menggunakan Regular Expression.

Cara Pertama, dengan fungsi getStringBetween
Buat kode seperti berikut:

function getStringBetween($string, $start, $end) {
    $string = " ".$string;
    $ini = strpos($string,$start);
    if ($ini == 0) return "";
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;
    return substr($string,$ini,$len);
}
$judul  =  getStringBetween($source,  'name="title" content="',  ' - IMDb');
$deskripsi  =  getStringBetween($source,  'name="description" content="',  '" />');

fungsi getStringBetween diatas adalah untuk mengambil sebuah string yang berada di antara 2 string lainnya. Parameter $start dan $end menggunakan pola yang kita sudah dapat.

Cara Kedua, dengan Regular Expression
Di PHP, kita menerapkan teknik regular expression dengan fungsi preg_match.

preg_match('/name="title" content="(.*?) - IMDb/',  $source,  $matches1);
preg_match('/name="description" content="(.*?)" \/>/',  $source,  $matches2);
$judul  =  $matches1[1];
$deskripsi  =  $matches2[1];

Untuk penjelasan fungsi preg_match, baca dokumentasinya, ya!

Hasil

Setelah kita tampilkan hasil judul dan deskripsi yang kita sudah ambil menggunakan cara diatas, hasilnya seperti berikut:

Hasil

Source Code

Source code tutorial ini juga bisa dilihat di: https://github.com/zonacodingtech/scraping-php/blob/master/index.php

Begitulah teknik Web Scraping di PHP, semoga bermanfaat.


Tags:



Baca artikel menarik lainnya: