Scraping Anime

.
.

[Fida Fariha Amatullah] [G1501231064]

Pendahuluan

Situs Samehadaku adalah situs yang digunakan banyak orang untuk menyaksikan anime dengan subtitle Indonesia terbaru, dengan kualitas video yang sudah HD. Situs ini menawarkan koleksi anime yang lengkap, sehingga menjadi favorit banyak orang.

.
.

Kali ini akan dilakukan scrapin website https://samehadaku.email/daftar-anime-2/?order=latest&status=&type= dimana website ini menampilkan Judul Anime, Rating, Jenis Penanyangan, serta Genre. Anime-Anime seperti Naruto, Kuroko No Basuke, dan sebagainya tersedia di website ini.

  • Scrapping data menggunakan package R yaitu rvest dengan pendukung package lainnya seperti tidyverse,dplyr,tidyr dan xml2
  • RDBMS yang digunakan adalah MongoDB
  • Connect MongoDB ke R menggunakan bantuan package mongolite

MongoDB Atlas

library(mongolite)
## Warning: package 'mongolite' was built under R version 4.3.3
# nama koleksi
collection <- "Anime"
# nama database
db <- "scraping"
# koneksi ke mongoDB
url <- "mongodb+srv://fidafarihaafida:22Mei2001@cluster0.8nxgwh0.mongodb.net/"
Anime <- mongo(collection=collection, db=db, url=url)

Jumlah Data yang telah di Scraping

Anime$count()
## [1] 390

Menampilkan Data dan Menyimpan Data

Data_Anime <- Anime$find('{}')
head(Data_Anime)
##                                         Judul Rating Penayangan_new_col   Genre
## 1 Kimetsu no Yaiba Season 4 Hashira Geiko-hen   8.28        TV, Ongoing  Action
## 2              Boku no Hero Academia Season 7   8.00        TV, Ongoing  Action
## 3            Kuroshitsuji: Kishuku Gakkou-hen   8.09        TV, Ongoing  Action
## 4                 Karasu wa Aruji wo Erabanai   7.00        TV, Ongoing Fantasy
## 5                                The New Gate   6.60        TV, Ongoing  Action
## 6                                Kaijuu 8-gou   8.20        TV, Ongoing  Action

Visualisasi Data

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(ggeasy)
## Warning: package 'ggeasy' was built under R version 4.3.3

Jumlah Film Berdasarkan Genre

genre_count <- Data_Anime %>%
  count(Genre, sort = TRUE)
ggplot(genre_count, aes(x = reorder(Genre, n), y = n, fill = Genre)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = n), hjust = -0.3, size = 3.5) +
  coord_flip() +
  labs(title = "Jumlah Film Berdasarkan Genre", x = "Genre", y = "Jumlah Film") +
  theme_minimal() +
  theme(legend.position = "none")

Jumlah Film Berdasarkan Jenis Penayangan

penanyangan_count <- Data_Anime %>%
  count(Penayangan_new_col, sort = TRUE)
ggplot(penanyangan_count, aes(x = reorder(Penayangan_new_col, n), y = n, fill = Penayangan_new_col)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = n), hjust = -0.3, size = 3.5) +
  coord_flip() +
  labs(title = "Jumlah Film Berdasarkan Penayangan", x = "Penayangan", y = "Jumlah Film") +
  theme_minimal() +
  theme(legend.position = "none")

Anime dengan Rating Terendah dan Rating Tertinggi

# Temukan anime dengan rating terendah
anime_terendah <- Anime$find('{"Rating": {"$exists": true}}', sort='{"Rating": 1}', limit=1)

# Temukan anime dengan rating tertinggi
anime_tertinggi <- Anime$find('{"Rating": {"$exists": true}}', sort='{"Rating": -1}', limit=1)
rbind(anime_terendah, anime_tertinggi)
##                       Judul Rating Penayangan_new_col           Genre
## 1 Bokura no Ameiro Protocol   0.00      TV, Completed Actionvidiogame
## 2         Sousou no Frieren   9.32      TV, Completed       Adventure