2015-04-02 4 views
9

Так что я не 100% уверен, что это возможно, но я нашел a good solution in Ruby и в python, поэтому мне было интересно, если что-то подобное может работать в R.Как скриншот веб-сайта с использованием R?

В принципе, учитывая URL, я хочу, чтобы сделать этот URL , сделайте снимок экрана рендеринга как .png и сохраните скриншот в указанной папке. Я хотел бы сделать все это на безголовом сервере Linux.

Мое лучшее решение здесь будет работать system звонки на инструмент вроде CutyCapt, или существует набор инструментов на основе R, который поможет мне решить эту проблему?

ответ

18

Вы можете делать скриншоты с помощью Selenium:

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() 

В более ранних версиях, вы были в состоянии сделать:

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

Вау, это именно то, что я искал. Спасибо! – Zach

+1

Вы можете использовать 'browseURL (tf)' для просмотра скриншотов в Linux – jsta

+1

Функция 'startServer()' не работает в версии 1.7.1. Они говорят: « Рекомендуемый способ запуска селенового сервера - через Docker. Альтернативно см. Функцию RSelenium :: rsDriver». – drmariod

2

Я не проверял, но этот проект с открытым исходным кодом как представляется, делает именно это: https://github.com/wch/webshot

Это легко:

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

Я пробовал это и получил ошибку с завиткой, неспособной аутентифицировать – jrzelling