RSelenium とは、ブラウザの自動操作を行う「Selenium」を、
R から実行するためのパッケージです。
主に、Webページから情報を自動的に収集する
スクレイピング と呼ばれる操作に利用することができます。
Rでスクレイピングを行うためのツールは他にもありますが、
Selenium はクリックなどのブラウザ操作も行える点が強みです。
ただし、準備で必要な手順がいくつかあるので、
ここでは、RSeleniumを使えるようになるまでの環境構築をまとめておきます。
※著者の利用環境はWindows10, Rはすでにインストールしているものとします。
- 1. Docker をインストールする
- 2. Docker の初期設定
- 3. Docker のターミナルを開く
- 4. Selenium サーバーの取得
- 5. Selenium サーバーを起動する
- 6. R に 「RSelenium」をインストールする
- R を Selenium サーバーに接続する
- 7. 自由にブラウザを操作する
1. Docker をインストールする
Docker とは仮想化環境を構築するソフトウェアです。
この仮想化環境の上に、Selenium の本体となるサーバーを動かします。
Docker のインストールは、下のサイトから、
「Docker Toolbox」のインストーラーをダウンロードし、
実行することで、インストールできます。
2. Docker の初期設定
Docker のインストールが完了したら、
一緒にインストールされる「Kitematic」 を実行します。
画面を進めると初めの仮想化環境の構築が開始されるので、
構築が終了するまでしばらく待ちましょう。
構築が終わると、「Docker Hub」への接続の画面に変わりますが、
Skip しても問題ありません。
3. Docker のターミナルを開く
Kitematic の左下の「DOCKER CLI」をクリックすると、
コマンド入力の画面が開かれます。
4. Selenium サーバーの取得
Docker 上では、まだ空っぽの仮想環境が構築されただけなので、
そこにSeleniumサーバーを持ってきます。
ターミナル上で、
docker pull selenium/standalone-chrome
と入力すれば、chrome用のSeleniumサーバーを仮想環境にダウンロードできます。
5. Selenium サーバーを起動する
ダウンロードしただけでは、まだサーバーが動いていないので、
次のコマンドを入力して、サーバーを起動します。
docker run -d -p 4444:4444 selenium/standalone-chrome
「-p 4444:4444」は外からポート番号4444でアクセスするときに、
docker 上のポート番号4444につなぐという意味で、
一見、無意味に見えるかもしれませんが、これをしないと繋ぐことができないので注意です。
ここまでが上手くできていれば、
ブラウザのURLに http://192.168.99.100:4444/ を入力すれば、
下のような画面が表示されます。
6. R に 「RSelenium」をインストールする
ここまで来てようやく、Rの操作に入ります。
まずは、Rを起動し、Rのターミナル上で、
install.packages("RSelenium")
を実行して、RSeleniumパッケージをインストールしましょう。
※追記
CRANから「RSelenium」が消えたので、
上でインストールできない場合は、github からインストールしましょう。
devtools::install_github("johndharrison/binman") devtools::install_github("johndharrison/wdman") devtools::install_github("ropensci/RSelenium")
の順にパッケージをインストールすれば RSelenium のインストールが完了です。
R を Selenium サーバーに接続する
まずは、パッケージを読み込みます。
library(RSelenium)
R と Selenium サーバーの接続は、
remDr = remoteDriver(remoteServerAddr = "192.168.99.100", port = 4444, browserName = "chrome") remDr$open()
で行います。
Docker のデフォルトのアドレスが 192.168.99.100 なので、
そのアドレスを指定するのと、
先ほど入力したポート番号の4444を指定し、
ブラウザはchromeを指定しています。
7. 自由にブラウザを操作する
後は、remDr を通して、ブラウザとRのやり取りを自由に行います。
remDr$navigate("URL")
とすれば、指定したURLをブラウザが開いている状態に移ります。
そのページのソースを取得したい場合は、
remDr$getPageSource()
で取得できます。