こんにちは、エンジニアのオオバです。

前回記事からの続きです。

最低限の機械学習の知識を手に入れるため勉強中。

前回はPhantomJSとSeleniumを使ってコマンドラインから指定したWebサイトの画面キャプチャを撮りました。

今回はログインが必要なサイトの画面キャプチャを撮ってみます。

手順としては↑以前やった内容に近いですが、セッション維持とHTMLパースにに関してRequestsモジュールBeautifulSoupモジュールを使用していましたが、今回Seleniumだけで実現できるためどちらも外しています。

  1. ログインサイトにアクセス
  2. フォームにIDとパスワードをセットして送信
  3. ログイン後HTMLからマイページURLを取得
  4. ログイン後のURLの画面をキャプチャ

ログインが必要なサイトは本書のサンプル通りコチラのサイトにアクセスします。

先に今回のサンプルコードから紹介します。
ログインサイトの画面キャプチャサンプル · GitHub

このコードを実行すると以下のような画面キャプチャがローカルに保存されます。

ログインサイト先の画面キャプチャをしてみる_0

処理内容についてはソースコード読めば何となく分かるかと思いますので、以下気になったことを羅列します。

→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら

Seleniumは凄い

Seleniumを使うとDOM取得がとても便利です。

ID要素取得

driver.find_element_by_id("user")  

このようにしてID要素の取得が出来ます。

キーボード操作

textbox = driver.find_element_by_id("user")  
textbox.clear()  
textbox.send_keys(USER)  

IDが"user"のテキストボックを取得して、send_keysメソッドで引数の値をキーボードで打ち込む操作をすることが可能です。

send_keys(special)-Python

フォーム操作

form = driver.find_element_by_css_selector("#loginForm form")  
form.submit()  

フォーム操作も簡単です。

Seleniumクイックリファレンス

その他色んなことができそうです。リファレンスをしっかり読もう。

最後に

ログインサイトの画面キャプチャを通して感じたのは、Seleniumが非常に面白く、高機能だなということです。今回たまたまPhantomJSを使いましたが、ChromeやFirefoxなどのブラウザを使うこともできそうなので、そちらも追々。
枯れた技術かもしれないけど、畑違いで自分がやったこと無いことは楽しいです。

オススメ記事
検証環境