Data Collection
Programming Data Science
WEB SCRAPPING WITH R
Web scraping adalah teknik pengambilan data dari halaman web secara otomatis. Dalam R, web scraping dapat dilakukan dengan paket seperti rvest, datapasta, dan dplyr. Teknik ini digunakan untuk mengumpulkan informasi dari web yang tidak tersedia dalam format API (Application Programming Interface).
Contoh Kode Web Scraping
1. Menggunakan datapasta
## ----1. DataPaste -----
install.packages("datapasta")
library(datapasta)
Olympic_medals <- data.frame(
stringAsFactors = FALSE,
check.names = FALSE, Paste informasi dari tabel")
Cara Kerja:
Kode ini memanfaatkan datapasta untuk mempermudah pemrosesan data yang telah disalin dari web ke dalam bentuk data.frame.
Hasil:
Kode ini akan menampilkan data dalam format tabel yang dapat diproses lebih lanjut.
Kegunaan:
Mempermudah pemrosesan data dengan menyalin dan menempel langsung ke dalam R.
Kelebihan & Kekurangan:
Kelebihan: Mudah digunakan untuk data yang sudah tersusun dalam format tabel.
Kekurangan: Tidak dinamis dan tidak dapat digunakan untuk scraping data secara otomatis.
2. Web Scraping Dasar dengan rvest
install.packages("rvest")
library(rvest)
url <- "https://cran.r-projrct.org/web/packages/avaible_packages_by_name.html"
html_page <- read_html(x=url)
CRAN_packages <- html_page %>%
html_node(xpath = '//table') %>%
html_table()
# melihat informasi
View(CRAN_packages)
# menghapus baris yg kosong
CRAN_packages <- na.omit(CRAN_packages)
str(CRAN_packages)
Cara Kerja:
Membaca halaman web dengan read_html().
Mengambil tabel dari halaman menggunakan html_node() dan html_table().
Membersihkan data dengan na.omit().
Hasil:
Menampilkan tabel daftar paket R dari CRAN.
Kegunaan:
Mengambil data dari tabel HTML.
Membersihkan dan memproses data lebih lanjut.
Kelebihan & Kekurangan:
Kelebihan: Mudah digunakan untuk scraping tabel dari halaman statis.
Kekurangan: Tidak cocok untuk scraping data dari halaman dinamis yang menggunakan JavaScript.
3. Web Scraping dengan Loop Statis
reference_df <- data.frame(id = 1:4,
code = c("GER", "ERP", "ITA", "FRA"),
url = rep("https://cran.r-project.org/web/packages/available_packages_by_name.html", 4))
i = 1
for(i in 1:nrow(reference_df)){
temp_url <- reference_df$url[i]
temp_page <- read_html(temp_url)
temp_table <- temp_page %>%
html_node(xpath = '//*[@id = "ywl"]/table') %>%
html_table()
temp_table <- temp_table %>% mutate(code = reference_df$code[i])
if(i == 1){euro24 <- temp_table}
if(i > 1){euro24 <- bind_rows(euro24, temp_table)}
}
Cara Kerja:
Menggunakan for loop untuk membaca halaman yang sama berkali-kali.
Mengambil data tabel dari tiap halaman.
Menggabungkan hasil scraping ke dalam satu dataset.
Hasil:
Dataset gabungan dari beberapa halaman web.
Kegunaan:
Scraping beberapa halaman web secara otomatis.
Menggabungkan hasil dari beberapa sumber.
Kelebihan & Kekurangan:
Kelebihan: Dapat digunakan untuk scraping beberapa halaman sekaligus.
Kekurangan: Tidak fleksibel jika struktur halaman berbeda.
4. Web Scraping dengan Loop Dinamis
Langkah-langkah:
- Gunakan ChatGPT untuk mendapatkan XPath atau CSS Selector:
Tekan F12 di browser untuk membuka Developer Tools.
Arahkan kursor ke elemen yang ingin diambil.
Salin elemen yang dipilih untuk digunakan dalam kode.
- Salin URL halaman web dan detail elemen yang diperlukan:
- Pastikan halaman memiliki format URL yang konsisten untuk looping.
- Menulis kode scraping:
library(rvest)
library(dplyr)
url <- "https://..."
description <- list()
for(page_num in 1:5) {
# Buat URL untuk setiap halaman
url <- paste0(base_url, page_num)
# Membaca halaman HTML
temp_page <- read_html(url)
# Menemukan elemen berdasarkan selector dan mengekstrak teks
description[page_num] <- temp_page %>%
html_nodes('.styled-class') %>%
html_text()
}
# Menggabungkan hasil menjadi data frame
data <- data.frame(description)
Cara Kerja:
Menggunakan for loop untuk membaca beberapa halaman web yang berbeda.
Menyusun URL menggunakan paste0().
Mengambil data dari setiap halaman dengan html_nodes() dan html_text().
Menggabungkan hasil scraping dalam satu dataset.
Hasil:
Dataset dengan data yang diambil dari beberapa halaman web secara otomatis.
Kegunaan:
Scraping dari beberapa halaman yang memiliki format serupa.
Mengambil data dari situs dengan sistem paginasi.
Kelebihan & Kekurangan:
Kelebihan:
Dapat digunakan untuk scraping data dari banyak halaman secara otomatis.
Menghemat waktu dalam pengumpulan data.
Kekurangan:
Memerlukan analisis XPath atau CSS Selector yang tepat.
Tidak selalu bisa digunakan pada halaman yang memiliki struktur dinamis atau menggunakan JavaScript.
Hal yang Perlu Diperhatikan
Web scraping dengan R itu sangat berguna untuk mengumpulkan data dari web, tapi ada beberapa hal yang harus diperhatikan:
- Struktur Halaman Web: Pastikan elemen HTML yang mau
diambil nggak berubah secara dinamis.
- Etika dan Legalitas: Beberapa situs punya kebijakan
khusus soal web scraping, jadi cek dulu ketentuannya.
- Kinerja dan Efisiensi: Kalau scraping dalam skala besar, perhatiin batasan kecepatan biar nggak kena blokir.
Kesimpulan
Secara keseluruhan, metode scraping yang dipilih tergantung kebutuhan data dan struktur halamannya. rvest cocok untuk scraping halaman statis, sementara pendekatan dengan loop bisa dipakai buat scraping banyak halaman secara otomatis.
Referensi
DScienceLabs. (n.d.). Data collection. In Data science programming. Bookdown. Retrieved March 13, 2025, from https://bookdown.org/dsciencelabs/data_science_programming/04-Data_Collection.html
The Data Digest. (2025, March 13). Web scraping in R with ChatGPT (4 Examples) no HTML knowledge needed [Video]. YouTube. https://youtu.be/MHdMFxUyGdk