Twitterフォロワー数をC#でAPI使わずに取得してみる

2018年10月20日
唐突ですが、
推しているアイドルたちの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を見てたんですけど、こういうとき便利ですね。

スポンサーサイト

タグ:C# twitter
posted at 14:25 | Comment(0) | プログラミング
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: