2017-06-25 37 views
1

大家好,晚上好,RSelenium的問題

我一直在嘗試使用RSelenium運行我的舊腳本。由於一些變化,它不再工作。原始代碼是

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() 

以下建議,我發現在這裏,我改變了它以下

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()而是利用泊塢。在昨天之前,我不知道這是什麼,我找不到任何能清楚解釋它在R和RSelenium中如何使用它的東西......例如,這裏是RSelenium through docker。我試過的鏈接,但網頁不會顯示...

任何人都可以幫助解決這個問題嗎?解決我的rsDriver()問題,使其成爲100%的工作解決方案對我來說很好。非常感謝你。有關信息,我在OpenSuse(不知道這是否會使事情不同於Windows或Mac系統)。

我正在運行的列表包含NFL網站上玩家的網頁。一個例子是http://www.nfl.com/players/profile?id=00-0019290

回答

1

最後,我可以使用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()不做這項工作,我將不勝感激。