Scraping Web dengan Nodejs

Cheerio vs X-Ray

Pengenalan

Scraping adalah teknik mengambil atau mengekstrak sebuah data dari suatu websites secara spesifik, spesifik disini maksudnya adalah ketika kita hanya ingin mengambil data atau informasi tertentu dari suatu websites contoh dari websites imdb berikut ini saya hanya menginginkan data pada tab MOST POPULAR.

imdb

Scraping digunakan biasanya jika websites yang ingin kita ambil data nya, tidak menyediakan API ataupun RSS atau bisa juga data yang dibutuhkan tidak tersedia pada API.

Oh iya kita juga harus memperhatikan kode etik dalam melakukan scraping ya.

Web Crawling ?

Kata-kata Web Crawling dan Web Scraping sudah sering kita dengar dan mungkin terlihat serupa oleh beberapa orang tapi sebenarnya ada perbedaan antara crawling dan scraping meskipun memang saling terkait.

Contoh yang paling umum dari crawling adalah penggunaan search engine. Google misalnya, google akan melakukan perayapan dengan robot nya yang dikenal dengan nama google spider setelah itu google akan melakukan crawling ke seluruh dokumen websites-websites tersebut untuk mendapatkan informasi yang nantinya akan disimpan ke database. Tujuan utamanya adalah mengumpulkan data, sehingga ketika pengguna mengetikkan kata pada search engine maka search engine dapat dengan segera menampilkan websites yang relevan.

Secara singkat Web Crawling adalah proses mengunjungi situs web, membaca halaman web dan menemukan informasi dari suatu web, mengindeks semua kata dalam sebuah dokumen, dan menambahkan nya ke database.

X-Ray

X-Ray merupakan package yang terdapat di nodejs yang berguna untuk membantu kita dalam melakukan scraping. Langsung saja kita akan mencoba scraping web imdb untuk menampilkan new movie coming soon pada link berikut

Membuat Project

Pertama, kita mulai dengan membuat project node js dengan menggunakan npm init.

npm init

Ikuti perintah, jika berhasil maka akan terbentuk file package.json. Selanjutnya kita akan menginstal beberapa package yang dibutuhkan.

npm install express x-ray --save

Buat file bernama server.js dan file express bernama app.js lalu isikan kode berikut pada server.js.

var http = require('http');
var server = http.createServer(app);
   server.listen(port, function() {
   console.log('Server listening on port '+  server.address().port);
});
exports = module.exports = app;

dan isikan script berikut pada app.js

var express = require('express');
var app = express();
module.exports = app;

Extract

Sebelum kita mengekstrak data yang kita butuhkan, kita harus menganalisis struktur html terlebih dahulu. Dengan melakukan inspect element pada browser kita bisa mengetahui tag, class, id mana yang berisi data yang kita butuhkan.

imdb

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

Berikut merupakan code untuk mengekstrak data title, description, director, director_descrition, dan link.

app.js

simple bukan ?

Penjelasan :

  • Jalankan server dan ketik url /new-movie-soon maka akan muncul data dalam format json.
  • tbody … merupakan tag html yang berisi data yang kita butuhkan.
  • Pada baris 11 kita melakukan request lagi untuk mengambil description director. “tbody .txt-block a@href” menghasilkan link detail director. Kita mengambil data description director dengan menggunakan tag “tbody #name-bio-text”.
  • X-ray akan otomatis menghasilkan data dalam format json.
Data hasil scraping

Postingan selanjutnya masih tentang scraping namun dengan bantuan package yang berbeda yaitu cheerio. see ya :)

sumber