GCPにRStudio Serverを立ててRSeleniumでスクレイピング


はじめに

前にRseleniumでWEBページのスクレイピングを行いました。(こちら)
手元のマシンで行うと、スクレイピング間隔をあけていることや、対象ページが多いことから、結構時間がかかってしまいます。
また、自分のマシンからやってBANされても嫌だなと思ってGCPからスクレイピングしてみました。
GCP初心者でしたが、GCPを用意し、RStudio ServerとRSelenium Serverを立ててスクレイピングを試みました。
メモ程度の内容です。

GCPの設定

GCEでVMインスタンスを立てました。

マシンタイプ:n1-standerd-1
ブートディスク:Ubuntu 16.04LTS
ファイヤウォール:HTTP/HTTPSトラフィックを許可するをチェック

Dockerを使ってRStudio Serverを立てる

GCPの設定

外部からアクセスできる様にファイヤウォールルールを設定しました。
設定のページがわかりにくかったです。

GCPトップページ → メニュー → ネットワーキングのVPCネットワーク → ファイヤウォールルール 

次の様な設定を作成しました。
 名前: allow-rstudio 
 トラフィックの方向: 上り
 ソースIPの範囲: 0.0.0.0/0
 指定したプロトコルとポート: tcp:8787
 ターゲットタグ: allow-rstudio

そして、インスタンスの設定でターゲットタグに「allow-rstudio」を追加します。

RStudio Serverを立てる

RStudioのdockerイメージにtokyor/rstudioを利用しました。

docker pull tokyor/rstudio
docker run -d -p 8787:8787 tokyor/rstudio

これでhttp://<インスタンスのグローバルIP>:8787にアクセスします。
Rstudio serverのログイン画面が出れば成功です。
次のusernameとpasswordでログインできます。

username: rstudio
password: rstudio

Dockerを使ってRSelenium Serverを立てる

GCPの設定

外部からアクセスできる様にファイヤウォールルールを設定しました。

名前: allow-selenium
トラフィックの方向: 上り
ソースIPの範囲: 0.0.0.0/0
指定したプロトコルとポート: tcp:4444
ターゲットタグ: allow-selenium

インスタンスの設定でターゲットタグに「allow-selenium」を追加します。

seleniumサーバーを立てる

dockerイメージを持ってきます。

docker pull selenium/standalone-chrome

dockerコンテナを立ててseleniumサーバーを立てます。

docker run -d -p 4444:4444 selenium/standalone-chrome

これでhttp://<インスタンスのグローバルIP>:4444にアクセスします。
seleniumのページが表示されれば成功です。

いざ、スクレイピング

あとは、RStudio Serverにアクセスして、前回記事の内容に従ってスクレイピングをおこないました。
いい感じに1年間分のスナップ情報を取得できました。

以上です。

参考