lifelong learner — urip iku urup, currently working on accenture.

Cara Mengambil dan Mengekstrak Data Website Lain Secara Otomatis dengan Nodejs Web Scrapper

0
Degananda.com -

web_scrapping_nodejs

Untuk dapat mengambil data secara otomatis pada suatu website atau lebih dikenal dengan teknik web scrapping dapat dilakukan dengan berbagai tools dan bahasa pemrograman. Salah satu yang populer adalah dengan menggunakan NodeJS untuk melakuan ektraksi dan pengambilan data pada website tertentu.

Jika belum familar dengan istilah scrapping atau metode pengambilan data secara umum disarankan untuk melihat dan membaca tautan dibawah ini mengenai web scrapping.

Cara Mengambil Data dari Website Lain dengan Metode Web Srapping

Perlu di ingat sebelum melakukan scrapping, harap memperhatikan legalitas proses pengambilan data tersebut. Berhati-hati dikarenakan dapat mengambil data yang seharusnya tidak boleh di ambil (illegal)

Cara Mengambil dan Mengekstrak Data Website Lain Secara Otomatis dengan Nodejs Web Scrapper

Berikut ini adalah tahap-tahap pembuatan web scrapping crawler dengan menggunakan nodejs untuk mengambil data dari suatu website secara otomatis.

0.Menentukan website tujuan scrapping (target)

Langkah paling awal tentunnya adalah menentukan target atau website tujuan yang akan diambil datannya serta menentukan data apa yang akan di ambil. Pada kasus ini , studi kasus yang akan digunakan adalah website berikut.

https://www.smashingmagazine.com/articles/

tujuannya adalah untuk mengambil artikel dari website bank smashingmaganzie.

target_scrapping_crawler_nodejs_target_website.jpg
website tujuan yang akan diambil artikelnya

1.Persiapan – menentukan library yang akan digunakan

Proses pengambilan data dengan nodejs (web scrapping) akan melibatkan beberapa library 3rd party yang sangat populer yakni :

  • Axios 
    Merupakan library nodejs yang digunakan untuk menginisasi dan melakukan koneksi terhadap website tujuan dengan menggunakan protokol http ataupun https. Axios akan membantu pembuatan crawler untuk menglola request dan response dari koneksi
  • Cheerio
    Library nodejs ini akan berfungsi untuk melakukan analisa dan filteing pada dom. Cheerio menggunakan syntax atau perintah yang hampir sama (mirip) dengan selector DOM yang terdapat pada jquery.

Axios dan cheerio merupakan kombinasi yang tepat untuk membuat crawler dengan menggunakan Nodejs. Keduannya merupakan library opensource dan bebas untuk digunakan baik komersil ataupun non komersil. Sehingga tidak perlu khawatir terkait dengan lisensinnya.

2.Mengetahui legalitas target scrapping

ini adalah hal yang sangat penting agar tidak terjebak pada kasus illegal. Untuk mengetahui apakah website tersebut legal untuk diambil datanya secara otomatis / menggunakan teknik scrapping maka dapat dicek pada file robot.txt yang terdapat pada website tersebut. Jika file robot.txt tidak tersedia maka disarankan untuk tidak melakukan scrapping pada website tersebut.

legalitas_web_scrapping.jpg

Pada kasus ini, website tujuan yang akan diambil data artikelnya memiliki isi dari file robot.txt seperti terlihat diatas. Pada daftar diallow tersebut path “/articles” tidak ada sehingga path /articles tersebut legal untuk dilakukan scrapping/pengambilan data secara otomatis.

3.Installasi library pendukung ke project nodejs

berikut ini adalah perintah yang digunakan untuk menggunakan masing-masing library untuk keperluan membuat web crawler scrapping.

axios

npm install axios --save

cheerio 

npm install cheerio --save

sebagai inisiasi maka kedua library tersebut harus di import atau dimasukan pada project / workspace nodejs.

berikut adalah kode untuk memasukan (import) kedua library pendukung tersebut ke project nodejs.

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

