RSelenium::remDr$open() 实际上应该打开浏览器 window 吗?

Is RSelenium::remDr$open() actually suppose to open a browser window?

尝试利用 Selenium 和 R 进行一些网页抓取。我有很多问题,但需要解决从哪里开始的问题。这就是我认为我正在 运行 解决问题的地方...

这段代码实际上是用来打开浏览器的吗window?

RSelenium::remDr$open()

因为不是。我知道我有一些 docker/selenium/r 设置在工作,因为我可以 运行

remDr$screenshot(display = TRUE)

它会在视图中显示我所在的页面...但我无法打开浏览器 window。

设置:macOS 10.13.6; RStudio 1.3.959; docker 桌面版 2.3.0.3

可能与...有关 在终端中,如果我 运行:

docker run -d -p 5901:5900 -p 127.0.0.1:4445:4444 -- link http-server selenium/standalone-firefox-debug

我收到错误

docker: Error response from daemon: could not get container for http-server: No such container: http-server

也可能相关: 根据某处的一些说明,我已经下载了 selenium-server-standalone-3.141。59.jar - 但不知道如何处理它。

提前致谢。

终于成功了,我想我会分享有效的方法,因为有很多相同的问题没有回复。

所以要回答我的问题,是的,remDr$open() 应该打开一个浏览器,但是在您已经启动并 运行ning 的 vnc 容器中。这是我到达那里的过程。

首先,确保一切都是最新的。通过确保我的程序、包和库是最新的,可以解决很多问题。话虽如此,我在某处读到一个程序(不记得是哪个程序)与 Big Sur 有问题...

其次,此资源很好地解释了如何在 windows/linux machines 上设置 Docker+Selenium 以及如何使用 RSelenium 进行抓取。他在其中警告说,在下面的方法中设置端口存在一些安全问题。我不知道如何解决这个问题,所以请注意 运行 代码风险自负! https://www.youtube.com/watch?v=OxbvFiYxEzI&t=4838s

好的,现在开始吧...您需要在您的系统上安装应用程序 Docker 并 运行ning。在我的 mac 上,它叫做 Docker Desktop。

在 Docker 网站上,您使用 Docker Hub 找到您需要的 selenium 文件。它会给你一个 link 复制并粘贴到你的终端来下载文件。我使用了 standalone-firefox 和 standalone-firefox-debug。我还认为您需要 selenium-server-standalone-xxx.xx.jar 但我不记得是为了什么或过程。它位于我的 Rproject 文件夹中...不知道这是否重要。

如果您想查看带有页面的 window,您可以在终端中 运行:

docker run -d -p 4445:4444 -p 5901:5900 selenium/standalone-firefox-debug

这将在 Docker 中设置一个新项目。

您现在需要使用 vnc 创建一个容器以在其中查看浏览器。Mac 通过 ScreenShare 内置了一个容器,您可以轻松访问以下两种方式之一...cmd+k 并输入vnc://127.0.0.1:5901 或通过终端:

open vnc://127.0.0.1:5901

密码是“秘密”!!!!

现在你的 vnc 已经启动,运行你可以在 RStudio 中 运行 你的代码,是的,$open 将在 vnc/screen 共享 window 中打开 firefox!

library(RSelenium)

remDr <- remoteDriver(port=4445L) ##4445 for mac. windows can use 4444
remDr$open()

终于注意到了。一旦您测试了您的代码并且一切正常,建议您 运行 无头浏览器而不是调试浏览器。所以你的代码会工作,你只是不需要打开 vnc 和 watch,这会减慢一切。这是 运行 的代码:

docker run -d -p 4445:4444 selenium/standalone-firefox

仅供参考,您不再需要 docker 容器来 运行 Selenium(我相信这曾经是这种情况,但几年前的更新之一改变了这一点).您可以在 Mac 或 Windows.

上直接从 R-Studio 运行