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:

  1. Blok semua sel tabel (klik dan tahan hingga mencapai header).
  2. Tekan Ctrl + C atau klik kanan lalu pilih Copy ๐Ÿ“‹.
  3. Gunakan paket datapasta untuk 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 ๐ŸŒพ.

๐Ÿ”น Instalasi dan Pemuatan Paket

install.packages("rvest")  # Jika belum terinstal
library(rvest)

๐Ÿ”น 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:

df <- na.omit(df)

โšก Contoh 3: Scraping dari Beberapa Website dengan ID Unik

Dalam kasus ini, kita ingin mengambil daftar pemain Euro Championship dari beberapa website โšฝ.

๐Ÿ”น Langkah-langkahnya:

  1. Gunakan F12 untuk membuka Developer Tools di browser.
  2. Gunakan inspector untuk menemukan elemen tabel yang sesuai.
  3. Temukan elemen dengan ID unik, misalnya "yw1".
  4. 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:

  1. Gunakan F12, cari elemen kartu komunitas.
  2. Salin kode HTML elemen tersebut dan tempelkan ke ChatGPT ๐Ÿค–.
  3. 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


๐Ÿ“š Referensi

No Penulis Judul Sumber Tautan
1 Bakti Siregar, M.Sc., CD Data Collection Bookdown Link
2 The Data Digest Web Scraping in R with ChatGPT (4 Examples) no HTML knowledge needed YouTube Link