クイックノート

ちょっとした発見・アイデアから知識の発掘を

RSelenium の始め方

RSelenium とは、ブラウザの自動操作を行う「Selenium」を、
R から実行するためのパッケージです。

主に、Webページから情報を自動的に収集する
スクレイピング と呼ばれる操作に利用することができます。

Rでスクレイピングを行うためのツールは他にもありますが、
Selenium はクリックなどのブラウザ操作も行える点が強みです。

ただし、準備で必要な手順がいくつかあるので、
ここでは、RSeleniumを使えるようになるまでの環境構築をまとめておきます。

※著者の利用環境はWindows10, Rはすでにインストールしているものとします。

1. Docker をインストールする

Docker とは仮想化環境を構築するソフトウェアです。
この仮想化環境の上に、Selenium の本体となるサーバーを動かします。

Docker のインストールは、下のサイトから、
「Docker Toolbox」インストーラーをダウンロードし、
実行することで、インストールできます。

docs.docker.com

2. Docker の初期設定

Docker のインストールが完了したら、
一緒にインストールされる「Kitematic」 を実行します。

画面を進めると初めの仮想化環境の構築が開始されるので、
構築が終了するまでしばらく待ちましょう。

構築が終わると、「Docker Hub」への接続の画面に変わりますが、
Skip しても問題ありません。

3. Docker のターミナルを開く

Kitematic の左下の「DOCKER CLIをクリックすると、
コマンド入力の画面が開かれます。

f:id:u874072e:20180510152733p:plain:w300

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/ を入力すれば、
下のような画面が表示されます。

f:id:u874072e:20180510153624p:plain

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

で取得できます。

プライバシーポリシー