2017-06-25 5 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() 

のためにそれを変更することは、それが実際に動作しないということです。または、うまくいくこともありますが、最初は非常に遅く、2番目の問題(はるかに重要な問題)はスクリプトが非常に頻繁に停止します(11000を超えるビットを持つループがあります)。時にはしばらく待ってから停止した場所から再実行しても動作することもありますが、まったく動作しないこともありますが、動作するはずです。私は、次のエラー(申し訳ありませんが、それは英語とフランス語のミックスですが、いくつかのフランス語の単語が英語を話す人のために翻訳する難しいことではありません)

Error in if (!is.null(YD) && grepl("Draft", YD)) { : valeur manquante là où TRUE/FALSE est requis FALSE/TRUEが必要とされる(欠損値を取得します)

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ページのテストを行い、今朝ループを開始しました)。それはまだ実行されており、おそらく1日以上かかるでしょう。 rsDriverを使用して問題を解決できませんでしたが、エラーで常に終了します。 Error in subprocess::spawn_process(tfile, ...) : could not create a pipe: system error message could not be fetched 理由がわかりません。問題を解決してスクリプトを再実行することはできますが、rsDriver()がその仕事をしていなかった理由を誰かが知っていれば分かります。

関連する問題