2015-04-02 15 views
9

quindi non sono sicuro al 100% questo è possibile, ma ho trovato a good solution in Ruby e in python, quindi mi chiedevo se qualcosa di simile potrebbe funzionare in R.Come posso effettuare uno screenshot di un sito Web utilizzando R?

In sostanza, dato un URL, voglio rendere tale URL , prendi uno screenshot del rendering come .png e salva lo screenshot in una cartella specificata. Mi piacerebbe fare tutto questo su un server Linux senza testa.

È la mia soluzione migliore che eseguirà le chiamate system a uno strumento come CutyCapt oppure esiste un set di strumenti basato su R che mi aiuterà a risolvere questo problema?

risposta

18

È possibile prendere screenshot utilizzando Selenio:

library(RSelenium) 
rD <- rsDriver(browser = "phantomjs") 
remDr <- rD[['client']] 
remDr$navigate("http://www.r-project.org") 
remDr$screenshot(file = tf <- tempfile(fileext = ".png")) 
shell.exec(tf) # on windows 
remDr$close() 
rD$server$stop() 

Nelle versioni precedenti, sono stati in grado di fare:

library(RSelenium) 
startServer() 
remDr <- remoteDriver$new() 
remDr$open() 
remDr$navigate("http://www.r-project.org") 
remDr$screenshot(file = tf <- tempfile(fileext = ".png")) 
shell.exec(tf) # on windows 
+0

Wow, questo è esattamente quello che stavo cercando. Grazie! – Zach

+1

Puoi usare 'browseURL (tf)' per visualizzare lo screenshot su Linux – jsta

+1

La funzione 'startServer()' è defunta nella versione 1.7.1. Dicono "Il modo consigliato per eseguire un server di selenio è tramite Docker. In alternativa, vedere la funzione RSelenium :: rsDriver." – drmariod

2

non ho ancora testato, ma questo progetto open source sembra fare esattamente questo: https://github.com/wch/webshot

È facile come:

library(webshot) 
webshot("https://www.r-project.org/", "r.png") 
+0

Ho provato questo e ho ottenuto un errore con curl non in grado di autenticare – jrzelling

Problemi correlati