Search code examples
rrcurlhttr

How can I screenshot a website using R?


So I'm not 100% sure this is possible, but I found a good solution in Ruby and in python, so I was wondering if something similar might work in R.

Basically, given a URL, I want to render that URL, take a screenshot of the rendering as a .png, and save the screenshot to a specified folder. I'd like to do all of this on a headless linux server.

Is my best solution here going to be running system calls to a tool like CutyCapt, or does there exist an R-based toolset that will help me solve this problem?


Solution

  • You can take screenshots using 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()
    

    In earlier versions, you were able to do:

    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