推しているアイドルたちのTwitterフォロワー数の推移を定点観測しようと思いました。
観測したい対象が10人以上いるので、手動でやるのは面倒です。
自動で取得しようと思って軽く調べてみると、Twitter APIで簡単にできそうなことはわかったのですが、
・最近はTwitter APIを使うための手続きが面倒になっているらしい
・フォロワー数を取得するだけのためにAPIまで必要ないかなあ
ということで、APIを使わずに適当になんとかしてみました。
今回は、いろいろな都合でC#を使いました。
ニーズはないと思うけど、一応、メモを残しておきます。
スポンサーサイト
推しのTwitterフォロワー数を取得したい
やりたいことは、自分のフォロワー数ではなく、任意のアカウントのTwitterフォロワー数を取得することです。
上に書いた通り、今回はAPIを申請するほどではないと思ったので、HTMLをパースして取得することにしました。
また、C#で作ることにしていたので、HTMLのパースにはAngleSharpを使います。
TwitterのページのHTMLを見ると、フォロワー数等の情報は「ProfileNav-value」クラスになっていたので、これを取得します。
で、その中の2番目がフォロワー数です。
ちなみに0番目はツイート数、1番目はフォロー数、3番目はいいねの数、のはず。
プログラム
まずNuGetでAngleSharpを追加。
usingのところに追加
using AngleSharp.Dom.Html;
using AngleSharp.Parser.Html;取得してコンソール出力するメソッド
private async Task TwitterTestAsync(string id)
{
// 取得対象の設定
var urlstring = $"https://twitter.com/" + id;
var doc = default(IHtmlDocument);
using (var client = new HttpClient())
using (var stream = await client.GetStreamAsync(new Uri(urlstring)))
{
var parser = new HtmlParser();
doc = await parser.ParseAsync(stream);
}
var elem = doc.QuerySelectorAll(".ProfileNav-value")[2];
Console.WriteLine($"{id}, {elem.InnerHtml.Replace(",", "")}");
}最後に
これだけなので、特に困るところはありませんでした。
ただ、当然と言えば当然ですが、若干遅い感じがします。
また、クラス名とか順番とか決め打ちでやってるので、Twitterの仕様が変わったら使えなくなります。
ChromeのデベロッパーツールでHTMLを見てたんですけど、こういうとき便利ですね。
スポンサーサイト