Saya tahu ada banyak sumber/pertanyaan yang berhubungan dengan subjek ini, tetapi saya telah mencoba selama berhari-hari dan sepertinya tidak dapat menemukan jawabannya. Saya memiliki situs web yang di-scrap sebelumnya tetapi yang ini menyebabkan masalah bagi saya.

Situs web: njaqinow.net

Yang ingin saya hapus: Saya ingin mengikis tabel di bawah tab "Status Saat Ini"->"Pencemar". Saya ingin ini tergores setiap kali tabel diperbarui sehingga saya dapat menggunakan informasi ini di dalam aplikasi mengkilap yang saya buat.

enter image description here

Apa yang telah saya coba: Saya telah mencoba banyak pendekatan berbeda, tetapi untuk kesederhanaan, saya akan menunjukkan pendekatan terbaru saya:

    library("rvest")
url<-"http://www.njaqinow.net"
webpage <- read_html(url)

test<-webpage%>%
  html_node("table")%>%
  html_table()

Dugaan saya adalah bahwa ini jauh lebih rumit daripada yang saya pikirkan karena menurut saya meja itu ada di dalam bingkai. Saya bukan pro javascript/HTML jadi saya tidak sepenuhnya yakin. Bantuan/bimbingan apa pun akan sangat dihargai!

1
NBE 2 April 2019, 20:03

1 menjawab

Jawaban Terbaik

Saya dapat menyumbangkan solusi dengan RSelenium. Saya akan menunjukkan cara menavigasi ke tabel itu dan mendapatkan isinya. Untuk memformat konten tabel, saya memberikan tautan ke pertanyaan lain, tetapi tidak akan berada dalam cakupan jawaban ini.

Saya pikir Anda memiliki dua tantangan. Beralih ke dalam bingkai dan beralih di antara bingkai. Beralih ke bingkai dilakukan oleh remDr$switchToFrame().

Beralih antar frame dibahas di sini: https://github.com/ropensci/RSelenium/issues/155 . Dalam kasus Anda:

remDr$switchToFrame("contents")
...
remDr$switchToFrame(NA)
remDr$switchToFrame("contentsi")

Kode lengkap akan membaca:

remDr$navigate("http://www.njaqinow.net")
frame1 <- remDr$findElement("xpath", "//frame[@id = 'contents']")
remDr$switchToFrame(frame1)
remDr$findElement("xpath", "//*[text() = 'Current Status']")$clickElement()
remDr$findElement("xpath", "//*[text() = 'POLLUTANTS']")$clickElement()

remDr$switchToFrame(NA)
remDr$switchToFrame("contentsi")
table <- remDr$findElement("xpath", "//table[@id = 'C1WebGrid1']")
table$getElementText()

Untuk memformat tabel Anda bisa melihat di sini: mengikis tabel dengan R menggunakan RSelenium

2
Tonio Liebrand 5 April 2019, 12:12