RSeleniumでChromeからファイルをダウンロードするディレクトリを指定する方法
結論
RSeleniumはだいたいわかってるから読むのが面倒くさい人へ。サーバー起動時にextraCapabilitiesオプションでダウンロードディレクトリの情報をChromeオプションとしてlist形式で渡してやれば設定できます。
# Chromeオプションを追加 eCaps <- list( chromeOptions = list(prefs = list( "profile.default_content_settings.popups" = 0L, "download.prompt_for_download" = FALSE, "download.default_directory" = "/path/to/download_directory" ) ) ) # リモートサーバーへ接続 rD <- rsDriver(extraCapabilities = eCaps)
解説
Seleniumは、ブラウザをプログラムから自動操作するためのドライバーです。{RSelenium}パッケージは、それをRから操作するためのパッケージです。このパッケージはSelenium Serverを起動してブラウザを操作するのですが、そのための rsDriver()
関数のヘルプを見ると以下のような引数の解説があります。
これの ...
が重要で、ここはRSeleniumで作られるremoteDriverクラスを作成するときのオプションを指定するところです。
https://cran.r-project.org/web/packages/RSelenium/vignettes/RSelenium-saucelabs.htmlにあるように、 remoteDriver()
でクラスを作るとオプション(というかクラスの中身)一覧が見られます。
library(RSelenium) remdr <- remoteDriver() remdr #> $remoteServerAddr #> [1] "localhost" #> #> $port #> [1] 4444 #> #> $browserName #> [1] "firefox" #> #> $version #> [1] "" #> #> $platform #> [1] "ANY" #> #> $javascript #> [1] TRUE #> #> $nativeEvents #> [1] TRUE #> #> $extraCapabilities #> list()
ここで出てくる最後の extraCapabilities
には、list形式で様々なブラウザに対するオプションを書くことができます。Chromeを使う場合、オプションの指定には 以下が参考になります。残念ながらRでの例はありませんが、、、
sites.google.com
そんな感じで、 extraCapabilities
にリストを渡してそれをサーバー起動時に rsDriver()
のオプションとして指定してやれば、{RSelenium} で Chromeを操るときのダウンロードディレクトリを自分で変えることができます。
# Chromeオプションを追加 eCaps <- list( chromeOptions = list(prefs = list( "profile.default_content_settings.popups" = 0L, "download.prompt_for_download" = FALSE, "download.default_directory" = "/path/to/download_directory" ) ) ) # リモートサーバーへ接続 rD <- rsDriver(extraCapabilities = eCaps)