FIRST THINK FIRST

Tulisan ini adalah cara melakukan scraping di R menggunakan rvest sebenarnya ada 2 package dalam R yang di gunakan untuk scraping data yaitu rvest dan Rselenium yang membedakan adalah untuk rvest di gunakan untuk scraping web statis artinya web itu hanya 1 halaman saja. nah untuk Rselenium di gunakan untuk web yang dinamis, artinya untuk web yang punya beberapa halaman. pada tulisan ini akan saya coba scrap dengan rvest. Oh iya dalam tulisan ini saya menggunakan web IMDB klik di sini Gambar web

Gambar di atas adalah contoh web yang akan di srap.

oh iya ada beberapa yang harus anda siapkan untuk memudahkan scrap. yaitu :

Adalah CSS selector

why that is important? jiah sok english kwkwkkw, kenapa itu penting? karena dalam melakukan scrap membutuhkan tag CSS HTML yang akan menjadi acuan data mana yang akan kita scrap klik di sini jika ingin mendownloadnya.

PERSIAPAAN

Package

Package yang di gunakan adalah :

#install.packages("rvest")
#install.packages("dplyr")
library(rvest)
library(dplyr)
library(tidyverse)

tag CSS HTML

sebenarnya tahapan ini adalah untuk menentukan data mena saja yang akan kita scrapp. nah dengan menggunakan bantuan CSS Selector maka kita akan di permudah dalam menentukan tag HTML mana. gambar2

nah gambar di atas yang warna hijau adalah data yang akan kita ambil. tanda yang berwarna merah adalah tag yang akan menjadi acuan pengambilan data.

dalam hal ini saya sudah menyiapkan data apa saja yang akan kita ambil dan kita simpan di notepad agar membuat sintaks sisa copy + paste saja. berikut adalah tag CSS HTML yang akan saya scrap.

.dli-title:nth-child(1) > judul film
.dli-title-metadata-item:nth-child(1) > tahun film
.ratingGroup--imdb-rating > rating film
.sc-f24f1c5c-0.cPpOqU > Vote film
.dli-title-metadata-item:nth-child(2) > Durasi film
.ipc-html-content-inner-div > Sinopsis

LETS DO IT

Eksekusi data

mengambil judul film

name = page %>% 
  html_nodes(".dli-title:nth-child(1)") %>% 
  html_text()

mengambil tahun film

year <- page %>% 
  html_nodes(".dli-title-metadata-item:nth-child(1)") %>% 
  html_text()

mengambil rating film

rating <- page %>% 
  html_nodes(".ratingGroup--imdb-rating") %>% 
  html_text()

Mengambil jumalh vote film

votes <- page %>% 
  html_nodes(".sc-f24f1c5c-0.cPpOqU") %>% 
  html_text()

Mengambil durasi film

duration <- page %>% 
  html_nodes(".dli-title-metadata-item:nth-child(2)") %>% 
  html_text()

Mengambil sinopsis film

sinopsis <- page %>% 
  html_nodes(".ipc-html-content-inner-div") %>% 
  html_text()

Nah setelah data sudah di scrap semua saatnya kita menjadikan dalam data frame seperti di bawah ini,

moviies <- data.frame(name, year, rating, votes, duration, sinopsis, stringsAsFactors = FALSE)
head(moviies, 5)

Setelah data siap menjadi data set. kita simpan dalam bentuk csv untuk keperluan eksplorasi dan analisa.

write.csv(moviies, file = "amovies.csv")

CONCLUTION

Nah hasilnya adalah seperti berikut : gambar4

nahhhh selesaiii, next akan kita bahas cara scrap dengan Rselenium.

share share share!!

