こんにちは。blueです。
今回はSeleniumVBA-Excel VBAを用いたYahooメールへのログイン方法について説明します。
業務やプライベートにおいてサイトでのログインは日常的に行われていると思います。
この記事を読んでいただければ
- Webサイトを表示させる
- Webサイトでのログイン操作(ID,パスワード入力,クリック)ができる
ようになりますのでぜひ読んでいってください。
なお、2022年9月以降インストール方法の変更により変数の宣言方法が変わっています。
詳しい記事はこちらをご確認ください。
前提
今回の方法でスクレイピングをするにはSeleniumVBAの導入が必要です。
方法については以下を参照ください。
今回のフロー
今回のフローは以下です。
- ChromeをたちあげてYahooサイトにアクセスする
- Yahooサイトの[メール]をクリックする
- ログイン画面にてユーザーネームを入力し、次へを押す
- パスワードを入力し、次へを押す
以下で詳しく説明します。
全コード
全コードは以下になります。なおユーザーIDとパスワードは自分のものをご使用ください。
Sub sample()
Dim driver As New WebDriver
Dim mngr As New WebDriverManager
Dim driverPath As String
'WebDriverを自動更新するWebDriverManagerクラスを使用する
driverPath = ".\chromedriver.exe"
mngr.AlignChromeDriverWithBrowser driverPath
'Chromeを選択してブラウザを開く
driver.StartChrome
driver.OpenBrowser
'Yahooを開く
driver.NavigateTo "https://www.yahoo.co.jp/"
driver.Wait 1000
'Yahooサイトの[メール]をクリックする
driver.FindElement(by.CssSelector, "#StatusMail > a > dl").Click
driver.Wait 1000
'ログイン画面にてユーザーネームを入力し、次へを押す
driver.FindElement(by.CssSelector, "#username").SendKeys "ユーザーID"
driver.FindElement(by.CssSelector, "#btnNext").Click
driver.Wait 1000
'パスワードを入力し、次へを押す
driver.FindElement(by.CssSelector, "#passwd").SendKeys "パスワード"
driver.FindElement(by.CssSelector, "#btnSubmit").Click
End Sub
コードの説明
ChromeをたちあげてYahooサイトにアクセスする
WebDriverが最新バージョンであるかどうかを確認し、Chromeを立ち上げます。
'WebDriverを自動更新するWebDriverManagerクラスを使用する
driverPath = ".\chromedriver.exe"
mngr.AlignChromeDriverWithBrowser driverPath
'Chromeを選択してブラウザを開く
driver.StartChrome
driver.OpenBrowser
SeleniumVBAにはWebDriverManagerクラスが用意されています。
バージョンが違う場合はこのクラスにより最新バージョンに変更してくれるのでとても便利です。
Chromeを立ち上げるにはStartChromeメソッドを使用します。
またブラウザを開くにはOpenBrowserメソッドを使用します。
Yahooを表示させるコードは以下になります。
'Yahooを開く
driver.NavigateTo "https://www.yahoo.co.jp/"
driver.Wait 1000
TinySeleniumVBAでサイトにアクセスする際はNavigateToメソッドを使用します。
なおサイト名は目的に応じて変えることが可能です。
処理が早すぎて動かない場合を考慮してWaitメソッドを入れています。Waitメソッドの引数にミリ秒(ここでは1000ミリ秒)を記載することで指定秒数だけ待機することができます。
Yahooサイトの[メール]をクリックする
Yahooサイトのメールをクリックするにはクリックする部分の要素を取得し.Clickメソッドを使用します。
ここで要素を取得するにはChromeのデベロッパーツールを使用します。
使用方法は以下になります。
1 右上の3つボタンをクリック→[その他のツール]→[デベロッパーツール]をクリックする
2 出てきた画面の左上の矢印ボタンをクリックする
3 実際にクリックするメールの部分にカーソルを合わせる。なお要素には文字や画像、枠など多くのものが存在する為、クリックする際に必要な枠を選択する
4 選択した要素の部分で右クリック→[Copy]→[Copy selector]をクリックする
5 VBAにて以下のコードを入力。セレクターには先ほどコピーした内容を貼り付ける
'Yahooサイトの[メール]をクリックする
driver.FindElement(by.CssSelector, "#StatusMail > a > dl").Click
driver.Wait 1000
ログイン画面が表示されます。
ログイン画面にてユーザーネームを入力し、次へを押す
ログイン画面にてユーザー名を入力するにはユーザー名の部分の要素を取得し、SendKeysメソッドを用いてテキストを入力します。
1 先ほどと同様に 右上の3つボタンをクリック→[その他のツール]→[デベロッパーツール]をクリック
先ほどと同様にユーザー名の部分の要素を取得します。
2 出てきた画面の左上の矢印ボタンをクリック →入力する部分をクリック→ 選択した要素の部分で右クリック→[Copy]→[Copy selector]をクリック
3 VBAにて以下のコードを入力。セレクターには先ほどコピーした内容を貼り付ける
'ログイン画面にてユーザーネームを入力し、次へを押す
driver.FindElement(by.CssSelector, "#username").SendKeys "ユーザーID"
指定した要素に対してSendKeysメソッドを実行することによって引数のテキストを入力できます。
テキストが入力できました。
次は下の「次へ」ボタンを入力することになりますが 【Yahooサイトの[メール]をクリックする】方法と同じ方法で要素を取得し、コードを入力します。
具体的には以下のコードになります。
driver.FindElement(by.CssSelector, "#btnNext").Click
パスワード画面が表示されます。
パスワードを入力し、次へを押す
パスワードの入力もユーザー名の入力と同じです。
同様にパスワードの部分の要素を取得したうえでSendKeysメソッドを用いてコードを入力します。
合わせてクリックメソッドを用意します。
'パスワードを入力し、次へを押す
driver.FindElement(by.CssSelector, "#passwd").SendKeys "パスワード"
driver.FindElement(by.CssSelector, "#btnSubmit").Click
Yahooメール画面が無事に表示されました。
ここでのまとめ
スクレイピングにおいてクリック操作やテキスト入力は基本中の基本です。
サイトにアクセスするだけであればボタン操作とテキスト操作で可能ですのでわずかなコードの理解で操作可能です。
これができるだけでかなりの自動化は実感できますのでまずは自分がアクセスしたいサイトで試してみることをお勧めします。
ソフトのインストールは必要となりますが、SeleniumBasicはメソッドやプロパティについての説明があり、初心者向けとなっています。SeleniumBasicについて勉強されたい方は以下の記事も読んでみてください
SeleniumVBAに関する記事はこちら
【SeleniumVBA】初心者向けに導入方法についてわかりやすく説明します(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します。
【SeleniumVBA】Yahooメールへのログイン方法をわかりやすく説明する(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します2(Excel VBA)
【SeleniumVBA】スクレイピングをする為のメソッド一覧表
【SeleniumVBA】ブラウザを操作するメソッドについてサンプルコードを紹介します
【SeleniumVBA】2022年9月の更新に伴うコードの変更点について説明します。
【SeleniumVBA】アラート処理に関するメソッドについてコードを紹介します
【SeleniumVBA】待機処理に関するメソッドについてコードを紹介します
コメント