こんにちは、エンジニアのオオバです。
前回記事からの続きです。
最低限の機械学習の知識を手に入れるため勉強中。
前回はPhantomJSとSeleniumを使ってコマンドラインから指定したWebサイトの画面キャプチャを撮りました。
今回はログインが必要なサイトの画面キャプチャを撮ってみます。
手順としては↑以前やった内容に近いですが、セッション維持とHTMLパースにに関してRequestsモジュール
とBeautifulSoupモジュール
を使用していましたが、今回Seleniumだけで実現できるためどちらも外しています。
Pythonでログインサイト先のHTMLをパースする
- ログインサイトにアクセス
- フォームにIDとパスワードをセットして送信
- ログイン後HTMLからマイページURLを取得
- ログイン後のURLの画面をキャプチャ
ログインが必要なサイトは本書のサンプル通りコチラのサイトにアクセスします。
先に今回のサンプルコードから紹介します。
ログインサイトの画面キャプチャサンプル · GitHub
このコードを実行すると以下のような画面キャプチャがローカルに保存されます。
処理内容についてはソースコード読めば何となく分かるかと思いますので、以下気になったことを羅列します。
→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
メソッドで引数の値をキーボードで打ち込む操作をすることが可能です。
フォーム操作
form = driver.find_element_by_css_selector("#loginForm form")
form.submit()
フォーム操作も簡単です。
その他色んなことができそうです。リファレンスをしっかり読もう。
最後に
ログインサイトの画面キャプチャを通して感じたのは、Seleniumが非常に面白く、高機能だなということです。今回たまたまPhantomJSを使いましたが、ChromeやFirefoxなどのブラウザを使うこともできそうなので、そちらも追々。
枯れた技術かもしれないけど、畑違いで自分がやったこと無いことは楽しいです。
この記事が気に入ったらフォローしよう
- macOS 10.12.6
- Selenium 3.7.0
- PhantomJS 2.1.1
- Python 3.6.3
- Node.js 9.0.0