エンジニアリングとお金の話

都内で働くエンジニアの日記です。

【技術】mechanizeに変わる方法を考えてみた

【SPONSORED LINK】

webサイトをスクレイピングする際はmechanizeを使用しているが、ログイン処理等にjavascriptを使用してゴニョゴニョしているサイトの場合は、行き詰ってしまう事が多い。

 

今までその様なサイトは諦めていたが、どうにかスクレイピングする方法が無いかと調べた結果、以下の2つで実現出来る事がわかった。

 

seleniumを使用する

② Phantom JSを使用する

 

どちらの方法も擬似的なブラウザオブジェクトを使用してjavascriptの処理を行う事が可能である。今回は操作が簡単なseleniumを使用した方法について説明する。

 

1.seleniumとは

Webアプリケーション用テストツール。ブラウザの操作をシミュレートして、Webアプリケーションの画面周り操作を行う事が可能である。

要は、人が手でWebブラウザを操作する代わりにSeleniumがWebブラウザを操作して、作業の自動化を可能とするツールである。webのレグレッションテストを実施する際に活躍するツールとのこと。seleniumを使用すれば、手動で行っている処理と同じ事をプログラムにて使用出来る。(mechanizeはGETメソッドやPOSTメソッドを発行して、javascriptを取得する事は可能だが、処理する事は出来ない。)

 

2.seleniumの使い方

seleniumjava,C#,ruby,pythonと様々な言語で使用する事が出来る。自分はpythonを使用してる為、pythonでの使用方法を記載する。なお、インストールはpip install seleniumにて可能である。

また、seleniumは自分でプログラムを書いて使用する事も出来るが、selenium IDEを使用する事で処理の雛形を簡単に作成する事が出来る。selenium IDEはFierfoxのプラグインで SeleniumHQ よりダウンロード出来る。

SeleniumHQ:http://oss.infoscience.co.jp/seleniumhq/download/

上記の処理をselenium IDEを使用して雛形を作成する方法は以下の通り。

①selenum IDE選択

f:id:hatakazu93:20120701064546j:plain

selenium IDEを記録状態にし、ブラウザ上で各種処理を行う

f:id:hatakazu93:20120701064555j:plain

③テストケースをエクスポートする

f:id:hatakazu93:20120701064602j:plain

たったこれだけで、selenumを使用したプログラムが出力される。後は、このプログラムを用途に応じてカスタマイズしていけば、直ぐにスプレイピングプログラムを作成する事も可能。いやー凄く便利。

 

3.サンプルプログラム

selenumを用いてyahooへのログイン処理を書いてみた。

 

ちなみに、以前はmechanizeを使用して同様の処理を行ったが、3分の1程度の記述量で処理を実現出来た。

(以前の記事はこちら:http://hatakazu.hatenablog.com/entry/2012/01/09/230827)

 

ウェブブラウザが起動する為、処理時間は掛かるが使い方によっては大変便利なツールである事は間違い無い。これで、javascriptを含んだページも操作する事が可能となった為、また開発の幅が広がりそうである。

 

次は、もう一つのスクレイピングツール候補、Phantom JSの使い方について説明する予定。これも便利そうなツールなので早く使いこなせる様になりたい。