2015-04-02 20 views
9

Vì vậy, tôi không chắc chắn 100% này là có thể, nhưng tôi thấy a good solution in Ruby và trong python, vì vậy tôi đã tự hỏi nếu một cái gì đó tương tự có thể làm việc trong R.Tôi có thể chụp màn hình một trang web bằng cách sử dụng R như thế nào?

Về cơ bản, đưa ra một URL, tôi muốn làm cho URL , chụp ảnh màn hình hiển thị dưới dạng tệp .png và lưu ảnh chụp màn hình vào thư mục được chỉ định. Tôi muốn làm tất cả điều này trên một máy chủ Linux không đầu.

Giải pháp tốt nhất của tôi ở đây là chạy các cuộc gọi system đến một công cụ như CutyCapt hoặc không tồn tại bộ công cụ dựa trên R sẽ giúp tôi giải quyết vấn đề này?

Trả lời

18

Bạn có thể chụp ảnh màn hình sử dụng 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() 

Trong các phiên bản trước đó, bạn đã có thể làm:

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, đó chính xác là những gì tôi đang tìm kiếm. Cảm ơn bạn! – Zach

+1

Bạn có thể sử dụng 'browseURL (tf)' để xem ảnh chụp màn hình trên Linux – jsta

+1

Hàm 'startServer()' không tồn tại trong phiên bản 1.7.1. Họ nói "Cách được khuyến nghị để chạy máy chủ selen là qua Docker. Hoặc xem chức năng RSelenium :: rsDriver." – drmariod

2

tôi đã không kiểm tra nó, nhưng dự án mã nguồn mở này dường như làm chính xác điều đó: https://github.com/wch/webshot

Thật dễ dàng như:

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

Tôi đã thử điều này và có lỗi với curl không thể xác thực – jrzelling

Các vấn đề liên quan