VBAのIE(InternetExplorer)制御で「twpro」を利用してツイッターのツイート数・フォロー数・フォロワー数の自動取得する制御方法ついて解説しています。
Sub sample()
'twitterアカウントページを表示
Call ieView(objIE, "https://mobile.twitter.com/" & Range("B2"))
'列番号
col = 3
For Each objTag In objIE.document.getElementsByTagName("div")
If IsNumeric(objTag.innerText) = True Then
Cells(2, col) = objTag.innerText
col = col + 1
End If
Next
objIE.Quit
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
まず、ツイッターはIE(InternetExplorer)のバージョンによって、処理を分けるというお話を「自動ログイン(ログアウト)処理」で説明しましたが、常にモバイル版で処理する方が一番早い方法です。
理由としては、まず「バージョンを気にする必要がない」ということと「モバイル版の方が処理がしやすい」ということです。
PC版のソースを見ていただけば分かりますが、非常に分かりづらいですし、phpやらJavaScriptを利用しているので、うまく処理することができない場合があります。ですので、ツイッター自動操作をする場合は、モバイル版で対応していきましょう。
それでは、1つずつ見ていきます。
Call ieView(objIE, "https://mobile.twitter.com/" & Range("B2"))
※ドラッグ(スワイプ)すると全体を確認できます。
こちらでは「ieViewサブルーチン」を利用して、指定したツイッターアカウントのページを表示させています。
今回は、日本一のフォロワー数を誇る「@ariyoshihiroiki」のアカウントで抽出してみます。
col = 3
※ドラッグ(スワイプ)すると全体を確認できます。
こちらは抽出する列番号を指定しています、今回は3つの情報を抽出するため、1列ずつ足していきそれぞれの情報を抽出していきます。
For Each objTag In objIE.document.getElementsByTagName("div")
(省略)
Next
※ドラッグ(スワイプ)すると全体を確認できます。
ここでは、「getElementsByTagNameメソッド」を利用してdivタグを抽出しています。
divタグは非常にめんどくさい処理なのですが、ソースを解読して取得しやすい方法で取得していきましょう。
それでは、取得する部分のHTMLソースを見ていきます。
<table class="profile-stats">
<tbody><tr>
<td class="stat">
<div class="statnum">11,974</div>
<div class="statlabel">ツイート</div>
</td>
<td class="stat">
<a href="/ariyoshihiroiki/following">
<div class="statnum">204</div>
<div class="statlabel">フォロー中</div>
</a>
</td>
<td class="stat stat-last">
<a href="/ariyoshihiroiki/followers">
<div class="statnum">3,346,339</div>
<div class="statlabel">フォロワー</div>
</a>
</td>
</tr>
</tbody></table>
※ドラッグ(スワイプ)すると全体を確認できます。
tableタグの中にdivタグで括られているのが分かりますね。一意のキーワードがないか調べてみるのですが、「statnum」はそれぞれ利用されており、ソースの幅を広げても中々見つけることができませんでした。
そこでどうしたかというと以下の処理で対応しました。
If IsNumeric(objTag.innerText) = True Then
(省略)
End If
※ドラッグ(スワイプ)すると全体を確認できます。
こちらでは、「IsNumeric関数」を利用しています。「IsNumeric関数」は数値として認識できるものはTrueを返し、そうでないものはFalseを返します。今回のソースを確認すると数値だけで括られている最小タグはツイート数・フォロー数・フォロワー数のdivタグのみでした。そこに目を付けたというわけです。「innerTextプロパティ」を利用してdivタグ内の文字列が数字の場合に処理をするというプログラムになっています。
Cells(2, col) = objTag.innerText
col = col + 1
※ドラッグ(スワイプ)すると全体を確認できます。
後は、簡単ですね。colは「3」でしたので、cells(2, 3)に抽出します。
そして、「col = col + 1」で列を1つ移動させ、「ツイート数」→「フォロー数」→「フォロワー数」の順に取得していきます。
objIE.Quit
※ドラッグ(スワイプ)すると全体を確認できます。
最後にWebブラウザを閉じて完了となります。
今回は、VBAの関数を利用して取得する方法を解説しましたが、これ以外にも色々な方法で取得することができます。
自分なりに考えて一番いい方法を模索してください。
次の記事: VBAのIE操作でアメブロ情報取得 >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
↑VBAのIE操作で分からない事があればこちらの掲示板よりご質問ください。
ExcelのVBA初心者入門↑こちらはVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります。
こちらでは、エクセルVBAで実際に作成したIE(InternetExplorer)制御ツールをまとめています。自動ログインや情報収集など具体的に解説しています。IE(InternetExplorer)制御をされる方は参考にしてください。
こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。
こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。
こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。