MacOS Sierra 10.12.4。 Chrome 63(最新版)。 R 1.1.383。
我使用RSelenium来抓取网页数据。我可以使用远程驱动程序提取数据,但实际的网页浏览器不会弹出供我查看。这使我很难调试一些棘手的网络拉动。 This is an example video of what I want to happen.用户可以直观地看到他在浏览器中所做的更改 - 本文的目的是找出在运行代码时无法直观地看到浏览器的原因。
这是我从RSelenium获取的流程示例。
来自终端:
(name)$ docker run -d -p 4567:4444 selenium/standalone-chrome
(name)$ docker ps
输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8de3a1cbc777 selenium/standalone-chrome "/opt/bin/entry_po..." 5 minutes ago Up 5 minutes 0.0.0.0:4567->4444/tcp wizardly_einstein
在R
library(RSelenium)
library(magrittr)
library(stringr)
library(stringi)
library(XML)
remDr <- rsDriver(port = 4567L, browser = "chrome")
remDr$client$open()
remDr$client$navigate("https://shiny.rstudio.com/gallery/datatables-options.html")
webElems <- remDr$client$findElements("css selector", "iframe")
remDr$client$switchToFrame(webElems[[1]])
elems <- remDr$client$findElements("css selector", "#showcase-app-container > nav > div > ul li")
unlist(lapply(elems, function(x) x$getElementText()))
[1] "Display length" "Length menu" "No pagination" "No filtering" "Function callback"
这是我确认RSelenium正常运行。然而,这一切都在发生,盲目地#34; - 我无法看到发生了什么。在一个复杂的网络拉动中,我试图执行(隐藏在凭证后面,所以我不能给出一个例子),迭代后找不到某些元素,即使我知道它们在页面上。能够看到浏览器可以让我轻松调试代码。
不确定这是否意味着什么,但它看起来并不像驱动程序附加到IP地址:
(name)$ docker-machine ip
Error: No machine name(s) specified and no "default" machine exists
我还需要下载其他内容才能直观地看到网络驱动程序吗?提前谢谢。
答案 0 :(得分:2)
我不确定该视频中的确切行为,但我总是使用phantomjs无头浏览器并查看屏幕截图。这段代码会产生我正在谈论的内容:
library(RSelenium)
#this sets up the phantomjs driver
pjs <- wdman::phantomjs()
#open a connection to it
dr <- rsDriver(browser = 'phantomjs')
remdr <- dr[['client']]
#go to the site
remdr$navigate("https://stackoverflow.com/")
#show browser screenshot in viewer
remdr$screenshot(TRUE)