Membuat Web Scraper di Node.js

Node.js Technology (Source: http://mindinmotion.co/nodejs.html)

Web scraping adalah proses mengekstrak informasi dari suatu website. Web scraping dilakukan karena data yang dibutuhkan tidak tersedia di API, atau bahkan mereka tidak menyediakan API sama sekali. Selain untuk mengekstrak informasi, web scraping juga digunakan untuk mengotomatisasi proses yang dilakukan secara manual, atau yang bisa disebut dengan bot.

Pada kesempatan kali ini, kita akan membuat web scraper sederhana untuk menampilkan jadwal sholat selama sebulan.

Sebelumnya saya sudah membuat project serupa yang bisa dilihat di bawah ini.


Setup Project

Pertama, kita mulai dengan membuat direktori dan menginstall beberapa package yang dibutuhkan.

mkdir azan && cd azan && npm install --save request cheerio colors

Lalu buat file baru yang kita namakan index.js.

Selanjutnya tambahkan modul yang sudah kita install sebelumnya:

const request = require('request');
const cheerio = require('cheerio');

Sampai disini kita sudah siap untuk memulai proses scraping.

Ada 3 langkah yang dibutuhkan untuk melakukan scraping:

  1. Load HTML
  2. Parsing HTML
  3. Extract Data

Load

Untuk mendapatkan HTML dari suatu halaman, kita perlu melakukan request ke URL yang akan kita scrape.

let url = 'https://jadwalsholat.org/adzan/monthly.php?id=307';
request(url, function (err, res, body) {
if (err && res.statusCode !== 200) throw err;
console.log(body);
});

Parse

Setalah mendapatkan HTML dari hasil request tadi, lalu parsing menggunakan cheerio.

let $ = cheerio.load(body);
console.log($('body').html());

Extract

Sebelum mengekstrak data yang kita butuhkan, kita perlu mempelajari struktur HTML dari halaman tesebut.

Contohnya kita ingin mendapatkan list jadwal sholat. Kita dapat melakukan inspect element pada browser seperti dibawah ini:

Setelah mengetahui tag, class, atau id mana yang berisi data yang kita butuhkan, selanjutnya kita bisa mengekstrak data tersebut.

Berikut merupakan isi dari file index.js:

Jalankan aplikasi dengan perintah node index.js.

Berikut merupakan output dari proses scraping yang sudah kita lakukan di atas:


Kesimpulan

Tujuan dari tutorial ini adalah untuk menjelaskan bagaimana menggunakan teknik web scraping untuk mendapatkan data dari website dan menggunakannya sesuai kebutuhan. Akan tetapi kita juga harus memperhatikan kode etik dalam melakukan web scraping.

Sekian tutorial kali ini, semoga bermanfaat.