こんにちは!あつもり(@atumori17)です。
VBScriptでIEを操作してWEBスクレイピング!の第9回目で~す。
前回は「ページ内にあるテーブル要素を取得してCSVファイルとして書き出す」ところまでやりました。
今回は「アメブロのブログ管理画面に自動でログインする」方法を紹介します。
IEを使ってアメブロのログイン画面にアクセスし、ID、パスワードを入力させ自動ログインする方法を説明していきます。
アメブロの管理画面に自動ログインするスクリプト
ではまずスクリプトの全文を紹介します。テキストエディタを開き下記のコードを入力します。全て入力し終わったら「アメブロ自動ログイン.vbs」のファイル名でデスクトップに保存します。
Option Explicit Dim objIE Dim el Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEを開く objIE.navigate "http://kuchikomi.ameba.jp/ucs/logininput" 'ページが読み込まれるまで待つ Do While objIE.Busy = True Or objIE.readyState <> 4 WScript.Sleep 100 Loop 'a要素にログインがあったらクリックする For each el In objIE.document.Links if instr(el.innerText,"ログイン") then el.click exit for end if next 'ページが読み込まれるまで待つ Do While objIE.Busy = True Or objIE.readyState <> 4 WScript.Sleep 100 Loop 'IDとパスワードを入力する With objIE.document .getElementsByName("accountId")(0).Value = "TEST@gmail.com" .getElementsByName("password")(0).Value = "1111" End With Dim objbutton 'button要素をコレクションとして取得 Set objbutton = objIE.document.getElementsByTagName("button") 'button要素にログインがあったらクリックする For each el In objbutton if instr(el.innerText,"ログイン") then el.click exit for end if next
プログラムコードの解説
全体の流れは以下のようになります。
- IEでアメブロのログイン画面を開く
- a要素をコレクションとして取得する
- ログインボタンをクリックする
- ID、パスワードを入力する
- button要素をコレクションとして取得する
- ログインボタンをクリックする
まず1ページ目はログインボタンをクリックするだけの処理を行います。すると2ページ目に遷移するので、ID、パスワードを入力し再びログインボタンをクリックするという流れになります。
次の画像を見るとイメージが沸きやすいと思います。
a要素のコレクションからログインを探しクリックする
まずはFor each文でコレクションとして取得したa要素ぶんだけ繰り返す処理を行います。続いてinnerTextプロパティでa要素をテキストとして取得し「ログイン」という文字があるかを調べます。指定した文字が含まれているかを調べるにはinstr関数を使います。
上記プログラムコードの17~23行目になります。
'a要素にログインがあったらクリックする For each el In objIE.document.Links if instr(el.innerText,"ログイン") then el.click exit for end if next
「ログイン」が見つかったらclickメソッドを使ってリンクをクリックさせます。
最後にexit forでループから抜けます。
要素をコレクションとして取得する方法については過去の記事で紹介していますので参考にしてみてください。
getElementsByNameのvalueプロパティにIDとパスワードをセットする
続いてgetElementsByNameメソッドでname属性が「accountId」「password」の要素を取得します。
とすることでname属性で要素を取得することができます。下の画像はアメブロログイン画面のHTMLのソースコードです。name=”accountId“、name=”password“の部分になります。
getElementsByNameメソッドは添え字を指定する
ここで気をつけたいのが、getElementsByNameメソッドで取得した要素はコレクションなので、添え字をつける必要があるということです。name属性が同じ名前の要素が複数ある場合、ページの上から順番に配列に格納されるからです。添え字は0番から始ります。
今回のログインページでは、name=”accountId“、name=”password“はそれぞれ1つしかないので添え字は0を指定します。
getElementsByNameのvalueプロパティに値をセットする
続いてgetElementsByNameのvalueプロパティにIDとパスワードをセットします。セットする値はダブルクォーテーションで囲む必要があります。
これでIDとパスワードがセットできました。
button要素のコレクションからログインを探してクリックする
IDとパスワードがセットできましたので、今度はログインボタンを探してクリックさせます。これはgetElementsByTagNameメソッドを使い、タグ名が「button」の要素をコレクションとして取得します。
取得したコレクションから「ログイン」という文字を探してクリックさせます。先ほど説明した「a要素のコレクションからログインを探しクリックする」と同じですね。
getElementsByTagNameメソッドについては過去の記事で紹介していますので、参考にしてみてください。
プログラムコードの解説は以上です。
アメブロ管理画面に自動ログインしてみる
では実際にアプリケーションを起動してみます。デスクトップにある「アメブロ自動ログイン.vbs」をダブルクリックします。
ログイン画面が表示されました。ここで自動でログインボタンがクリックされます。
ログインボタンがクリックされ、ID、パスワード入力画面に移りました。ここではID、パスワードが自動で入力され、その後にログインボタンがクリックされます。
おお~!無事に管理画面が表示されましたっ。めだたしめでたしです。
まとめ
今回は「アメブロのブログ管理画面に自動でログインする方法」をお伝えしてきました。いかがでしたか?
今回の内容をまとめると以下のようになります。
- getElementsByNameはname属性で要素を取得することができる
- getElementsByNameのvalueプロパティにID、パスワードをセットする
- clickメソッドを使うとリンクやボタンをクリックさせることができる
以上です。それではお疲れさまでした~。
連載目次:VBScriptでお手軽WEBスクレイピング
Windowsを操作できるプログラミング言語「VBScript」を使えば、InternetExplorerを操作してWEBスクレイピングが可能です。 これで日々の情報収集はダブルクリック一発で完了させましょう!- VBScriptでInternet Explorerを使って複数WEBサイトをダブルクリック一発で開く方法
- VBScriptでWEBスクレイピング!ファイルシステムオブジェクトでテキストに書き出す
- VBScriptでWEBスクレイピング!HTMLドキュメントとタイトルを取得する方法
- VBScriptでWEBスクレイピング!ブラウザの読み込み待ちをしてエラーを回避する
- VBScriptでWEBスクレイピング!aタグのリンクURLを全部取得する方法
- VBScriptでWEBスクレイピング!aタグのリンクURLをHTMLとして書き出す
- VBScriptでWEBスクレイピング!hタグを取得してHTMLとして書き出す
- VBScriptでWEBスクレイピング!テーブル要素を取得してCSVファイルで書き出す
- VBScriptでWEBスクレイピング!アメブロの管理画面に自動でログインする方法
- VBScriptでWEBスクレイピング!アメブロの投稿記事一覧をテキストファイルに書き出す方法