ツイッターのツイート数・フォロー数・フォロワー数を自動抽出
今回は、ツイッターアカウントのツイート数・フォロー数・フォロワー数を抽出する方法について解説していきます。
ツイッターの情報取得には様々なサービスが存在します。
例えば、フォロワー数の確認であれば「twpro」「TWITTER COUNTER」といったサービスを利用すれば確認ができますが、どれも実際の数値とは異なり正確な数値を測ることができません。
正確に分析したい場合は、アカウント情報ページにアクセスして数値を抽出するのが一番正確な方法となります。
こちらの情報の使い道は人それぞれなのでどのように利用するかまでは明言しませんが、簡単に抽出できるので下記マクロをご確認ください。
ツイッターのツイート数・フォロー数・フォロワー数を自動抽出のマクロ
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部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。