Scraping Data Website dan Visualisasi Data
Assalamua’laikum teman-teman
Dalam kesempatan ini kita akan menyelesaikan studi kasi di bawah ni,
1. Buatlah grafik garis untuk rata-rata gross pendapatan film pada tahun 2015–2020
2. Adakah perubahan trend genre kesukaan masyarakat terhadap film di tahun 2015, 2016, 2017, 2018, 2019 dan 2020?
3. Berilah masukan pada produser film, film seperti apakah yang sebaiknya di produksi.
Pertama kita melakukan scraping atau scrolling data dari suatu website dengan “rvest”. Adapun laman web yang digunakan yaitu IMDb https://www.imdb.com yang merupakan situs web review popularistas film. Kemudian menuju halaman melihat daftar popularitas film pada tahun tertentu yang pertama pada tahun 2015 dengan link https://www.imdb.com/search/title/?count=100&release_date=2015,2015&title_type=feature. Jika ingin melihat pada tahun 2016 dan seterusnya maka tinggal mengganti tulisan tahun pada link itu diganti dengan tahun yang diinginkan.
Berikutnya, kita mengintalls packages “xml2” dan “rvest” lalu mengatifkannya dengan syntax seperti di bawah ini.
library(xml2)
library(rvest)
Setelah itu, kita download data hmtl website tersebut untuk tahun 2015 dengan syntax seperti di bawah ini.
alamatweb1 <- ‘https://www.imdb.com/search/title/?count=100&release_date=2015,2015&title_type=feature'
lamanweb1 <- read_html(alamatweb1)
Kemudian, kita akan menyelesaikan studi kasus pertama diawali kita ingin mengambil data gross film yang ada dalam halaman web tersebut, seperti di bawah ini.
Maka untuk mengetahui posisi dimana letak gross dalam halaman html maka kita perlu menggunakan aplikasi “SelectorGadget” yang bisa langsung di download dan ditempelkan dalam Chrome. Dapat di download pada link ini https://chrome.google.com/webstore/detail/selectorgadget/mhjhnkcfbdhnjickkkdbjoemdmbfginb?hl=en. kemudian dapat ditambahkan dalam chrome, sehingga terlihat ikon kecil kanan atas pada halaman chrome bahwa “SelectorGadget” telah terpasang.
Selanjutnya, klik ikon tersebut sehingga muncul jendela kecil satu baris yang berisi letak bagian yang akan kita inginkan. Pada studi kasus pertama kita akan menscroling variabel gross.
Maka, perintah dalam R yang kita jalankan pertama mengambil datanya adalah seperti pada gambar berikut.
# var.gross1
gross_data_laman1 <- html_nodes(lamanweb1,’.ghost~ .text-muted+ span’)
gross_data1 <- html_text(gross_data_laman1)
gross_data1
Kemudian, kita bersihkan datanya dengan menghilangkan huruf M dan $ seperti pada gambar berikut.
# menghilangkan huruf M dan $
gross_data1<-gsub(“M”,””,gross_data1)
gross_data1<-substring(gross_data1,2,6)
gross_data1
Lalu, kita melihat jumlah data yang tersedia seperti pada gambar berikut.
# cek jumlah data gross_data, karena tidak semua film memuat gross data
length(gross_data1)
Diketahui bahwa data variabel gross tidak semua film ada maka dilakukan pendefinisian dengan measing value NA dimana memasukan urutan data yang kosong dilihat pada website tersebut seperti berikut.
# Missing data diganti dengan nilai NA
for (i in c(3,14,35,47,49,63,68,72,76,85,94,95))
{
a<-gross_data1[1:(i-1)]
b<-gross_data1[i:length(gross_data1)]
gross_data1<-append(a,list(“NA”))
gross_data1<-append(gross_data1,b)
}
Lalu, kita melihat jumlah data akhir kemudian menkonversi data tersebut menajdi numeric dan mengetahui statistik data gross tersebut seperti pada gambar berikut.
# data gross dikonversi menjadi numerik
gross_data2<-as.numeric(gross_data2)
length(gross_data2)
summary(gross_data2)
Maka ditampilkan output seperti gambar di bawah ini,
Berikutnya,
Lalu,
Kemudian,
Setelah itu, didapatkan hasil statistik deskriptif seperti berikut
Selanjutnya lakukan cara seperti itu untuk mendapatkan data variabel gross pada tahun 2016 sampai 2018 dengan menggantikan objek data untuk setiap tahunnya seperti berikut.
Karena pada variabel genre pada tahun 2019 dan 2020 terdapat NA di data awal maka tidak dapat menggunakan syntax sebelumnya. Oleh sebab itu, kita membuat data frame seperti berikut.
Selanjutnya, kita akan mengumpulkan data rata-rata variabel gross dari tahun 2015 sampai 2020 dalam bentuk data frame seperti berikut.
Maka ditampilkan seperti berikut,
Kemudian membuat grafik terhadap data tersebut seperti berikut,
Maka akan didapatkan output grafik seperti berikut,
Dapat dilihat pada grafik tersebut data rata-rata pendapatan fim, pada tahun 2015 menuju 2016 terjadi sedikit penurunan. Kemuduan menuju tahun 2017 dan 2018 terjadi cukup peningkatan pendapatan. Lalu menuju tahun 2019 adanya peningkatan pendapatan yang sangat signifikan yang dikarenakan adanya film-film holywood dari marvel yang mebuat kalangan anak muda menonton film di bioskop. Akan tetapi menuju tahun 2020 sampai saat ini terjadi penurunan yang signifakan dimana dikarenakan adanya wabah covid-19 yang dimana adanya kebijakan pemerintah untuk menutup tempat hiburan seperti bioskop serta adanya trend menonton film di aplikasi digital yang menyediakan streaming film pra bayar seperti Netflix, iflix dan lainnya.
Sealnjutnya, kita akan menyelsaikan studi kasus ke dua diawali dengan mengambil data genre film kemudian data rating tersebut di tahum 2015 sampai 2019. Dikarenakan di tahun 2020 belum adanya data yang lengkap maka tiak dapat digunakan. Maka syntax seperti berikut.
#var.genre1
genre_data_laman1 <- html_nodes(lamanweb1,’.genre’)
genre_data_laman1
# kita ambil data text genre
genre_data1 <- html_text(genre_data_laman1)
genre_data1
Kemudian, kita bersihkan data tersebut seperti berikut.
#karena masih banyak memuat tanda “\n” maka kita hilangkan terlebih dahulu
genre_data1<-gsub(“\n”,””,genre_data1)
# kita hilangkan juga spasi kosong
genre_data1<-gsub(“ “,””,genre_data1)
# karena satu film bisa beberapa genre, maka setiap film hanya dikategorikan pada deskripsi genre yang pertama saja
genre_data1<-gsub(“,.*”,””,genre_data1)
genre_data1
Lalu, mengkonversi data genre berupa text menjadi faktor seperti berikut.
# mengkonversi data genre berupa text menjadi faktor
genre_data1<-as.factor(genre_data1)
Setelah itu, kita lihat hasilnya dan jumlah data yang ada.
genre_data1
# kita lihat lagi hasilnya,
head(genre_data1)
length(genre_data1)
Dengan syntax yang sama tersebut dimana menyesuaikan tahunnya kita lakukan untuk tahun-tahun selanjutnya.
Berikutnya, mengambil data rating tersebut di tahun 2015 sampai 2019 seperti berikut.
#var.rating1
rating_data_laman1 <- html_nodes(lamanweb1,’.ratings-imdb-rating strong’)
rating_data_laman1
# mengambil data text rating
rating_data1 <- html_text(rating_data_laman1)
rating_data1
Didapatkan data rating yang sudah bersih maka lanjut ke tahap selanjutnya. Lalu, mengkonversi data genre berupa text menjadi faktor seperti berikut.
# dikonversi dalam numerik
rating_data1<-as.numeric(rating_data1)
Setelah itu, kita lihat hasilnya dan jumlah data yang ada.
rating_data1
length(rating_data1)
Dengan syntax yang sama tersebut dimana menyesuailan tahunnya kita lakukan untuk tahun-tahun selanjutnya.
Selanjutnya membuat grafik terhadap data tersebut seperti berikut,
Dapat dilihat pada grafik-grafik tersebut merupakan kumpulan grafik data popularitas genre film dari tahun 2015 sampai 2019. Diketahui pada tahun 2015 trand genre film yang terbanyak disukai adalah genre drama. Lalu pada tahun 2016 trend genre film yang terbanyak disukai adalah action. Kemudian pada tahun 2017 trend genre film yang terbanyak disukai adalah comedy. Lalu pada tahun 2018 trend genre film yang terbanyak disukai adalah drama. pada tahun 2019 trend genre film yang terbanyak disukai adalah comedy. Dapat dilihat terdapat perubahan trend genre film yang disukai tia[p tahunnya. Diketahui genre yang masuk dalam trend di tahun 2015–2019 adalah genre action, drama dan comedy.
Menyelesaikan studi kasus ke tiga. Dari hasil analisis data tersebut, adapun masukan untuk produser film yaitu terkait film yang sebaiknya di produksi adalah film dengan penggabungan 2 genre atau lebih yang dimana mengandung 3 genre yang termasuk trend pada tahun 2015 sampai 2019 yaitu drama, action dan comedy. Dengan penggabungan genre film maka akan menjadi film yang akan menarik untuk para penonton.
Referensi :