スポンサーリンク

【TinySeleniumVBA】Yahooメールへのログイン方法をわかりやすく説明する(Excel VBA)

VBAスクレイピング

こんにちは。blueです。

今回はTinySeleniumVBA-Excel VBAを用いたYahooメールへのログイン方法について説明します。

業務やプライベートにおいてサイトでのログインは日常的に行われていると思います。

この記事を読んでいただければ

  • Webサイトを表示させる
  • Webサイトでのログイン操作(ID,パスワード入力,クリック)ができる

ようになりますのでぜひ読んでいってください。

スポンサーリンク

前提

今回の方法でスクレイピングをするにはTinySeleniumVBAのインストール設定が必要です。

方法については以下を参照ください。

今回のフロー

今回のフローは以下です。

  1. Sleep関数を使う為の環境を構築する
  2. ChromeをたちあげてYahooサイトにアクセスする
  3. Yahooサイトの[メール]をクリックする
  4. ログイン画面にてユーザーネームを入力し、次へを押す
  5. パスワードを入力し、次へを押す

以下で詳しく説明します。

全コード

全コードは以下になります。なおユーザーIDパスワードは自分のものをご使用ください。

Option Explicit
#If Win64 Then
    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

Sub sample()
    Dim Driver As New WebDriver
    
    'WebDriverManager4TinySeleniumを入れていない場合は以下2行のコメントアウトを解除し、SafeOpen Driver, Chromeをコメントアウトすること なおChromeDriverはExcelファイルと同じフォルダに入っているものとする
    'Driver.Chrome "./chromedriver.exe"
    'Driver.OpenBrowser
    SafeOpen Driver, Chrome
    
    Driver.Navigate "https://www.yahoo.co.jp/"

    Driver.FindElement(By.CssSelector, "#StatusMail > a > dl").Click
    
    Driver.FindElement(By.CssSelector, "#username").SetValue ("ユーザーID")
    
    Driver.FindElement(By.CssSelector, "#btnNext").Click
    
    Sleep 1000
    
    Driver.FindElement(By.CssSelector, "#passwd").SetValue ("パスワード")
    
    Driver.FindElement(By.CssSelector, "#btnSubmit").Click
    
End Sub
    

コードの説明

Sleep関数を使用するための環境を構築する

TinySeleniumVBAにはプログラミングを停止させるメソッドは標準では存在しません(SeleniumBasicやSeleniumVBAにはWaitメソッドが存在します)。

その為Windows APIのSleep関数を使用できるようにします。

#If Win64 Then
    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

詳しい記事はこちらを確認ください。

ChromeをたちあげてYahooサイトにアクセスする

WebDriver最新バージョンであるかどうかを確認し、Chromeを立ち上げます

 Dim Driver As New WebDriver
    
    'WebDriverManager4TinySeleniumを入れていない場合は以下2行のコメントアウトを解除し、SafeOpen Driver, Chromeをコメントアウトすること なおChromeDriverはExcelファイルと同じフォルダに入っているものとする
    'Driver.Chrome "./chromedriver.exe"
    'Driver.OpenBrowser
    SafeOpen Driver, Chrome

WebDriverのバージョン確認にはWebDriverManager for VBA@yamato1413さん作成)を使用します。この中にあるSafeOpen関数を用いてバージョンを確認しています。

なおWebDriverManagerが入っていない場合は上の二行のコードを使用してください。

そして、ChromeDriverのあるパスを指定してください(コードではExcelと同じ階層にChromeDriverを入れ、相対パスで指定しています)

Yahooを表示させるコードは以下になります。

 Driver.Navigate "https://www.yahoo.co.jp/"

TinySeleniumVBAでサイトにアクセスする際はNavigateメソッドを使用します。

なおサイト名は目的に応じて変えることが可能です。

Yahooサイトの[メール]をクリックする

Yahooサイトのメールをクリックするにはクリックする部分の要素を取得し.Clickメソッドを使用します。

