Web Scraping Using R

IRSYIFA MAYZELA AFNAN
5 min readNov 17, 2020

--

Assalamualaikum wr.wb

Pada kesempatan kali ini saya akan membagikan sedikit informasi bagaimana cara scraping data dari IMDb (Internet Movie Database, https://www.imdb.com ) yang disusun berdasar popularitas film di tahun 2015–2020 dan kemudian menyajikan hasil analisis.

Berdasarkan data tersebut, akan digunakan data gross (pendapatan kotor) dan genre film populer setiap tahunnya. Langkah yang dilakukan pertama kali adalah menginstall dan menjalankan package “xml2” dan “rvest”.

install.packages(“xml2”)
library(xml2)
install.package(“rvest”)
library(rvest)

Menampilkan Data Film Dari Tahun 2015–2020

#2015
alamatweb <- 'https://www.imdb.com/search/title/?count=100&release_date=2015,2015&title_type=feature'
lamanweb <- read_html(alamatweb)
lamanweb

Data Tahun 2015

Lakukan hal yang sama untuk tahun 2016–2020 seperti berikut

#2016#
alamatweb1 <- ‘https://www.imdb.com/search/title/?count=100&release_date=2016,2016&title_type=feature'
lamanweb1 <- read_html(alamatweb1)
lamanweb1

Data Tahun 2016

#2017#
alamatweb2 <- ‘https://www.imdb.com/search/title/?count=100&release_date=2017,2017&title_type=feature'
lamanweb2 <- read_html(alamatweb2)
lamanweb2

Data Tahun 2017

#2018#
alamatweb3 <- ‘https://www.imdb.com/search/title/?count=100&release_date=2018,2018&title_type=feature'
lamanweb3 <- read_html(alamatweb3)
lamanweb3

Data Tahun 2018

#2019#
alamatweb4 <- ‘https://www.imdb.com/search/title/?count=100&release_date=2019,2019&title_type=feature'
lamanweb4 <- read_html(alamatweb4)
lamanweb4

Data Tahun 2019

#2020#
alamatweb5 <- ‘https://www.imdb.com/search/title/?count=100&release_date=2020,2020&title_type=feature'
lamanweb5 <- read_html(alamatweb5)
lamanweb5

Data Tahun 2020

Mengambil Data Genre Film Populer 2015–2020

> genre_data_laman2015 <- html_nodes(lamanweb2015,’.genre’)
> genre_data_laman2015

Setelah itu, diambil data text genre dari halaman web tersebut.

#kita ambil data text genre
> genre_data2015 <- html_text(genre_data_laman2015)
# kemudian kita lihat data tersebut
> genre_data2015

Selanjutnya menghilangkan tanda “\n” , spasi kosong dan hanya akan mengambil deskripsi genre pertama dari setiap film dijalankan perintah sebagai berikut:

# karena masih memuat tanda “\n” maka kita hilangkan terlebih dahulu
> genre_data2015<-gsub(“\n”,””,genre_data2015)
# kita hilangkan juga spasi kosong
> genre_data2015<-gsub(“ “,””,genre_data2015)
# karena satu film bisa beberapa genre, maka setiap film hanya dikategorikan pada deskripsi genre yang pertama saja
> genre_data2015<-gsub(“,.*”,””,genre_data2015)
> genre_data2015
# kita lihat lagi hasilnya,
> head(genre_data2015)

Lakukan langkah yang sama untuk memperoleh data genre tahun 2016–2020

Mengambil Data Gross Film Populer 2015–2020

Kemudian diambil data gross dari film populer pada tahun 2015

> gross_data_laman2015 <- html_nodes(lamanweb2015,’.ghost~ .text-muted+ span’)
> gross_data2015 <- html_text(gross_data_laman2015)
> gross_data2015

Dilakukan data cleaning untuk menghilangkan huruf M dan tanda $ pada data gross yang telah diambil.

# menghilangkan huruf M dan $> gross_data2015<-gsub(“M”,””,gross_data2015)
> gross_data2015<-substring(gross_data2015,2,6)
> gross_data2015
# data gross dikonversi menjadi numerik> gross_data2015<-as.numeric(gross_data2015)
> length(gross_data2015)

Diperoleh bahwa hanya 88 film yang mempunyai nilai gross pendapatan dari 100 film populer 2015.

Untuk mendapatkan rata-rata gross film populer tahun 2015 dapat dilakukan dengan perintah “summary” atau “mean”.

> summary(gross_data2015)
> mean2015 <- mean(gross_data2015)
> mean2015

Didapatlan nilai rata-rata gross film populer pada tahun 2015 adalah $91.44205M.

Lakukan hal yang sama untuk memperoleh rata-rata gross film populer tahun 2016–2020.

Membuat Plot Rata-Rata Gross Tahun 2015–2020

Rata-rata gross pendapatan setiap tahunnya dibuat dalam satu data frame.

> gross <-data.frame(mean2015,mean2016,mean2017,mean2018,mean2019,mean2020)
> gross
> Tahun<-c(2015,2016,2017,2018,2019,2020)
> Mean<-c(91.44205,90.291,96.71395,101.9948,152.1132,94.146)
> df<-data.frame(Tahun,Mean)
> df

Kita akan memvisualisasikan rata-rata gross pendapatan film 2015–2020 dengan menggunakan package “ggplot2” dalam bentuk grafik garis. Dimana variabel Tahun sebagai sumbu y dan variabel Mean sebagai sumbu x.

> library(ggplot2)
> ggplot(data = df, mapping = aes(x = Tahun)) +geom_line(aes(y = Mean, color = “Gross”), size = 0.8)+labs(title = “Rata-Rata Gross Pendapatan Film 2015–2020”)
Plot Rata-Rata Pendapatan Gross Film Tahun 2015–2020

Berdasarkan grafik diatas, dapat dilihat bahwa rata-rata gross pendapatan terendah pada tahun 2016 dan mengalami kenaikan yang signifikan hingga mencapai rata-rata gross pendapatan tertinggi yaitu pada tahun 2019, lalu kembali turun secara signifikan pada tahun 2020.

Membuat Plot Tren Genre Tahun 2015–2020

Memvisualisasikan data genre tiap tahun

#2015#library(‘ggplot2’)
qplot(genre2015, fill=genre2015, bind=30)

Berdasarkan grafik data genre 2015 di atas, diketahui film terbanyak yang di tonton bergenre action dan terendah adalah genre Thriller.

#2016#library(‘ggplot2’)
qplot(genre2016, fill=genre2016, bind=30)

Berdasarkan grafik data genre 2016 di atas, diketahui film terbanyak yang di tonton bergenre action dan terendah adalah genre Crime.

#2017#library(‘ggplot2’)
qplot(genre2017, fill=genre2017, bind=30)

Berdasarkan grafik data genre 2017 di atas, diketahui film terbanyak yang di tonton bergenre action dan terendah adalah genre family.

#2018#library(‘ggplot2’)
qplot(genre2018, fill=genre2018, bind=30)

Berdasarkan grafik data genre 2018 di atas, diketahui film terbanyak yang di tonton bergenre action dan terendah adalah genre fantasy.

#2019#library(‘ggplot2’)
qplot(genre2019, fill=genre2019, bind=30)

Berdasarkan grafik data genre 2019 di atas, diketahui film terbanyak yang di tonton bergenre action dan terendah adalah genre fantasy.

#2020#library(‘ggplot2’)
qplot(genre2020, fill=genre2020, bind=30)

Berdasarkan grafik data genre 2020 di atas, diketahui film terbanyak yang di tonton bergenre action dan terendah adalah genre fantasy.

Menjawab Pertanyaan 2 dan 3

Adakah perubahan trend genre kesukaan masyarakat terhadap film di tahun 2015, 2016, 2017, 2018, 2019 dan 2020? dan Berilah masukan pada produser film, film seperti apakah yang sebaiknya di produksi.

Dari visualisasi genre di atas, tidak terdapat prubahan trend genre kesukaan masyarakat terhadap film dari tahun 2015–2020, masyarakat tetap menggemari film bergenre action. Dan jika seorang produser ingin memproduksi sebaiknya memilik genre action yang telah banyak digemari masyarakat dari tahun ke tahun dimana pada tahun 2016 memiliki penonton paling tinggi.

--

--