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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Linux下由cron运行时RSelenium失败 - 为什么?相关的知识,希望对你有一定的参考价值。

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

Selenium服务器信号port = 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中的错误(port = port,verbose = verbose,version = version,:Selenium服务器信号port = 4567已经在使用。调用:source ... withVisible - > eval - > eval - > rsDriver - >

非常感谢任何帮助。

答案

尝试使用以下方法之一关闭先前的连接:

remDr$close()

remDr$server$stop()

以上是关于在Linux下由cron运行时RSelenium失败 - 为什么?的主要内容,如果未能解决你的问题,请参考以下文章

并行运行 RSelenium

仅在机器空闲时运行 cron 作业(linux)

RSelenium:使用Chrome下载文件时出错

使用 RSelenium 下载 pdf

Linux crontab定时执行任务 命令格式与详细例子

Ubuntu cron 定时执行任务