我的最终目标是能够使用rselenium通过rstudio我的 EC2 实例 (AWS)。
为此,我读到建议在虚拟机上使用和安装 docker。所以我遵循了 John D Harrison 给出的所有步骤: https://rpubs.com/johndharrison/RSelenium-Docker
一切都很顺利,除了最后我输入 RStudio
时。在我的EC2
上实例。
因为当我尝试连接到远程服务器时,我收到以下错误:
library(RSelenium)
remDr <- remoteDriver(remoteServerAddr = "192.168.99.100", port = 4445L)
remDr$open()
1 "Connecting to remote server" Error in checkError(res) : Undefined error in httr call. httr output: Timeout was reached: Connection timed out after 10001 milliseconds
我按照教程中给出的具体步骤进行操作,所以我真的不知道出了什么问题。
非常感谢任何帮助!
M.
最佳答案
以下内容对我有用。
创建安装了 Docker 的 EC2 Ubuntu 实例。我没有使用 Windows。
在 EC2 实例上运行 selenium docker 镜像,如下
docker run -d -p 4445:4444 selenium/standalone-firefox:2.53.0
通过在安全组中创建适当的条目,确保从运行 R 的 IP 地址打开端口 4445。
在我可以看到 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 名称。如果您碰巧在另一台 AWS 计算机上运行 R,那么您可能需要使用私有(private) DNS 地址。
[编辑以添加在云中运行 Rstudio 的说明]
查找 Selenium 容器的 IP 地址。一种方法是按如下方式登录
docker exec -it <nameofthecontainer> bash
hostname -i
exit
要在与 Selenium 相同的 EC2 计算机上运行 Rstudio,一种选择是使用 Docker。一个好的图片是rocker/rstudio
。
执行以下操作。
docker run -d -p 8787:8787 -e PASSWORD=<password> --name rstudio rocker/rstudio
确保端口 8787 对您要访问 Rstudio 的位置开放。在实例的安全组中添加条目来执行此操作。
要在 Rstudio docker 容器中安装 RSelenium,请执行以下操作。
docker exec rstudio bash
apt-get update
apt-get install -y libxml2-dev
exit
找到 Rstudio GUI 的 URL - 它会是这样的
http://ec2-xxx:8787
用户名是 rstudio,密码是您启动容器时指定的任何内容。
从 Rstudio 安装 RSelenium 软件包。
install.packages("RSelenium")
最后运行R代码来访问Selenium实例。
library(RSelenium)
remDr <- remoteDriver(remoteServerAddr = "IP address of the Selenium container", port = 4445L)
remDr$open()
关于EC2 上的 RSelenium 和 Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53916609/