首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSelenium存在的问题

RSelenium存在的问题
EN

Stack Overflow用户
提问于 2017-06-25 19:47:00
回答 1查看 1.1K关注 0票数 2

大家晚上好,

我一直试图使用RSelenium运行我的一个旧脚本。由于一些变化,它不再工作了。最初的代码是

代码语言:javascript
复制
require(RSelenium)
require(rvest)
RSelenium::checkForServer()
RSelenium::startServer()
remDr <- remoteDriver()
remDr$open()

remDr$navigate(linkPlayersPage)
doc <- remDr$getPageSource()
doc <- read_html(doc[[1]])
path <- "//table[@class='playersquickfindtable']/tbody/tr/td/form/table/tbody/tr/td/div/img"
quickFind <- doc %>% html_nodes(xpath=path) %>% xml_attr("alt")
remDr$close()

根据我在这里找到的建议,我将其更改为

代码语言:javascript
复制
require(RSelenium)
require(rvest)

driver <- rsDriver()
remDr <- driver[["client"]]

remDr$navigate(linkPlayersPage)
doc <- remDr$getPageSource()
doc <- read_html(doc[[1]])
path <- "//table[@class='playersquickfindtable']/tbody/tr/td/form/table/tbody/tr/td/div/img"
quickFind <- doc %>% html_nodes(xpath=path) %>% xml_attr("alt")
remDr$close()

问题是,它并不真正起作用。或者它有时很有效,但是首先,它非常慢,第二个(更重要的问题)脚本经常停止(我有一个有11000多个地址的循环)。有时在等待一段时间后,从停止的地方重新运行,它可以工作,有时根本不起作用,但我知道它应该能工作。我犯了以下错误(对不起,这是英语和法语的混合,但对于说英语的人来说,这几个法语单词应该不难翻译)

Error in if (!is.null(YD) && grepl("Draft", YD)) { : valeur manquante là où TRUE / FALSE est requis (需要TRUE / FALSE的缺失值)

checking geckodriver versions: BEGIN: PREDOWNLOAD Error in open.connection(con, "rb") : HTTP error 403.

有时候我会犯一些其他的错误,但“10”是最常见的,我真的不知道为什么和如何解决这个问题。

今天我又犯了一个错误

checking geckodriver versions: BEGIN: PREDOWNLOAD BEGIN: DOWNLOAD BEGIN: POSTDOWNLOAD checking phantomjs versions: BEGIN: PREDOWNLOAD BEGIN: DOWNLOAD BEGIN: POSTDOWNLOAD Error in subprocess::spawn_process(tfile, ...) : could not create a pipe: system error message could not be fetched

我觉得所有这些都与rsDriver()有关。

在我读到的答案中,提到最好的做法不是使用rsDriver(),而是使用Docker。在昨天之前,我不知道这是什么,我找不到任何东西可以清楚地解释它的作用或如何使用它与R和RSelenium.例如,这里是RSelenium through docker。我试过这些链接,但是页面不会显示.

有人能帮我解决这个问题吗?解决我的rsDriver()问题,使它成为100%的工作解决方案对我来说是很好的。非常感谢。关于信息,我使用的是OpenSuse (不知道这是否会使事情与Windows或Mac系统不同)。

我正在运行的列表包含了NFL网站上的球员网页。一个例子是http://www.nfl.com/players/profile?id=00-0019290

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-28 08:55:03

最后,我可以用Docker解决这个问题。下面的https://cran.r-project.org/web/packages/RSelenium/vignettes/RSelenium-docker.html提供了有关如何继续的良好信息。该脚本运行良好,没有停止(目前,我测试了大约100页,并在今天上午启动了循环)。它还在运行,可能需要超过一天的时间才能完成。我不能用rsDriver来解决这个问题,我不知道为什么总是会因为错误Error in subprocess::spawn_process(tfile, ...) : could not create a pipe: system error message could not be fetched而停止。即使我解决了我的问题并且可以再次运行我的脚本,如果有人知道rsDriver()为什么不做这个工作,我会很感激。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44749968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档