当在Linux下由cron运行时,RSelenium失败-为什么?

时间:2019-05-01 11:45:44

标签: r linux selenium cron phantomjs

我用R编写了一个机器人来从Web服务器中抓取数据。使用RSelenium用R编写机器人。我编写了两个版本,一个版本使用chrome使用独立硒,另一个版本直接使用phantomjs。当我手动启动它们时,这两个版本在Linux服务器(OpenSuSE)上都能很好地运行。但是,当我使用 cron 启动它们时,它们都在服务器上失败。在后一种情况下,尝试创建驱动程序时会出现如下错误:

  

硒服务器信号端口= 4567已在使用中。

端口正常,正在按预期侦听。而且只有当我通过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)上失败,并显示以下错误消息:

  

wdman :: selenium中的错误(端口=端口,详细=详细,版本=版本,:     硒服务器信号端口= 4567已在使用中。   调用:source ... withVisible-> eval-> eval-> rsDriver->

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尝试使用以下其中一项关闭先前的连接:

remDr$close()

remDr$server$stop()