У меня работает следующее.
Создайте экземпляр EC2 Ubuntu с установленным Docker.Я не использовал Windows.
Запустите образ док-сервера селена на экземпляре EC2 следующим образом
docker run -d -p 4445:4444 selenium/standalone-firefox:2.53.0
Убедитесь, что порт 4445 открыт с IP-адреса, на котором вы запускаете R, создавсоответствующая запись в группе безопасности.
На моем настольном компьютере, который может видеть экземпляр EC2, используйте этот код R для подключения ...
library(RSelenium)
remDr <- remoteDriver(remoteServerAddr = "ec2-xxx.eu-west-1.compute.amazonaws.com", port = 4445L)
remDr$open()
#[1] "Connecting to remote server"
#$applicationCacheEnabled
#[1] TRUE
#$rotatable
#[1] FALSE
#$handlesAlerts
#[1] TRUE
#...
Обратите внимание, что адрес экземпляра EC2"ec2 ...".Этот адрес доступен из консоли AWS и является общедоступным DNS-именем экземпляра.Если вы используете R на другом компьютере AWS, вам, вероятно, потребуется использовать частный адрес DNS.
[Отредактировано, чтобы добавить инструкции для запуска Rstudio в облаке]
Найти IP-адрес контейнера Selenium.Один из способов - войти в него следующим образом:
docker exec -it <nameofthecontainer> bash
hostname -i
exit
Чтобы запустить Rstudio на той же машине EC2, что и Selenium, можно использовать Docker.Хорошее изображение rocker/rstudio
.
Выполните следующие действия.
docker run -d -p 8787:8787 -e PASSWORD=<password> --name rstudio rocker/rstudio
Убедитесь, что порт 8787 открыт для вас, откуда вы хотите получить доступ к Rstudio.Для этого добавьте записи в группу безопасности для экземпляра.
Чтобы установить RSelenium в Docker-контейнер Rstudio, выполните следующие действия.
docker exec rstudio bash
apt-get update
apt-get install -y libxml2-dev
exit
Найдите URL-адрес графического интерфейса Rstudio - itбудет выглядеть примерно так:
http://ec2-xxx:8787
Имя пользователя - rstudio, а пароль - тот, который вы указали при запуске контейнера.
Установите пакет RSelenium из Rstudio.
install.packages("RSelenium")
Наконец, запустите код R для доступа к экземпляру Selenium.
library(RSelenium)
remDr <- remoteDriver(remoteServerAddr = "IP address of the Selenium container", port = 4445L)
remDr$open()