Web Scraping dengan R: Tutorial Praktis
Hai Sobat Exsight! Selamat datang di artikel kami. Pada sesi kali ini, kita akan memasuki dunia web scraping dengan R, sebuah keterampilan penting di era data-driven saat ini. Web scraping memungkinkan kita untuk mengumpulkan data secara otomatis dan efisien dari berbagai situs web, yang merupakan sumber informasi yang sangat kaya. Dengan memanfaatkan R, bahasa pemrograman yang dikenal luas di kalangan data scientist dan data analis, proses pengambilan data ini menjadi lebih mudah dan terstruktur. R menyediakan berbagai library powerful, salah satunya adalah rvest, yang memungkinkan kita untuk mengekstrak data secara langsung dari halaman web dan mengubahnya menjadi format yang siap untuk dianalisis lebih lanjut.
Dalam artikel “Web Scraping dengan R: Panduan Praktis”, kami akan membimbing Anda melalui proses scraping data langkah demi langkah. Mulai dari memahami struktur HTML sebuah halaman, menggunakan library rvest untuk mengekstrak informasi penting, hingga bagaimana membersihkan dan menyimpan data yang diperoleh dalam format yang dapat digunakan untuk analisis lebih lanjut.
Dengan semakin bergantungnya dunia pada informasi berbasis web, kemampuan untuk mengekstrak data secara otomatis adalah keterampilan yang sangat berharga. Dengan R dan teknik web scraping ini, kita bisa mengakses data dari berbagai sumber, seperti situs e-commerce, portal berita, atau platform lainnya, yang membuka peluang untuk analisis yang lebih mendalam dan pengambilan keputusan yang lebih tepat. Jadi, mari kita mulai perjalanan ini dan eksplorasi lebih jauh bagaimana web scraping dapat membuka banyak peluang baru dalam analisis data Anda!
Pengertian Web Scraping
Sebelum melangkah lebih jauh, sebaiknya kita mengenal terlebih dahulu apa itu web scraping. Web scraping adalah metode yang digunakan untuk mengambil data tekstual atau informasi lain dari situs web secara otomatis. Proses ini memungkinkan kita untuk mengekstrak konten dari halaman web yang biasanya hanya dapat diakses secara manual. Dengan web scraping, kita bisa mendapatkan berbagai jenis data, seperti teks, gambar, tabel, atau bahkan informasi dinamis yang muncul setelah interaksi pengguna. Metode ini sangat berguna dalam berbagai aplikasi, mulai dari analisis data, pemantauan harga produk, hingga pengumpulan informasi berita secara real-time.
Penting untuk diingat bahwa meskipun web scraping adalah teknik yang sangat berguna, kita harus selalu memperhatikan aspek legal dan etika. Beberapa situs web mungkin memiliki ketentuan yang membatasi penggunaan scraping, atau bahkan melarangnya sama sekali. Oleh karena itu, sebelum melakukan scraping, pastikan kita mematuhi kebijakan yang ada di situs yang bersangkutan, serta tidak membebani server dengan permintaan yang berlebihan.
Kelebihan Web Scraping
Tentunya, selain memahami pengertian web scraping, kita juga perlu mengetahui kelebihan dari teknik ini agar lebih termotivasi dan memiliki arah yang jelas dalam penggunaannya. Web scraping bukan hanya tentang mengambil data dari situs web, tetapi juga membuka peluang besar untuk mengumpulkan informasi yang lebih terfokus, efisien, dan dapat digunakan untuk analisis yang lebih mendalam. Berikut adalah beberapa kelebihan web scraping:
1. Hemat Biaya
Web scraping lebih ekonomis dibandingkan dengan pengumpulan data secara manual. Selain itu, data yang bermanfaat adalah data yang terkini dan relevan, dan scraping memungkinkan Anda mendapatkan informasi tersebut secara efisien. Dengan scraping, Anda akan mendapatkan dataset yang selalu diperbarui dan sesuai dengan kebutuhan proyek Anda.
2. Menghemat Waktu
Teknologi web scraping mengotomatisasi proses pengumpulan data, menghilangkan kebutuhan untuk mencari data secara manual di halaman web. Daripada menghabiskan waktu berjam-jam untuk menelusuri informasi, web scraping memungkinkan Anda menghemat waktu dan tenaga. Waktu yang tersisa bisa digunakan untuk aktivitas lain yang lebih produktif.
3. Data Akurat dan Terkini
Web scraping menjamin akses terhadap data yang akurat dan terbaru. Misalnya, Anda dapat memantau perubahan harga kompetitor atau mengumpulkan data prospek di industri Anda. Selain itu, scraping membantu Anda mengidentifikasi tren dan memprediksi inovasi masa depan, menjadikannya alat yang sangat berguna di pasar yang berubah dengan cepat.
4. Membantu Pengambilan Keputusan
Mengambil keputusan bisa menjadi tantangan, tetapi memiliki data terkini dan kemampuan untuk melacak perubahan dari waktu ke waktu dapat mempermudah proses tersebut. Scraping memungkinkan pengumpulan data penting dan pengorganisasian informasi untuk mendukung pengambilan keputusan yang lebih baik.
5. Kustomisasi dan Fleksibilitas
Alat web scraping sangat fleksibel dan dapat disesuaikan dengan kebutuhan spesifik Anda. Anda dapat mengatur alat ini untuk mengekstrak data yang sesuai dengan proyek atau tugas tertentu, sehingga efisien dan tidak membuang waktu.
6. Skalabilitas
Salah satu keunggulan utama web scraping adalah skalabilitasnya. Baik untuk proyek kecil maupun besar, alat scraping dapat dengan mudah menyesuaikan ukuran dan kebutuhan proyek Anda, bahkan ketika proyek Anda berkembang.
7. Keunggulan Kompetitif
Web scraping memungkinkan Anda mendapatkan informasi terkini dengan cepat dan efisien. Hal ini memberikan keunggulan dibandingkan kompetitor yang mungkin tidak memiliki akses ke alat serupa. Dengan data ini, Anda dapat memperoleh wawasan tentang tren pasar, preferensi pelanggan, dan peluang bisnis baru.
8. Penelitian dan Analisis
Web scraping mempermudah pengumpulan data untuk penelitian akademis, analisis pasar, atau studi ilmiah. Dengan data yang terorganisir dan alat scraping yang terkadang bisa memproses data saat dikumpulkan, para peneliti dapat memperoleh hasil yang lebih bermakna untuk mendukung temuan mereka.
9. Otomasi Tugas Berulang
Web scraping sangat cocok untuk mengotomasi tugas-tugas yang sering dilakukan, seperti pengumpulan data yang rutin. Proses otomatis ini menghemat waktu Anda sehingga bisa fokus pada pekerjaan lain yang lebih kompleks dan bernilai tinggi.
10. Integrasi dengan Sistem Lain
Web scraping dapat diintegrasikan dengan mudah ke dalam sistem yang sudah ada, seperti database, sistem intelijen bisnis, atau platform analitik. Dengan ini, data hasil scraping dapat langsung digunakan untuk analisis lebih lanjut atau visualisasi.
Tutorial Web Scraping
Pada tahap ini kita akan melakukan scraping pada web YouTube Trends Indonesia. Situs ini menyajikan informasi mengenai tren video YouTube yang sedang populer di Indonesia.
Tahap-tahap scraping YouTube Trends Indonesia meliputi pengambilan data HTML dari situs serta identifikasi elemen penting seperti judul video, jumlah views, likes, komentar, nama pengunggah, dan waktu unggah. Setelah itu, data yang diperoleh dibersihkan, disimpan dalam format terstruktur.
Syntax Lengkap
Berikut ini adalah sintaks lengkap untuk melakukan scraping pada situs YouTube Trends Indonesia yang diketik di R Markdown.
```{r}
library(rvest)
library(tidyverse)
url<-"https://yttrendz.com/youtube-trends/indonesia"
yttrends<-read_html(url)
yt<-yttrends %>% html_nodes(".feed-content") %>% html_text2() %>% str_split("\n")
urutan <- yttrends %>% html_nodes(".feed-count") %>% html_text2()
data<-data.frame(URUTAN=0,JUDUL=0,VIEWS=0,LIKES=0,COMMENTS=0,UPLOADBY=0,UPLOADTIME=0)
for (i in 1:10){
data[i,1]<-as.numeric(urutan[i])
data[i,2]<-yt[[i]][1]
data[i,3]<-yt[[i]][2]
data[i,4]<-yt[[i]][3]
data[i,5]<-yt[[i]][4]
data[i,6]<-yt[[i]][5]
data[i,7]<-yt[[i]][7]
}
data$VIEWS<-gsub("Views", "", data$VIEWS)
data$VIEWS<-gsub("[^\\[\\]\\.[:^punct:]]", "", data$VIEWS, perl = TRUE)
data$VIEWS<-gsub("\\s", "", data$VIEWS)
data$VIEWS<-gsub("^+ Views", "\\1", data$VIEWS)
data$LIKES<-gsub("Likes", "", data$LIKES)
data$LIKES<-gsub("[^\\[\\]\\.[:^punct:]]", "", data$LIKES, perl = TRUE)
data$LIKES<-gsub("\\s", "", data$LIKES)
data$LIKES<-gsub("^+ Likes", "\\1", data$LIKES)
data$COMMENTS<-gsub("Comments", "", data$COMMENTS)
data$COMMENTS<-gsub("[^\\[\\]\\.[:^punct:]]", "", data$COMMENTS, perl = TRUE)
data$COMMENTS<-gsub("\\s", "", data$COMMENTS)
data$COMMENTS<-gsub("^Comments", "\\1", data$COMMENTS)
data$UPLOADTIME<-gsub(".*on","",data$UPLOADBY)
data$UPLOADBY<-gsub("\\son.+$", "", data$UPLOADBY)
data$UPLOADBY<-gsub("Upload by : ", "\\1", data$UPLOADBY)
data$WAKTUSCRAPE<-Sys.time()
View(data)
```
Berikut ini adalah penjelasan per tahapnya.
Tahap 1 : Library yang Digunakan
Library yang digunakan untu scraping ada 2 yaitu library rvest dan tidyverse
install.packages("rvest")
install.packages("tidyverse")
library(rvest)
library(tidyverse)
- Library rvest adalah library di R yang digunakan untuk melakukan web scraping, yaitu proses pengambilan data dari halaman web. Library ini mempermudah interaksi dengan elemen-elemen HTML di situs web untuk mengumpulkan informasi yang diinginkan secara terstruktur.
- Library tidyverse adalah kumpulan library di R yang dirancang untuk membantu manipulasi data dengan cara yang efisien, konsisten, dan mudah dipahami. Paket ini mencakup alat untuk membaca, membersihkan, memanipulasi, dan memvisualisasikan data.
Tahap 2: Mengambil Data dari URL
url <- "https://yttrendz.com/youtube-trends/indonesia"
yttrends <- read_html(url)
- url adalah variabel yang menyimpan alamat (Uniform Resource Locator) dari sebuah situs web. Dalam konteks web scraping, URL ini menjadi sumber utama dari mana data akan diambil
- Fungsi read_html() dari library rvest digunakan untuk membaca dan mengunduh struktur HTML dari situs web yang ditentukan oleh variabel
url
.
Tahap 3: Menangkap Elemen HTML
1. Menangkap Elemen HTML
Elemen HTML pada sebuah halaman web biasanya diorganisir menggunakan struktur tag seperti <div>, <span>, <p>, dan sebagainya. Untuk mengambil data spesifik, kita perlu mengidentifikasi elemen-elemen ini dengan selector CSS atau XPath. Dalam kasus ini, kita menggunakan CSS Selector untuk menangkap elemen-elemen yang relevan, yaitu:
- .feed-content: Elemen berisi deskripsi konten video tren.
- .feed-count: Elemen berisi nomor urutan dari setiap video tren.
2. Kode untuk Menangkap Elemen HTML
Kode ini digunakan untuk mengekstrak elemen-elemen HTML yang relevan:
yt <- yttrends %>% html_nodes(".feed-content") %>% html_text2() %>% str_split("\n")
urutan <- yttrends %>% html_nodes(".feed-count") %>% html_text2()
- html_nodes : Fungsi ini digunakan untuk memilih elemen-elemen HTML tertentu berdasarkan selector CSS yang diberikan.
- html_text2(): Setelah elemen HTML dipilih, fungsi ini digunakan untuk menangkap teks di dalam elemen tersebut. Fungsi ini membersihkan teks dari spasi atau karakter kosong yang tidak diperlukan.
- str_split(“\n”): Fungsi ini memisahkan teks menjadi beberapa bagian berdasarkan baris (newline character
\n
). Digunakan jika data dalam elemen HTML berisi banyak baris teks.
3. Penjelasan Selector CSS
- .feed-content:
- Selector CSS ini digunakan untuk memilih elemen dengan atribut class
.feed-content:
. - Dalam konteks web, elemen ini biasanya menyimpan informasi deskriptif tentang video tren seperti judul, jumlah views, likes, dan komentar.
- Selector CSS ini digunakan untuk memilih elemen dengan atribut class
- .feed-count
- Selector ini digunakan untuk memilih elemen dengan atribut class
.feed-count
. - Elemen ini biasanya berisi nomor urutan tren (contoh: 1, 2, 3, …).
- Selector ini digunakan untuk memilih elemen dengan atribut class
4. Tahapan Memilih Elemen HTML
Berikut adalah langkah-langkah memilih elemen HTML yang relevan:
a. Inspeksi Elemen di Browser:
- Klik kanan pada elemen yang diinginkan (misalnya, deskripsi video tren) di halaman web, lalu pilih “Inspect”.
- Ini akan membuka alat pengembang (Developer Tools) dengan tampilan struktur HTML.
b. Identifikasi Elemen:
Setelah membuka Developer Tools, cari elemen yang berisi informasi yang ingin Anda ambil. Pastikan Anda mengidentifikasi elemen tersebut berdasarkan atribut seperti id
, class
, atau tag yang sesuai.
c. Uji Selector CSS:
Gunakan browser Developer Tools untuk memastikan selector CSS yang Anda gunakan benar:
- Klik ikon Select Element di Developer Tools.
- Sorot elemen yang diinginkan untuk melihat selector CSS seperti .
feed-content
dan.feed-count
d. Gunakan Selector di R:
- Implementasikan selector CSS ke dalam kode R dengan html_nodes(). Contoh:
yt<-yttrends %>% html_nodes(".feed-content") %>% html_text2() %>% str_split("\n")
urutan <- yttrends %>% html_nodes(".feed-count") %>% html_text2()
Tahap 4: Membuat Data Frame
data <- data.frame(URUTAN = 0, JUDUL = 0, VIEWS = 0, LIKES = 0, COMMENTS = 0, UPLOADBY = 0, UPLOADTIME = 0)
Membuat template data.frame
dengan kolom:
URUTAN
: Posisi video pada tren.JUDUL
: Judul video.VIEWS
: Jumlah views.LIKES
: Jumlah likes.COMMENTS
: Jumlah komentar.UPLOADBY
: Pengunggah video.UPLOADTIME
: Waktu unggah.
Tahap 5: Memasukkan Data ke Data Frame
for (i in 1:10) {
data[i, 1] <- as.numeric(urutan[i])
data[i, 2] <- yt[[i]][1]
data[i, 3] <- yt[[i]][2]
data[i, 4] <- yt[[i]][3]
data[i, 5] <- yt[[i]][4]
data[i, 6] <- yt[[i]][5]
data[i, 7] <- yt[[i]][7]
}6. Membersihkan Data
for (i in 1:10): Loop untuk mengambil 10 video tren teratas. data[i, j]: Memasukkan data sesuai indeks kolom:
- Kolom ke-1 (URUTAN): Nomor urutan video.
- Kolom ke-2 s.d. 7: Informasi yang diambil dari elemen teks HTML.
Tahap 6: Membersihkan Data
a) Views
data$VIEWS <- gsub("Views", "", data$VIEWS)
data$VIEWS <- gsub("[^\\[\\]\\.[:^punct:]]", "", data$VIEWS, perl = TRUE)
data$VIEWS <- gsub("\\s", "", data$VIEWS)
data$VIEWS <- gsub("^+ Views", "\\1", data$VIEWS)
gsub()
digunakan untuk:
- Menghapus kata “Views“.
- Membersihkan karakter yang tidak diinginkan (angka, spasi).
- Menjaga format angka agar rapi.
b) Likes dan Comments
data$LIKES<-gsub("Likes", "", data$LIKES)
data$LIKES<-gsub("[^\\[\\]\\.[:^punct:]]", "", data$LIKES, perl = TRUE)
data$LIKES<-gsub("\\s", "", data$LIKES)
data$LIKES<-gsub("^+ Likes", "\\1", data$LIKES)
data$COMMENTS<-gsub("Comments", "", data$COMMENTS)
data$COMMENTS<-gsub("[^\\[\\]\\.[:^punct:]]", "", data$COMMENTS, perl = TRUE)
data$COMMENTS<-gsub("\\s", "", data$COMMENTS)
data$COMMENTS<-gsub("^Comments", "\\1", data$COMMENTS)
Proses untuk kolom LIKES dan COMMENTS serupa dengan VIEWS, hanya mengganti kata kunci seperti “Likes” atau “Comments“.
c) Upload Time dan By
data$UPLOADTIME <- gsub(".*on", "", data$UPLOADBY)
data$UPLOADBY <- gsub("\\son.+$", "", data$UPLOADBY)
data$UPLOADBY <- gsub("Upload by : ", "\\1", data$UPLOADBY)
UPLOADTIME: Mengambil waktu unggah setelah kata “on”. UPLOADBY: Membersihkan nama pengunggah dengan:
- Menghapus informasi waktu.
- Menghilangkan kata “Upload by :”.
Tahap 7: Menambahkan Waktu Pengambilan Data
data$WAKTUSCRAPE <- Sys.time()
Sys.time(): Menambahkan timestamp saat proses scraping dilakukan.
Tahap 8: Output Data
Menampilkan hasil akhir berupa data frame berisi 10 Trend YouTube di Indonesia.
View(data)
Referensi
Alfanugraha, A. (2020). rvest: Web Scraping 101 . RPubs. https://rpubs.com/alfanugraha/sta1562-p14
Carina, F. M., Salma, A., Permana, D., & Martha, Z. (2024). Sentiment Analysis of X Application Users on the Conflict Between Israel and Palestine Using Support Vector Machine Algorithm. UNP Journal of Statistics and Data Science, 2(2), 204-212.
HasData. (n.d.). Pros and cons of web scraping. diakses pada November 21, 2024, dari https://hasdata.com/blog/pros-and-cons-of-web-scraping.
Putra, E. A., Alam, S., & Kurniawan, I. (2024). Analisis Sentimen Pengguna MY JNE Menggunakan Algoritma Naïve Bayes. Jurnal Teknologi Informatika dan Komputer, 10(2), 650-666.
Sampai di sini dulu penjelasan terkait Web Scraping dengan R: Tutorial Praktis. Apabila sobat Exsight masih ada yang dibingungkan terkait pembahasan pada artikel ini, bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya. See you in the next article yaa!
Web Scraping dengan R: Tutorial Praktis Read More »