我用 R 写了一个机器人来从网络服务器上抓取数据。该机器人是使用 RSelenium 用 R 语言编写的。我写了两个版本,一个是使用 chrome 的独立 selenium,另一个是直接使用 phantomjs。当我手动启动这两个版本时,它们在 Linux 服务器 (OpenSuSE) 上都运行良好。但是,当我使用 cron 启动它们时,它们都在服务器上失败。在后一种情况下,当我尝试创建驱动程序时会遇到这样的错误:
Selenium server signals port = 4567 is already in use.
端口正常,正在按预期监听。只有当我通过 cron 启动脚本时才会发生这种情况。
您能否提示我哪里出了问题,我该如何解决?非常感谢。
我尝试了其他端口和很多 R 的东西。我想问题出在 cron-R-Rselenium 交互的某个地方。 (cron 在服务器上与我的其他一些抓取 静态页面的更简单的 python 脚本一起工作正常。)
这是 phantomjs 的最小示例。
library(RSelenium)
system("./phantomjs --webdriver 4567", wait = FALSE)
Sys.sleep(10)
driver <- rsDriver(browser = "phantomjs", port = 4567L)
remDr <- driver$client
它在 driver <- rsDriver(browser = "phantomjs", port = 4567L)
行失败并显示以下错误消息:
Error in wdman::selenium(port = port, verbose = verbose, version = version, : Selenium server signals port = 4567 is already in use. Calls: source ... withVisible -> eval -> eval -> rsDriver ->
非常感谢您的帮助。
最佳答案
尝试关闭与以下之一的先前连接:
remDr$close()
remDr$server$stop()
关于RSelenium 在 Linux 下通过 cron 运行时失败 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55935759/