scraping web dengan nodejs

terkadang kita biasanya mengambil sebuah content website dengan menggunakan metode php curl, dan biasanya menemukan kesulitan ketika akan mengambil beberapa content misalnya hanya headline nya saja.

di php sendiri ada function DOMDocument? dan xpath untuk parsing html nya tapi dalam implementasi nya cukup sulit. dalam artikel ini akan membahas teknik scrap web dengan nodejs.

apa itu nodejs?

NodeJS adalah sebuah platform bahasa pemrograman sisi server (seperti php) yg menggunakan javascript. Dibuat oleh Ryan Dahl pada tahun 2009 menggunakan mesin javascript v8 milik google chrome.

beberapa modul yang perlu di install antara lain cherio dan request, untuk instalasi modul tersebut cukup mengetikan pada command line berikut ini

$ npm install cheerio

instalasi modul request dan express

$ npm install request
$ npm install express

contoh script kita beri nama scrap.js

var cheerio = require('cheerio');
var request = require('request');
var express    = require('express'); 
var app        = express();  
var port = process.env.PORT || 8080;        // set our port



//inisialisasi cherio
var $ = cheerio;
var headline = null;

var router = express.Router(); 
router.get('/detik', function (req, res, next) {
  request.get('http://www.detik.com', function(error, response, body) {
    if (error) {
      throw error;
    }
    headline = $('div#headline-container', body).html();
    //kirim output ke browser
    res.send(headline);
  });
})

// REGISTER OUR ROUTES -------------------------------
// all of our routes will be prefixed with /api
app.use('/api', router);



// START THE SERVER
// =============================================================================
app.listen(port);
console.log('Magic happens on port ' + port);

setelah itu buka console dan kemudian ketik

$ node scrap.js

maka hasilnya akan seperti gambar dibawah ini

scrap-detik

demikian tutorial singkat ini, sekian dan terima kasih 😀

 

 

 

 

One thought on “scraping web dengan nodejs

Leave a Reply

Your email address will not be published. Required fields are marked *