LoginSignup
6
6

More than 5 years have passed since last update.

RSelenium のすヽめ

Last updated at Posted at 2019-01-26

RSelenium でスクレイピングをしようとした時に日本語の記事がほとんどなく、TOEIC200点の英語力に頼るのがしんどかったので設定からデータ取得の流れを置いときます。

以下のページをスクレイピングしてみます。
https://jglobal.jst.go.jp/search/anythings#%7B%22category%22%3A%220%22%2C%22keyword%22%3A%22%E3%82%AB%E3%83%96%E3%83%88%E3%83%A0%E3%82%B7%22%7D

Dockerの準備

docker のインストールは省略

docker Selenium のイメージを取得します。

docker pull selenium/standalone-chrome

Selenium コンテナを立てます。

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

以上でdocker の設定は終了です。

Rの準備

RSeleniumを準備します。

install.packages("RSelenium")
library(RSelenium)
remDr = remoteDriver(remoteServerAddr = "localhost", port = 4444, browserName = "chrome")
remDr$open()

上記により、seleniumコンテナとRの接続が完了しました。

スクレイピングしてみよう

url <- 'https://jglobal.jst.go.jp/search/anythings#%7B%22category%22%3A%220%22%2C%22keyword%22%3A%22%E3%82%AB%E3%83%96%E3%83%88%E3%83%A0%E3%82%B7%22%7D'
remDr$navigate(url)
Sys.sleep(5)
planeHtmlList <- remDr$getPageSource()
write(unlist(planeHtmlList), "getPage.html")

この時、「ページの読み込み」と「ページの取得」の間隔が狭いとページをうまく取得できないので注意してください。
また、この時、ページの型はlistであるので注意してください。

では、ここからタイトルをスクレイプしてみましょう。

#install.packages("rvest")
#install.packages("XML")
library(rvest)
library(XML)
html <- read_html("getPage.html")
parsed_doc <- htmlParse(html)
title <- xpathSApply(doc = parsed_doc , path = "//a[@href]", xmlValue)

できた。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6