渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

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


前回記事からの続きです。
最低限の機械学習の知識を手に入れるため勉強中。

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

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

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

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

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

先に今回のサンプルコードから紹介します。

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

f:id:esakun:20171112001732p:plain:w320

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

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()

フォーム操作も簡単です。
※このform変数はselenium.webdriver.remote.webelement.WebElementという型として取得されています

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

最後に

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