LS0tDQp0aXRsZTogIlNjcmFwaW5nIGluIFIgd2l0aCBSdmVzdCINCmF1dGhvciA6ICJBbGJhbmkiDQpkYXRlIDogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0OiANCiAgaHRtbF9ub3RlYm9vayA6DQogICAgdGhlbWUgOiBqb3VybmFsDQogICAgdG9jIDogeWVzDQogICAgdG9jX2Zsb2F0Og0KICAgICAgY29sbGFwc2VkOiB0cnVlDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBjb25zb2xlDQotLS0NCg0KIyBGSVJTVCBUSElOSyBGSVJTVA0KDQpUdWxpc2FuIGluaSBhZGFsYWggY2FyYSBtZWxha3VrYW4gc2NyYXBpbmcgZGkgUiBtZW5nZ3VuYWthbiBgcnZlc3RgIHNlYmVuYXJueWEgYWRhIDIgcGFja2FnZSBkYWxhbSAqKlIqKiB5YW5nIGRpIGd1bmFrYW4gdW50dWsgc2NyYXBpbmcgZGF0YSB5YWl0dSBgcnZlc3RgIGRhbiBgUnNlbGVuaXVtYCB5YW5nIG1lbWJlZGFrYW4gYWRhbGFoIHVudHVrIGBydmVzdGAgZGkgZ3VuYWthbiB1bnR1ayBzY3JhcGluZyB3ZWIgc3RhdGlzIGFydGlueWEgd2ViIGl0dSBoYW55YSAxIGhhbGFtYW4gc2FqYS4gbmFoIHVudHVrIGBSc2VsZW5pdW1gIGRpIGd1bmFrYW4gdW50dWsgd2ViIHlhbmcgZGluYW1pcywgYXJ0aW55YSB1bnR1ayB3ZWIgeWFuZyBwdW55YSBiZWJlcmFwYSBoYWxhbWFuLiBwYWRhIHR1bGlzYW4gaW5pIGFrYW4gc2F5YSBjb2JhIHNjcmFwIGRlbmdhbiBgcnZlc3RgLiBPaCBpeWEgZGFsYW0gdHVsaXNhbiBpbmkgc2F5YSBtZW5nZ3VuYWthbiB3ZWIgSU1EQiBrbGlrIFtkaSBzaW5pXShodHRwczovL3d3dy5pbWRiLmNvbS9zZWFyY2gvdGl0bGUvP3RpdGxlX3R5cGU9ZmVhdHVyZSZnZW5yZXM9YWR2ZW50dXJlJnNvcnQ9dXNlcl9yYXRpbmcsZGVzYyZudW1fdm90ZXM9MjUwMDAsKSAhW0dhbWJhciB3ZWJdKEM6L1VzZXJzL0FkbWluaXN0cmF0b3IvRG93bmxvYWRzL1doYXRzQXBwIEltYWdlIDIwMjQtMDItMTIgYXQgMjEuNDAuNDEuanBlZykNCg0KR2FtYmFyIGRpIGF0YXMgYWRhbGFoIGNvbnRvaCB3ZWIgeWFuZyBha2FuIGRpIHNyYXAuDQoNCm9oIGl5YSBhZGEgYmViZXJhcGEgeWFuZyBoYXJ1cyBhbmRhIHNpYXBrYW4gdW50dWsgbWVtdWRhaGthbiBzY3JhcC4geWFpdHUgOg0KDQogICAgQWRhbGFoIENTUyBzZWxlY3Rvcg0Kd2h5IHRoYXQgaXMgaW1wb3J0YW50PyBqaWFoIHNvayBlbmdsaXNoIGt3a3dra3csIGtlbmFwYSBpdHUgcGVudGluZz8ga2FyZW5hIGRhbGFtIG1lbGFrdWthbiBzY3JhcCBtZW1idXR1aGthbiB0YWcgQ1NTIEhUTUwgeWFuZyBha2FuIG1lbmphZGkgYWN1YW4gZGF0YSBtYW5hIHlhbmcgYWthbiBraXRhIHNjcmFwIGtsaWsgW2RpIHNpbmldKGh0dHBzOi8vY2hyb21ld2Vic3RvcmUuZ29vZ2xlLmNvbS9kZXRhaWwvY3NzLXNlbGVjdG9yLWNhcHR1cmUtcHJvL2NwbmtjZmZobGxhZmJkYmxqa21oZWJucGJubGhhcG1kKSBqaWthIGluZ2luIG1lbmRvd25sb2FkbnlhLg0KDQojIFBFUlNJQVBBQU4NCg0KIyMgUGFja2FnZQ0KDQpQYWNrYWdlIHlhbmcgZGkgZ3VuYWthbiBhZGFsYWggOg0KDQpgYGB7ciBlY2hvPVRSVUV9DQojaW5zdGFsbC5wYWNrYWdlcygicnZlc3QiKQ0KI2luc3RhbGwucGFja2FnZXMoImRwbHlyIikNCmxpYnJhcnkocnZlc3QpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpgYGANCg0KIyMgdGFnIENTUyBIVE1MDQoNCnNlYmVuYXJueWEgdGFoYXBhbiBpbmkgYWRhbGFoIHVudHVrIG1lbmVudHVrYW4gZGF0YSBtZW5hIHNhamEgeWFuZyBha2FuIGtpdGEgc2NyYXBwLiBuYWggZGVuZ2FuIG1lbmdndW5ha2FuIGJhbnR1YW4gQ1NTIFNlbGVjdG9yIG1ha2Ega2l0YSBha2FuIGRpIHBlcm11ZGFoIGRhbGFtIG1lbmVudHVrYW4gdGFnIEhUTUwgbWFuYS4gIVtnYW1iYXIyXShDOi9Vc2Vycy9BZG1pbmlzdHJhdG9yL0Rvd25sb2Fkcy9XaGF0c0FwcCBJbWFnZSAyMDI0LTAyLTEyIGF0IDIxLjU0LjU4LmpwZWcpDQoNCm5haCBnYW1iYXIgZGkgYXRhcyB5YW5nIHdhcm5hICpoaWphdSogYWRhbGFoIGRhdGEgeWFuZyBha2FuIGtpdGEgYW1iaWwuIHRhbmRhIHlhbmcgYmVyd2FybmEgbWVyYWggYWRhbGFoIHRhZyB5YW5nIGFrYW4gbWVuamFkaSBhY3VhbiBwZW5nYW1iaWxhbiBkYXRhLg0KDQpkYWxhbSBoYWwgaW5pIHNheWEgc3VkYWggbWVueWlhcGthbiBkYXRhIGFwYSBzYWphIHlhbmcgYWthbiBraXRhIGFtYmlsIGRhbiBraXRhIHNpbXBhbiBkaSBub3RlcGFkIGFnYXIgbWVtYnVhdCBzaW50YWtzIHNpc2EgYGNvcHkgKyBwYXN0ZWAgc2FqYS4gYmVyaWt1dCBhZGFsYWggdGFnIENTUyBIVE1MIHlhbmcgYWthbiBzYXlhIHNjcmFwLg0KDQogICAgLmRsaS10aXRsZTpudGgtY2hpbGQoMSkgPiBqdWR1bCBmaWxtDQogICAgLmRsaS10aXRsZS1tZXRhZGF0YS1pdGVtOm50aC1jaGlsZCgxKSA+IHRhaHVuIGZpbG0NCiAgICAucmF0aW5nR3JvdXAtLWltZGItcmF0aW5nID4gcmF0aW5nIGZpbG0NCiAgICAuc2MtZjI0ZjFjNWMtMC5jUHBPcVUgPiBWb3RlIGZpbG0NCiAgICAuZGxpLXRpdGxlLW1ldGFkYXRhLWl0ZW06bnRoLWNoaWxkKDIpID4gRHVyYXNpIGZpbG0NCiAgICAuaXBjLWh0bWwtY29udGVudC1pbm5lci1kaXYgPiBTaW5vcHNpcw0KDQojIExFVFMgRE8gSVQNCg0KIyMgTWVtYmFjYSBsaW5rDQoNCmBgYHtyfQ0KbGluayA8LSAiaHR0cHM6Ly93d3cuaW1kYi5jb20vc2VhcmNoL3RpdGxlLz90aXRsZV90eXBlPWZlYXR1cmUmZ2VucmVzPWFkdmVudHVyZSZzb3J0PXVzZXJfcmF0aW5nLGRlc2MmbnVtX3ZvdGVzPTI1MDAwLCINCnBhZ2UgPSByZWFkX2h0bWwobGluaykNCmBgYA0KDQojIyBFa3Nla3VzaSBkYXRhDQoNCm1lbmdhbWJpbCBqdWR1bCBmaWxtDQoNCmBgYHtyfQ0KbmFtZSA9IHBhZ2UgJT4lIA0KICBodG1sX25vZGVzKCIuZGxpLXRpdGxlOm50aC1jaGlsZCgxKSIpICU+JSANCiAgaHRtbF90ZXh0KCkNCmBgYA0KDQptZW5nYW1iaWwgdGFodW4gZmlsbQ0KDQpgYGB7cn0NCnllYXIgPC0gcGFnZSAlPiUgDQogIGh0bWxfbm9kZXMoIi5kbGktdGl0bGUtbWV0YWRhdGEtaXRlbTpudGgtY2hpbGQoMSkiKSAlPiUgDQogIGh0bWxfdGV4dCgpDQpgYGANCg0KbWVuZ2FtYmlsIHJhdGluZyBmaWxtDQoNCmBgYHtyfQ0KcmF0aW5nIDwtIHBhZ2UgJT4lIA0KICBodG1sX25vZGVzKCIucmF0aW5nR3JvdXAtLWltZGItcmF0aW5nIikgJT4lIA0KICBodG1sX3RleHQoKQ0KYGBgDQoNCk1lbmdhbWJpbCBqdW1hbGggdm90ZSBmaWxtDQoNCmBgYHtyfQ0Kdm90ZXMgPC0gcGFnZSAlPiUgDQogIGh0bWxfbm9kZXMoIi5zYy1mMjRmMWM1Yy0wLmNQcE9xVSIpICU+JSANCiAgaHRtbF90ZXh0KCkNCmBgYA0KDQpNZW5nYW1iaWwgZHVyYXNpIGZpbG0NCg0KYGBge3J9DQpkdXJhdGlvbiA8LSBwYWdlICU+JSANCiAgaHRtbF9ub2RlcygiLmRsaS10aXRsZS1tZXRhZGF0YS1pdGVtOm50aC1jaGlsZCgyKSIpICU+JSANCiAgaHRtbF90ZXh0KCkNCmBgYA0KDQpNZW5nYW1iaWwgc2lub3BzaXMgZmlsbQ0KDQpgYGB7cn0NCnNpbm9wc2lzIDwtIHBhZ2UgJT4lIA0KICBodG1sX25vZGVzKCIuaXBjLWh0bWwtY29udGVudC1pbm5lci1kaXYiKSAlPiUgDQogIGh0bWxfdGV4dCgpDQpgYGANCg0KTmFoIHNldGVsYWggZGF0YSBzdWRhaCBkaSBzY3JhcCBzZW11YSBzYWF0bnlhIGtpdGEgbWVuamFkaWthbiBkYWxhbSBkYXRhIGZyYW1lIHNlcGVydGkgZGkgYmF3YWggaW5pLCANCg0KYGBge3J9DQptb3ZpaWVzIDwtIGRhdGEuZnJhbWUobmFtZSwgeWVhciwgcmF0aW5nLCB2b3RlcywgZHVyYXRpb24sIHNpbm9wc2lzLCBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpDQpoZWFkKG1vdmlpZXMsIDUpDQpgYGANCg0KU2V0ZWxhaCBkYXRhIHNpYXAgbWVuamFkaSBkYXRhIHNldC4ga2l0YSBzaW1wYW4gZGFsYW0gYmVudHVrIGNzdiB1bnR1ayBrZXBlcmx1YW4gZWtzcGxvcmFzaSBkYW4gYW5hbGlzYS4NCg0KYGBge3J9DQp3cml0ZS5jc3YobW92aWllcywgZmlsZSA9ICJhbW92aWVzLmNzdiIpDQpgYGANCg0KIyBDT05DTFVUSU9ODQoNCk5haCBoYXNpbG55YSBhZGFsYWggc2VwZXJ0aSBiZXJpa3V0IDoNCiFbZ2FtYmFyNF0oQzovVXNlcnMvQWRtaW5pc3RyYXRvci9Eb3dubG9hZHMvV2hhdHNBcHAgSW1hZ2UgMjAyNC0wMi0xMiBhdCAyMi4zNy4xOS5qcGVnKQ0KDQpuYWhoaGggc2VsZXNhaWlpLCBuZXh0IGFrYW4ga2l0YSBiYWhhcyBjYXJhIHNjcmFwIGRlbmdhbiBSc2VsZW5pdW0uDQoNCnNoYXJlIHNoYXJlIHNoYXJlISENCg==