sehingga isi dari package.json dari project nodejs tersebut yakni

{
"name": "node.boiler.scrapping",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.19.2",
"cheerio": "^1.0.0-rc.3"
}
}

4. Membuat koneksi ke website tujuan dengan http

langkah berikutnya adalah membuat koneksi ke website tujuan dengan menggunakan protokol http. Untuk membuat hal ini, maka library axios akan digunakan.

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

kode diatas akan mendapatkan DOM+Html yang di insiasi oleh axios dan menyimpannya pada variabel (memory) untuk nantinya akan di filter dan analisa oleh cheerio.

5. Menganlisa struktur DOM dari website tujuan

langkah kelima ini adalah langkah yang paling sulit. Untuk dapat menganalisa dan melakukan filter terhadap dom agar bisa mengekstrak informasi penting dari website tersebut dibutuhkan analisa struktur dom.

Pada kasus ini artikel yang dituliskan pada website tujuan memiliki struktur html/dom seperti ini

struktur_website_target_scrapping_dom.jpg

pola yang digunakan untuk menampilkan artikel adalah :

  1. menggunakan tags article untuk setiap artikel yang dituliskan atau dipublikasikan pada website tersebut
  2. judul artikel ditempatkan pada tags a / hyperlink yang berada di tags h1 atau heading 1

sehingga berdasarkan struktur diatas maka artikel – artikel dari website tujuan dapat di ekstrak dengan metode dom selector yang melakukan looping atau perulangan pada artikel dan mengambil nilai heading 1.

untuk dapat menetukan metode ekstraksi ini diperlukan pengalaman dan pengetahuan tentang DOM serta HTML secara umum

6. Membuat proses filtering dan ekstraksi atas struktur dom untuk mendapatkan data artikel

sesuai pada hasil analisa yang dilakukan pada langkah nomor lima, maka cheerio akan digunakan untuk melakukan looping atau perulangan serta mengambil nilai heading 1 agar dapat mendapatkan daftar artikel yang dipublikasikan pada website tujuan tersebut.

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

// scrapping target details
const baseUrl = "https://www.smashingmagazine.com"
const targetPath = "/articles/";
const targetCode = "SM";

axios.get(baseUrl+targetPath)
  .then(function (response) {
      var scrappedContent = response.data;
      const $ = cheerio.load(scrappedContent);
      $('article').each( (index,element) => {
          const currentItem = cheerio.load(element);
          const currentArticleLinks = currentItem('h1 a').attr('href');
          const currentArticleTitle = currentItem('h1 a').html();
          const finalItem = {
            id : String(targetCode+'_'+currentArticleLinks),
            title : currentArticleTitle,
            links : currentArticleLinks
          }
          console.log(finalItem);
      })
  })
  .catch(function (error) {
    throw new Error(error);
  })
  .then(function () {
    console.log("scrapping success");
});

kode diatas akan melakukan interasi pada semua elemen yang memiliki tags article, kemudian disetiap iterasi akan membaca nilai tags a / hyperlink didalamnya. Sehingga program crawler dengan axios dan cheerio ini dapat mendapatkan judul artikel dan link artikel yang dipublikasikan oleh website tujuan.

Perintah untuk menjalankan program web scrapping crawler diatas adalah

node crawler.js

Kode diatas jika di jalankan akan menghasilkan hasil seperti berikut ini

hasil_pengambilan_data_scapping_done.jpg

done~

Setiap artikel yang terdapat pada website tujuan berhasil dilakukan pengambilan data dan ekstraksi dengan sukses. Langkah selanjutnya yang dapat dilakukan adalah menyimpan hasil ekstraksi datas ke database dan melakukan penjadwalan otomatis agar program crawler tersebut dapat berjalan setiap hari/waktu yang di inginkan.

gunakanlah metode web crawler scrapping ini dengan bijak dan legal 100%. jangan mengambil data yang tidak legal. Selalu cek dan pastikan isi robots.txt dari website tujuan.

(Visited 37 times, 1 visits today)
Please follow and like us:

Leave a Reply