releniumとやらを使ってみた。

なんかウェブページのテストを自動化したりスクレイピングしたりするのにseleniumというのが結構有名らしく、そいつをRから使おうというreleniumという奴があったので使ってみました。

取り敢えずインストール。(注:windowsではrtoolsが必要です。)

install.packages(“rJava”) #rJavaが必要なので最初にインストール
 
install.packages(“devtools”) #devtoolsがreleniumのインストールに必要
 
require(devtools) #devtoolsを読み出す。
 
install_github(‘seleniumJars’, ‘LluisRamon’) #selenium本体
 
install_github(‘relenium’, ‘LluisRamon’) #releniumをインストール
 
 

早速試したいのでdemoコードを入れてみる

require(relenium) #releniumの準備
 
demo(webExample) #あらかじめ用意されてるでもコード
 

そしたらエラー・・・

P1020058

> require(relenium)
要求されたパッケージ relenium をロード中です
> demo(webExample)
 
demo(webExample)
—- ~~~~~~~~~~
Type <Return> to start :
 
> #require(relenium)
> require(XML)
 
Loading required package: XML
 
> firefox <- firefoxClass$new()
以下にエラー exceptionTable[, 1] : 添え字が許される範囲外です

 

そして気がつく。

「あ、おれfirefox入れてないやw」

と言う事でfirefoxをインストール

ブラウザごときで56.1MBもあるのか・・・

インストールが終わってRのセッションを立ち上げ直して上のコードを入れると、

なんかReleniumのサイトに勝手に飛んで色々ごちゃごちゃとやってくれます。

おーやったー動いたー。

と言う事で自分でちょっと書いてみます。

 

#read packages
 
require(relenium)
library(XML)
 
 
firefox <- firefoxClass$new() #fire fox 起動
firefox$get(“http://www.housecat442.com/”) #指定したURLへとジャンプ
 
doc <- htmlParse(firefox$getPageSource()) #getPageSource()でソースを取得して、htmlPareseでパース。
 
name <- xpathApply(doc,”//h2[@class=’entry-title’]/a”,xmlValue) #記事のタイトルのh2タグ下にあるaタグの中身を取得
link <- xpathApply(doc,”//h2[@class=’entry-title’]/a/@href”) #同じくリンクを取得
 
data.frame(cbind(name,link))
 
buttonElement <- firefox$findElementByXPath(‘//*[@id=”nav-below”]/div[1]/a’) #xpathを使って検索結果で次ページへいくボタンを指定
buttonElement$click() #上で指定したボタンをクリック
 
 

こうすると勝手にfirefoxが立ち上がってこのブログの最初のページの記事のタイトルとリンクを取って来て、次のページへと進んでくれます。

基本的にはfindElementByXPath()を使って要素を指定して、$sendKeysとかでテキストインプットしたりエンターキーたたいたり、$clickとかで要素クリックしてブラウザでアクションしたりとそんな感じです。

因にreleniumではクロームの要素を検証で取得したxpathがそのまま使えるので非常に楽です。

XMLパッケージだとちょっと修正しないと読んでくれません。(俺がしょぼいだけ?)

 

スクレイピングしたければ$getPageSource()でソース取得してXMLパッケージとかで調理すれば良いかと思います。

forとか使えば繰り返しの動作とかも行えるので良いですね。

casperjsとかより簡単で良い感じがします。

useragentとか変えられたら良いなーと思うのですけど、なんか方法あるのかな?

カテゴリー: R パーマリンク

コメントを残す