ここで要素を取得するにはChromeのデベロッパーツールを使用します。
使用方法は以下になります。

1 右上の3つボタンをクリック→[その他のツール]→[デベロッパーツール]をクリックする

クリックすると拡大します

2 出てきた画面の左上の矢印ボタンをクリックする

クリックすると拡大します

3 実際にクリックするメールの部分にカーソルを合わせる。なお要素には文字や画像、枠など多くのものが存在する為、クリックする際に必要な枠を選択する

クリックすると拡大します

4 選択した要素の部分で右クリック→[Copy]→[Copy selector]をクリックする

クリックすると拡大します

5 VBAにて以下のコードを入力。セレクターには先ほどコピーした内容を貼り付ける

Driver.FindElement(By.CssSelector, "セレクター").Click

ログイン画面が表示されます。

クリックすると拡大します

ログイン画面にてユーザーネームを入力し、次へを押す

ログイン画面にてユーザー名を入力するにはユーザー名の部分の要素を取得し、SetValueメソッドを用いてテキストを入力します。

1 先ほどと同様に 右上の3つボタンをクリック→[その他のツール]→[デベロッパーツール]をクリック

クリックすると拡大します

先ほどと同様にユーザー名の部分の要素を取得します。

2 出てきた画面の左上の矢印ボタンをクリック →入力する部分をクリック→ 選択した要素の部分で右クリック→[Copy]→[Copy selector]をクリック

クリックすると拡大します

3 VBAにて以下のコードを入力。セレクターには先ほどコピーした内容を貼り付ける

Driver.FindElement(By.CssSelector, "セレクター").SendValue ("ユーザーID")

指定した要素に対してSetValueメソッドを実行することによってカッコ内のテキストを入力できます。

テキストが入力できました。

次は下の「次へ」ボタンを入力することになりますが 【Yahooサイトの[メール]をクリックする】方法と同じ方法で要素を取得し、コードを入力します。

具体的には以下のコードになります。

Driver.FindElement(By.CssSelector, "#btnNext").Click

パスワード画面が表示されます。

パスワードを入力し、次へを押す

パスワードの入力ユーザー名の入力と同じです。

同様にパスワードの部分の要素を取得したうえでSetValueメソッドを用いてコードを入力します。

合わせてクリックメソッドを用意します。

Driver.FindElement(By.CssSelector, "#passwd").SetValue ("パスワード")
    
Driver.FindElement(By.CssSelector, "#btnSubmit").Click
    

Yahooメール画面が無事に表示されました。

クリックすると拡大します

ここでのまとめ

スクレイピングにおいてクリック操作テキスト入力基本中の基本です。

サイトにアクセスするだけであればボタン操作とテキスト操作で可能ですのでわずかなコードの理解で操作可能です

これができるだけでかなりの自動化は実感できますのでまずは自分がアクセスしたいサイトで試してみることをお勧めします。

SeleniumBasicはソフトのインストールは必要となりますが、モジュールの導入は不要です。SeleniumBasicについて勉強されたい方は以下の記事もお勧めです。

またSeleniumについては以下の書籍もあります。どちらも使い方について詳しい説明がなされているのでお勧めです。

VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。ブラウザやキー操作の基本的なコマンドは共通していますのでコードを書く際の参考になります。

VBAの書籍の中でSeleniumBasicを取り上げている数少ない書籍です。ページ数としては20ページほどですがとてもわかりやすく書かれています。またVBA全般を網羅した内容が書かれており、長く使用することができます。

SeleniumVBAに関する記事はこちら
【SeleniumVBA】初心者向けに導入方法についてわかりやすく説明します(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します。
【SeleniumVBA】Yahooメールへのログイン方法をわかりやすく説明する(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します2(Excel VBA)
【SeleniumVBA】スクレイピングをする為のメソッド一覧表
【SeleniumVBA】ブラウザを操作するメソッドについてサンプルコードを紹介します
【SeleniumVBA】2022年9月の更新に伴うコードの変更点について説明します。

コメント

タイトルとURLをコピーしました