Web scraping adalah teknik otomatisasi untuk mengambil data dari
situs web dan mengubahnya menjadi informasi terstruktur. Dalam laporan
ini, kita akan menggunakan R dan paket rvest untuk
melakukan web scraping secara efisien.
1. Instalasi dan Pemanggilan Paket
Sebelum memulai web scraping, pastikan paket rvest telah
terinstal. Jika belum, instal terlebih dahulu dengan perintah
berikut:
install.packages("rvest") # Instal paket rvest untuk scraping datainstall.packages("dplyr") # Instal paket dplyr untuk manipulasi datainstall.packages("datapasta") # Instal datapasta untuk mempermudah copy-paste data
Selanjutnya, panggil paket-paket yang akan digunakan:
library(rvest) # Untuk melakukan scraping data dari HTMLlibrary(dplyr) # Untuk manipulasi data hasil scrapinglibrary(datapasta) # Untuk manajemen data copy-paste
2. Mengambil Data dari Halaman Web
Misalkan kita ingin mengambil data dari sebuah tabel di sebuah
website. Kita perlu membaca HTML halaman tersebut dan mengekstrak
tabelnya.
# Definisikan URL halaman web yang akan di-scrapetarget_url <-"https://example.com/tabel"# Baca konten HTML dari halaman webwebpage <-read_html(target_url)# Cari elemen tabel dalam HTMLscraped_table <- webpage %>%html_node("table") %>%html_table(fill =TRUE)# Tampilkan data yang diambilhead(scraped_table) # Melihat beberapa baris pertama dari tabel
Penjelasan kode: -
read_html(target_url): Membaca seluruh struktur HTML
halaman web. - html_node("table"): Mencari elemen tabel
dalam HTML. - html_table(fill = TRUE): Mengubah elemen
tabel HTML menjadi data frame. -
head(scraped_table): Menampilkan beberapa baris pertama
dari data yang telah diambil.
3. Scraping Data dari Beberapa Halaman
Sering kali, data tersebar di beberapa halaman web. Kita dapat
mengotomatisasi pengambilan data dari beberapa halaman menggunakan
perulangan.
# Buat daftar URL dari beberapa halamantarget_urls <-c("https://example.com/page1","https://example.com/page2","https://example.com/page3")# Buat list kosong untuk menyimpan hasil scrapingall_tables <-list()# Loop untuk membaca setiap halaman webi <-1for (url in target_urls) { page <-read_html(url) # Membaca HTML halaman table <- page %>%html_node("table") %>%html_table(fill =TRUE) # Ekstraksi tabel all_tables[[i]] <- table # Simpan tabel ke dalam list i <- i +1}# Gabungkan semua tabel menjadi satu data framefinal_data <-bind_rows(all_tables)# Tampilkan data gabunganhead(final_data)
Penjelasan kode: - target_urls: Daftar
halaman web yang akan di-scrape. -
for (url in target_urls): Perulangan untuk mengambil data
dari setiap halaman. - bind_rows(all_tables): Menggabungkan
semua data dari beberapa halaman menjadi satu data frame.
4. Scraping Data Non-Tabel (Teks, Judul, dan
Harga)
Selain tabel, kita juga bisa mengambil data non-tabel seperti teks,
judul artikel, atau harga produk.
# Baca HTML dari halaman produkpage <-read_html("https://example.com/produk")# Ambil teks dari elemen dengan class "product-title"product_title <- page %>%html_node(".product-title") %>%html_text(trim =TRUE)# Ambil harga produkproduct_price <- page %>%html_node(".product-price") %>%html_text(trim =TRUE)# Simpan dalam data framedata_produk <-data.frame(Title = product_title, Price = product_price)# Tampilkan hasilprint(data_produk)
Penjelasan kode: -
html_node(".product-title"): Mengambil elemen HTML dengan
class product-title. - html_text(trim = TRUE):
Mengambil teks bersih dari elemen HTML. -
data.frame(Title = product_title, Price = product_price):
Menyimpan hasil dalam bentuk data frame.
5. Menghindari Pemblokiran Saat Scraping
Beberapa situs melindungi diri dari scraping dengan cara memblokir
permintaan otomatis. Untuk menghindari pemblokiran, kita bisa:
Menambahkan jeda antar permintaan menggunakan
Sys.sleep().
Menggunakan User-Agent agar permintaan terlihat
seperti berasal dari browser asli.
for (url in target_urls) { page <-read_html(url, options ="H") # Simulasi header requestSys.sleep(2) # Tambahkan jeda 2 detik sebelum request berikutnya table <- page %>%html_node("table") %>%html_table(fill =TRUE)print(head(table))}
Kesimpulan
Dengan menggunakan rvest di R, kita dapat mengekstrak
berbagai jenis data dari website, baik dalam bentuk tabel maupun teks.
Teknik ini berguna untuk analisis data, riset pasar, dan pengumpulan
informasi dari berbagai sumber.