Sunday, 6 January 2019

Web Scraper dengan NodeJS

Assalamualaikum Wr. Wb

Web Scraper dengan NodeJS

Kali ini saya admin baru disini  , akan membagikan cara Scrapping Web dengan nodejs.
sebelum ke inti , apakah kalian sudah tahu apa itu nodejs ?

Node.js adalah platform perangkat lunak pada sisi-server dan aplikasi jaringan. Ditulis dengan bahasa JavaScript dan dijalankan pada Windows, Mac OS X, dan Linux tanpa perubahan kode program.

Nodejs dijalankan mengunakan mesin milik Chrome yaitu V8 , dimana kode-kode akan dieksekusi didalam mesin tersebut

sedangkan Web Scraper adalah proses mengekstrak atau mengeluarkan informasi dari suatu website. Web scraping dilakukan karena data yang dibutuhkan tidak tersedia di API, atau bahkan mereka tidak menyediakan API sama sekali.

pada kesempatan kali lini kita akan membuat jadwal sholat sederhana mengunakan Nodejs


Pertama
kita membuat directori dan menginstall paket-paket yang dibutuhkan
jika kalian ada dilingkungan Unix atau Linux, kalian tinggal copas kode dibawah ini lalu masukan di Terminal
mkdir azan && cd azan && npm install --save request cheerio colors

Jika kalian berada diwindows, silahkan buat direkroti adzan, didalam directori tersebut silahkan klick kana sambil menekan shif (SHIF + RIGHT CLICK)

jika proses pertama sudah selesai, maka akan keluar folder .node_modules dan file package_lock.json
biarkan saja folder dan file tersebut.
Setelah itu buat file dengan nama index.js dan tambahkan modul yang kita sudah tambah tadi
const request = require('request');
const cheerio = require('cheerio');

sampai disini kita siap melanjutkan ke selanjutnya ada 3 langkan untuk melakakukan web scrapping ini yaitu :

  • Load HTML
  • Parsing HTML
  • Extract Data
Langkah Pertama yaitu LOAD 
apaitu ? LOAD adalah cara untuk mendapat HTML dari suatu halaman, kita perlu melakukan scrape pada halaman yang discrap

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);
});


tambahkan kode diatas ke index.js, lalu jalankan mengunakan terminal atau cmd , dengan mengetikan perintah node index.js
kalian akan melihat hasil output yang begitu banyak sekali, jangan takut itu bukanlah error.

Kedua yaitu PARSE
PARSE adalah cara kita mengurai HTML tadi mengunakan cheerio
let $ = cheerio.load(body);
console.log($('body').html());

tambahkan kode diatas ke dalam index.js
jika kalian jalankan kode ini maka halisnya akan sama, akan keluar HTML di cmd atau terminal kalian

Langkah Terakhir yaitu EXTRACT
sebelum kita menggunakan Langkah ini kita akan mempelajari struktur HTML web yang kita scrape
contoh kita akam membuat list daftar sholat maka kita bisa mengunakan inspect element atau inspeksi element jika kalian mengunakan Chrome kalian hanya perlu tekan F12


Sekarang kita sudah tahu class id yang kita buthkan untuk diekstrak, seletah itu kita akan mengekstrak
berikut adalah kode dari index.js
require('colors');
const request = require('request');
const cheerio = require('cheerio');

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);
    let $ = cheerio.load(body);

    $('table.table_adzan tr[align=center]').each((i, value) => {
        $(value).find('td').each((j, data) => {
            if ($(value).attr('class') === 'table_highlight')
                return process.stdout.write($(data).text().red + '\t');
            return process.stdout.write($(data).text() + '\t');
        });
        process.stdout.write('\n');
    });
});

save dan jalankan node index.js di terminal dan cmd kalian
maka hasilnya akan seperti ini

Gambar diatas adalah hasil yang kita buat ..
Kesimpulan dari Tutorial ini adalah
Tujuan dari tutorial ini adalah untuk menjelaskan bagaimana menggunakan teknik web scraping untuk mendapatkan data dari website dan menggunakannya sesuai kebutuhan. 
Akan tetapi kita HARUS juga harus memperhatikan kode etik dalam melakukan web scraping. TERIMAKASIH...




Disqus Comments