[1] "xml_document" "xml_node"
rvest:Prodi Statistika dan Sains Data IPB University
singkatan dari HyperText Markup Language
<html>
<head>
<title>Page title</title>
</head>
<body>
<h1 id='first'>A heading</h1>
<p>Some text & <b>some bold text.</b></p>
<img src='myimg.png' width='100' height='100'>
</body>HTML memiliki struktur hirarki yang dengan disusun oleh berbagai macam elemen yang diawali dengan:
<tag>),id="first"),</tag>),rvestScraping proses diawal dengan read_html(). Nilai kembalian dari perintah tersebut adalah objek dalam bentuk dokumen XML yang nanti akan dimanipulasi dengan fungsi pada rvest
[1] "xml_document" "xml_node"
rvest juga menyediakan fungsi untuk membuat dokumen XML dari suatu HTML
CSS adalah singkatan dari Cascading Style Sheets yang digunakan sebagai alat untuk mendefinisikan tampilan visual pada dokumen HTML
CSS menyediakan bahasa miniatur untuk memilih elemen pada suatu halaman web yang dikenal dengan istilah CSS selectors. Selektor ini bisa saja kompleks tetapi akan digunakan secara sederhana pada rvest. Empat hal penting pada selektor:
p: memilih semua elemen tag <p>.title: memilih semua elemen dengan class titlep.special: memilih semua elemen tag <p> dengan class special#title: memilih elemen dengan atribut id yang berisi title. Atribut id harus unik di dalam suatu dokumen HTML, sehingga hanya akan ada satu elemen yang terpilih{xml_nodeset (2)}
[1] <p id="first">This is a paragraph</p>
[2] <p class="important">This is an important paragraph</p>
{xml_nodeset (1)}
[1] <p class="important">This is an important paragraph</p>
html <- minimal_html("
<ol>
<li>apple & pear</li>
<li>banana</li>
<li>pineapple</li>
</ol>
")
html %>%
html_elements("li") %>%
html_text2()[1] "apple & pear" "banana" "pineapple"
Contoh atribut yang digunakan sebagai informasi destinasi suatu alamat dan gambar.
html_element vs html_elementshtml <- minimal_html("
<ul>
<li><b>C-3PO</b> is a <i>droid</i> that weighs <span class='weight'>167 kg</span></li>
<li><b>R2-D2</b> is a <i>droid</i> that weighs <span class='weight'>96 kg</span></li>
<li><b>Yoda</b> weighs <span class='weight'>66 kg</span></li>
<li><b>R4-P17</b> is a <i>droid</i></li>
</ul>
")[1] "C-3PO" "R2-D2" "Yoda" "R4-P17"
GitHub Actions adalah platform CI/CD (continuous integration and continuous delivery) yang memungkinkan pengguna mengotomatisasi pengembangan tools dengan membuat suatu workflow.
GitHub Actions menyediakan mesin virtual Linux, Windows, dan MacOS untuk mengeksekusi workflow tersebut.
name: Daily Scraping Covid
on:
schedule:
- cron: '*/7 * * * *' # every 7 minutes
jobs:
covid-scrape:
runs-on: macos-latest
env:
ATLAS_URL: ${{ secrets.ATLAS_URL }}
ATLAS_COLLECTION: ${{ secrets.ATLAS_COLLECTION }}
ATLAS_DB: ${{ secrets.ATLAS_DB }}
steps:
- name: Start time
run: echo "$(date) ** $(TZ=Asia/Jakarta date)"
- uses: actions/checkout@v3
- uses: r-lib/actions/setup-r@v2
- name: Install mongolite package
run: Rscript -e 'install.packages("mongolite", dependencies = TRUE)'
- name: Install rvest package
run: Rscript -e 'install.packages("rvest", dependencies = TRUE)'
- name: Scrape data
run: Rscript scrape.Rrvest & mongolitelibrary(rvest)
library(mongolite)
url <- "https://www.worldometers.info/coronavirus/country/indonesia/"
html <- read_html(url)
count <- html_text(html_nodes(html, ".maincounter-number"), trim=T)
atlas <- mongo(
collection = Sys.getenv("ATLAS_COLLECTION"),
db = Sys.getenv("ATLAS_DB"),
url = Sys.getenv("ATLAS_URL")
)
newcovid <- data.frame(no = atlas$count() + 1, cases = count[1], deaths = count[2], recovered = count[3])
atlas$insert(newcovid)
atlas$disconnect()Membuat scraping bot terjadwal pada situs web yang sudah dipilih sebelumnya menggunakan rvest dan GitHub Actions
Menyimpan hasil scraping tersebut disimpan ke dalam MongoDB Cloud Atlas
Membuat narasi tentang tugas yang dikerjakan pada akun GitHub
(Opsional) Visualisasi hasil dalam bentuk tabel, grafik, laporan di RPubs, atau ShinyApps
Kriteria penilaian:
Projek akan dinilai pada hari Jumat, 16 Juni 2023