Data Science Programming
Data Wrangling (Data Collection)
๐ Pendahuluan
Bayangkan (Bayangkan aja dulu ye) kamu memiliki sebuah pertanyaan atau ketertarikan tertentu. Sebagian besar waktu, data yang ingin kamu analisis sudah tersedia dalam format seperti teks, CSV, atau file Excel. Ini memudahkan kita untuk memuatnya ke dalam R dan menjalankan skrip untuk mendapatkan jawaban yang kita butuhkan.
Namun, bagaimana jika data tersebut tidak tersusun rapi dan hanya tersedia di berbagai lokasi di satu atau beberapa website? ๐ค
๐ก Di sinilah web scraping berperan! Dalam tutorial
ini, kita akan belajar bagaimana mengambil data dari website
menggunakan rvest dalam R.
๐ Studi Kasus dan Contoh Web Scraping
Kita akan melalui empat contoh dengan tingkat kompleksitas yang meningkat. Tidak perlu pengetahuan HTML mendalam! Kita juga akan melihat bagaimana ChatGPT dapat membantu dalam proses scraping. ๐
๐ฑ Contoh 1: Copy-Paste Tabel dari Website
Sebelum menggunakan rvest, ada cara cepat untuk
mengambil tabel dari website tanpa coding:
- Blok semua sel tabel (klik dan tahan hingga
mencapai header).
- Tekan Ctrl + C atau klik kanan lalu pilih
Copy ๐.
- Gunakan paket
datapastauntuk menempelkan tabel ke dalam R sebagai data frame.
install.packages("datapasta") # Jika belum terinstal
library(datapasta)
Olympic_medals <- datapasta::dpasta()๐ก Hasilnya: Data otomatis dikonversi menjadi data frame yang siap untuk dianalisis! ๐
๐ Contoh 2: Web Scraping Sederhana dengan
rvest
Untuk melakukan scraping, kita menggunakan paket
rvest, yang fungsinya seperti
โmemanenโ data dari website ๐พ.
๐น Mengambil Data dari Tabel Website
url <- "https://example.com/daftar-paket-R"
page <- read_html(url)
# Menemukan elemen tabel
table <- page %>% html_node("table") %>% html_table()
# Simpan ke dalam data frame
df <- as.data.frame(table)
head(df)๐ Hasilnya: Tabel dari website berhasil diambil sebagai data frame.
โ ๏ธ Jika ada baris kosong, gunakan
na.omit() untuk menghapusnya:
โก Contoh 3: Scraping dari Beberapa Website dengan ID Unik
Dalam kasus ini, kita ingin mengambil daftar pemain Euro Championship dari beberapa website โฝ.
๐น Langkah-langkahnya:
- Gunakan F12 untuk membuka Developer
Tools di browser.
- Gunakan inspector untuk menemukan elemen tabel yang
sesuai.
- Temukan elemen dengan ID unik, misalnya
"yw1".
- Buat loop untuk mengambil data dari 4 website.
๐น Skrip R untuk Scraping dari Beberapa Website
urls <- c(
"https://example.com/tim-jerman",
"https://example.com/tim-spanyol",
"https://example.com/tim-italia",
"https://example.com/tim-prancis"
)
euro24_df <- data.frame()
for (url in urls) {
df_temp <- read_html(url) %>%
html_node("#yw1") %>%
html_table()
euro24_df <- rbind(euro24_df, df_temp)
}
head(euro24_df)๐ Hasilnya: Data dari Jerman ๐ฉ๐ช, Spanyol ๐ช๐ธ, Italia ๐ฎ๐น, dan Prancis ๐ซ๐ท berhasil dikumpulkan dalam satu tabel!
๐ค Contoh 4: Web Scraping dengan Bantuan ChatGPT
Dalam contoh ini, kita ingin mengambil 1000 komunitas teratas dari platform edukasi Skool ๐.
Namun, datanya tidak dalam bentuk tabelโmelainkan dalam elemen HTML seperti kartu komunitas ๐.
๐น Cara Mengatasi dengan ChatGPT:
- Gunakan F12, cari elemen kartu komunitas.
- Salin kode HTML elemen tersebut dan tempelkan ke
ChatGPT ๐ค.
- ChatGPT akan membantu menghasilkan skrip R yang sesuai.
๐น Skrip R yang Dihasilkan
url <- "https://www.skool.com/discovery"
# Ambil judul komunitas
titles <- read_html(url) %>%
html_nodes(".community-title") %>%
html_text()
# Simpan dalam data frame
df_communities <- data.frame(Community = titles)
head(df_communities)๐ Hasilnya: Daftar komunitas dari Skool berhasil diambil!
๐น Scraping Banyak Halaman
Gunakan loop untuk mengambil data dari beberapa halaman:
all_communities <- data.frame()
for (i in 1:5) { # Scraping 5 halaman pertama
page_url <- paste0("https://www.skool.com/discovery?page=", i)
titles <- read_html(page_url) %>%
html_nodes(".community-title") %>%
html_text()
temp_df <- data.frame(Community = titles)
all_communities <- rbind(all_communities, temp_df)
}
head(all_communities)โ ๏ธ Peringatan: Jangan scraping terlalu banyak halaman sekaligus agar tidak diblokir oleh website! ๐จ
๐ฏ Kesimpulan
โ
Web scraping sangat berguna untuk mengambil data dari
website.
โ
Paket rvest memudahkan proses ini tanpa
perlu banyak pengetahuan HTML.
โ
ChatGPT dapat membantu memahami struktur website dan
menghasilkan kode R yang tepat.
โ
Hati-hati dengan batasan website agar tidak
diblokir!
๐ฅ Sekarang, kamu siap melakukan web scraping sendiri! ๐ฅ
Akses Notebook di Google Colab VIDEO DATA COLLECTION (2)
Klik tautan berikut untuk membuka notebook di Google Colab:
Klik di sini untuk membuka
Colab