Tutorial Web Scraping di PHP
![]() | Lazuardy Khatulistiwa Software Engineer |
11 Mei 2020, 2 min read |
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
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.
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:
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: