Web scraping dengan API data harga emas rupiah per gram |
Jumpa kembali dalam sharing session di blog sederhana ini. Kali ini saya akan sedikit sharing bagaimana menerapkan web scraping suatu data yang bersifat publik di mana data tersebut memiliki API sebagai bentuk dapat dibagipakaikan datanya.
Data dengan API biasanya sepengalaman saya itu dapat diperoleh dalam bentuk JSON. Selain itu, data-data semacam ini juga dapat diperoleh dengan cukup mudah serta umumnya meliputi banyak variabel di dalamnya.
Dalam penerapan web scraping dengan R sendiri, untuk menangani jenis data dengan API dapat menggunakan library jsonlite dengan terlebih dahulu kita aktivasi dengan fungsi library(jsonlite). Package ini dapat diinstal secara mudah dengan memanfaatkan code install.packages("jsonlite") atau dapat pula dengan menggunakan fungsi remote:: dan install_github().
Adapun obyek data yang akan kita scrape kali ini adalah data harga emas dalam rupiah per gramnya. Data ini bersumber dari situs pluang.com dan sifatnya runtun waktu (time series). Untuk memperoleh API dari data emas ini seperti biasanya dapat menggunakan teknik inspect element dan merambah satu demi satu DOM dalam situs tersebut untuk kemudian menemukan API datanya yang berbentuk JSON.
Emas sendiri merupakan salah satu komoditas yang mampu menyimpan nilai sekaligus aset dewasa ini. Tak sedikit ekonom juga menyebutkan bahwa emas merupakan komoditas yang menjadi indikator situasi perekonomian global. Ketika perekonomian global dalam situasi tidak menentu, tak stabil, atau bahkan krisis, emas menjadi komoditas "pelarian" pada pemilik aset agar mampu melindungi asetnya dari inflasi atau penurunan nilai riil dari aset.
Diketahui, harga emas hingga 22 Maret 2024 juga terlihat masih pada posisi tren naik. Kendati pada periode pendek harganya sangat berfluktuatif, tren jangka panjangnya cukup mengesankan. Terlebih setelah Pandemi Covid-19 yang mengusik ekonomi global selama 2020 hingga akhir 2021 silam. Kini, harga emas per gramnya dalam kurs rupiah tercatat menyentuh 1 juta per gramnya. Dengan ketangguhannya di tengah situasi ketidakpastian ekonomi global, bisa diperkirakan bahwa 5 atau 10 tahun ke depan harga emas per gramnya dapat menembus angka 3-4 juta.
Itu sekilas pengantar dari pentingnya mengetahui data harga emas. Selanjutnya, dalam artikel kali ini akan di-share terkait teknik melakukan web scraping data dengan API berbahasa R. Adapun code secara runtun tertera sebagai berikut:
# Aktivasi library
# Scrape data dengan API
coba <- fromJSON("https://pluang.com/api/asset/gold/pricing?daysLimit=2001")
# manipulasi data dan transformasi periode data
hargaemas <- data.frame(coba$data$history)
hargaemas$tgl <- as.Date(substr(hargaemas$updated_at, 1, 10), "%Y-%m-%d")
hargaemas <- hargaemas[,c(2,3,4,6)]
# sekilas data
head(hargaemas)
## sell buy installment tgl
## 1 1152467 1123655 1152467 2024-03-22
## 2 1162327 1133268 1162327 2024-03-21
## 3 1142402 1113841 1142402 2024-03-20
## 4 1142394 1113834 1142394 2024-03-19
## 5 1135450 1107063 1135450 2024-03-18
## 6 1135054 1106677 1135054 2024-03-17
# memvisualisasikan hasil scrape data dengan API
x<- hargaemas %>%
ggplot(mapping = aes(x = tgl, y = as.numeric(sell))) +
geom_line(col = "blue") +
labs(x = "Tanggal", y = "Harga", title = "Perkembangan Harga Emas selama 29 Sep 2018 - 22 Mar 2024 (Rp/gr)",
caption = "Sumber Visualisasi: jokoding.com") +
theme(legend.position = "none") +
transition_reveal(tgl)
animate(x, height = 7,
width = 9, units = "in", res = 150, fps = 7)
## geom_path: Each group consists of only one observation. Do you need to adjust
## the group aesthetic?
## geom_path: Each group consists of only one observation. Do you need to adjust
## the group aesthetic?
##
Rendering [==============================================] at 0.88 fps ~ eta: 0s
Demikian sedikit sharing kali ini, jangan lupa untuk terus mengikuti, menshare, dan meninggalkan komentar di blog ini sebagai wujud dukungan Anda. Selamat memahami dan mempraktikkan!