How to Scrape Web Page with PHP Regex

Cara melakukan scrape pada halaman website, Halo teman-teman pada kesempatan kali ini saya akan mengajarkan kepada teman-teman bagaimana cara melakukan webscraping pada sebuah halaman website. Sebenarnya ada banyak cara dan hampir semua bahasa pemrograman server side dapat melakukan webscraping. Adapun webscraping itu sendiri yaitu teknik pengambilan data pada halaman website orang lain. Disini kita dapat melakukan webscraping secara manual dengan menggunakan Regular Expression dan bahasa yang digunakan kali ini yaitu PHP. Sebenarnya kita bisa menggunakan library yang ada seperti pada NodeJS kita mengenal library x-ray pada Python kita bisa menggunakan library beautiful soap dan masih banyak lagi. baiklah langsung saja kita coba teman2,

1. Langkah pertama yang harus dilakukan yaitu mencari target website yang akan kita scrape datanya misalnya, (contoh: https://www.kompas.com/covid-19 ) inspect terlebih dahulu dan tes dengan menjalankan menggunakan fungsi file_get_contents() pada php seperti berikut



2. Maka setelah kita tampilkan kurang lebih akan sama seperti ini,




3. Kemudian kita inspect element untuk menelusuri pola script dari data yang akan kita ambil.





 

4. Setelah mengetahui pola script dan letak-letak data yang akan kita ambil, disini saya akan mengambil data pada tag <div> dengan class="covid__row". kurang lebih script html yang kita inspect seperti ini. kita bisa lihat pola yang diberikan dari script tersebut terlihat berulang. 
<div class="covid__row"> <div class="covid__prov">DKI Jakarta</div> <div class="covid__total"> <span class="-odp">Terkonfirmasi: <strong>183735</strong></span> <span class="-gone">Meninggal: <strong>3270</strong></span> <span class="-health">Sembuh: <strong>164787</strong></span> </div> </div>

5. Jika kita lihat, kita bisa menggunakan regex pada script php untuk mengambil data Nama Kota, Terkonfirmasi, Meninggal, dan Sembuh, seperti berikut

<?php
    
$html  =  file_get_contents('https://www.kompas.com/covid-19');
// print_r($html);die;

preg_match_all(
'/<div class="covid__row">.*?<div class="covid__prov">(.*?)<\/div>.*?<span class="-odp">Terkonfirmasi: <strong>(.*?)<\/strong><\/span>.*?<span class="-gone">Meninggal: <strong>(.*?)<\/strong><\/span>.*?<span class="-health">Sembuh:  <strong>(.*?)<\/strong><\/span>.*?<\/div>/s',
$html,
$posts,
PREG_SET_ORDER
);

print_r($posts);die;
?>

6. Maka dari script tersebut akan muncul data array dari hasil scrape berikut:


7. Dari sini kita bisa melihat data yang kita inginkan , tinggal teman-teman lakukan perulangan untuk membuat data tampil sesuai yang diinginkan

<?php
    
$html = file_get_contents('https://www.kompas.com/covid-19'); // print_r($html);die; preg_match_all('/<div class="covid__row">.*?<div class="covid__prov">(.*?)<\/div>.*?<span class="-odp">Terkonfirmasi: <strong>(.*?)<\/strong><\/span>.*?<span class="-gone">Meninggal: <strong>(.*?)<\/strong><\/span>.*?<span class="-health">Sembuh: <strong>(.*?)<\/strong><\/span>.*?<\/div>/s', $html, $posts, PREG_SET_ORDER );     $show = "<pre><code>";     foreach ($posts as $post) { $show .= "Kota : ".$post[1].',<br>'."Terkonfirmasi : ".$post[2].',<br>'."Meninggal : ".$post[3].',<br>'."Sembug : ".$post[4].',<br><br>';     }     
    $show .= "</code></pre>";     echo $show;
?>

8. Maka data akan muncul seperti berikut. 


Itulah cara melakukan web scraping menggunakan regex pada PHP. semoga bermanfaat.


Post a Comment

0 Comments