はじめに
前に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年間分のスナップ情報を取得できました。
以上です。