VBScriptでWEBスクレイピング!アメブロの管理画面に自動でログインする方法


こんにちは!あつもり(@atumori17)です。

VBScriptでIEを操作してWEBスクレイピング!の第9回目で~す。
前回は「ページ内にあるテーブル要素を取得してCSVファイルとして書き出す」ところまでやりました。

VBScriptでWEBスクレイピング!テーブル要素を取得してCSVファイルで書き出す
ページ内にあるテーブル要素を抜き出してCSVファイルとして書き出す方法を紹介します。CSVファイルで書き出しておけば、エクセルなどで簡単に開けるので便利ですよ。getElementsByTagNameメソッドでtr要素のコレクションを取得しFor Each文を使いtr要素、td要素を取り出していきます。

今回は「アメブロのブログ管理画面に自動でログインする」方法を紹介します。

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 

プログラムコードの解説

全体の流れは以下のようになります。

  1. IEでアメブロのログイン画面を開く
  2. a要素をコレクションとして取得する
  3. ログインボタンをクリックする
  4. ID、パスワードを入力する
  5. button要素をコレクションとして取得する
  6. ログインボタンをクリックする

まず1ページ目はログインボタンをクリックするだけの処理を行います。すると2ページ目に遷移するので、ID、パスワードを入力し再びログインボタンをクリックするという流れになります。

次の画像を見るとイメージが沸きやすいと思います。

a要素のコレクションからログインを探しクリックする

まずはFor each文でコレクションとして取得したa要素ぶんだけ繰り返す処理を行います。続いてinnerTextプロパティでa要素をテキストとして取得し「ログイン」という文字があるかを調べます。指定した文字が含まれているかを調べるにはinstr関数を使います。

instr(要素,”検索する文字列”)

上記プログラムコードの17~23行目になります。

     'a要素にログインがあったらクリックする
    For each el In objIE.document.Links             
        if instr(el.innerText,"ログイン") then
            el.click
            exit for    
        end if
    next

「ログイン」が見つかったらclickメソッドを使ってリンクをクリックさせます。

要素.click

最後にexit forでループから抜けます

exit for

要素をコレクションとして取得する方法については過去の記事で紹介していますので参考にしてみてください。

VBScriptでWEBスクレイピング!aタグのリンクURLを全部取得する方法
ページ内にあるリンクURLを全て取得してテキストファイルに書き出す方法を紹介します。まずはLinksプロパティでページ全体のa要素を全て取得してから、For eachステートメントでコレクションの中の要素の数だけループさせ、リンク参照先のURLを取得します。

getElementsByNameのvalueプロパティにIDとパスワードをセットする

続いてgetElementsByNameメソッドでname属性が「accountId」「password」の要素を取得します。

HTMLドキュメント.getElementsByName(name属性名)

とすることでname属性で要素を取得することができます。下の画像はアメブロログイン画面のHTMLのソースコードです。name=”accountId“、name=”password“の部分になります。

getElementsByNameメソッドは添え字を指定する

ここで気をつけたいのが、getElementsByNameメソッドで取得した要素はコレクションなので、添え字をつける必要があるということです。name属性が同じ名前の要素が複数ある場合、ページの上から順番に配列に格納されるからです。添え字は0番から始ります。

HTMLドキュメント.getElementsByName(name属性名)(添え字)

今回のログインページでは、name=”accountId“、name=”password“はそれぞれ1つしかないので添え字は0を指定します。

getElementsByNameのvalueプロパティに値をセットする

続いてgetElementsByNameのvalueプロパティにIDとパスワードをセットします。セットする値はダブルクォーテーションで囲む必要があります。

HTMLドキュメント.getElementsByName(name属性名)(添え字).value = “セットする値”

これでIDとパスワードがセットできました。

button要素のコレクションからログインを探してクリックする

IDとパスワードがセットできましたので、今度はログインボタンを探してクリックさせます。これはgetElementsByTagNameメソッドを使い、タグ名が「button」の要素をコレクションとして取得します。

取得したコレクションから「ログイン」という文字を探してクリックさせます。先ほど説明した「a要素のコレクションからログインを探しクリックする」と同じですね。

getElementsByTagNameメソッドについては過去の記事で紹介していますので、参考にしてみてください。

VBScriptでWEBスクレイピング!hタグを取得してHTMLとして書き出す
ページ内にあるhタグの要素全体を抜き出してHTMLファイルとして書き出す方法を紹介します。getElementsByTagNameメソッドでh要素のコレクションを取得します。取得したコレクションFor Each文で一つ一つの要素にバラしてHTMLに書き出します。

プログラムコードの解説は以上です。

アメブロ管理画面に自動ログインしてみる

では実際にアプリケーションを起動してみます。デスクトップにある「アメブロ自動ログイン.vbs」をダブルクリックします。

ログイン画面が表示されました。ここで自動でログインボタンがクリックされます。

ログインボタンがクリックされ、ID、パスワード入力画面に移りました。ここではID、パスワードが自動で入力され、その後にログインボタンがクリックされます。

おお~!無事に管理画面が表示されましたっ。めだたしめでたしです。

まとめ

今回は「アメブロのブログ管理画面に自動でログインする方法」をお伝えしてきました。いかがでしたか?

今回の内容をまとめると以下のようになります。

  • getElementsByNameはname属性で要素を取得することができる
  • getElementsByNameのvalueプロパティにID、パスワードをセットする
  • clickメソッドを使うとリンクやボタンをクリックさせることができる

以上です。それではお疲れさまでした~。

連載目次:VBScriptでお手軽WEBスクレイピング

Windowsを操作できるプログラミング言語「VBScript」を使えば、InternetExplorerを操作してWEBスクレイピングが可能です。 これで日々の情報収集はダブルクリック一発で完了させましょう!
  1. VBScriptでInternet Explorerを使って複数WEBサイトをダブルクリック一発で開く方法
  2. VBScriptでWEBスクレイピング!ファイルシステムオブジェクトでテキストに書き出す
  3. VBScriptでWEBスクレイピング!HTMLドキュメントとタイトルを取得する方法
  4. VBScriptでWEBスクレイピング!ブラウザの読み込み待ちをしてエラーを回避する
  5. VBScriptでWEBスクレイピング!aタグのリンクURLを全部取得する方法
  6. VBScriptでWEBスクレイピング!aタグのリンクURLをHTMLとして書き出す
  7. VBScriptでWEBスクレイピング!hタグを取得してHTMLとして書き出す
  8. VBScriptでWEBスクレイピング!テーブル要素を取得してCSVファイルで書き出す
  9. VBScriptでWEBスクレイピング!アメブロの管理画面に自動でログインする方法
  10. VBScriptでWEBスクレイピング!アメブロの投稿記事一覧をテキストファイルに書き出す方法

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