私はフォロワーにいくつかのツイッターアカウントの数をカウントさせるという簡単なタスクを与えられました。作成しているアプリケーションが各ユーザーのフォロワー数を集計して合計すると思われる1000のtwitterユーザー名が存在する可能性があります。Twitterのレート制限
私は、Twitter APIコール(:C#クライアント)を使用して、各ユーザーに必要な情報を取得しました。
string target = "http:twitter.com/users/" + userName + ".xml";
Console.WriteLine("UserName: " + userName);
WebClient client = new WebClient();
Stream stream = client.OpenRead(target); StreamReader reader = new
StreamReader(stream);
XmlTextReader xml_read = new XmlTextReader(stream);
while (xml_read.Read()) {
xml_read.MoveToElement();
if (xml_read.Name == "name") {
Console.WriteLine("Name: " + xml_read.ReadInnerXml().ToString());
}
if (xml_read.Name == "followers_count"){
Console.WriteLine("Followers: " +
xml_read.ReadInnerXml().ToString());
Console.WriteLine();
}
}
それは率に問題があるしかし、これは(スピードと目的を充足するという点で)大幅に動作します:私は後だ情報は、単にいくつかのパブリックデータ何も特別なことではないので、私は、この認証されていないcalls.Likeを使用しました制限する。すなわち、私は1時間に100回以上のリクエストを行うことはできません。1000人のユーザーのために、この簡単な作業を行うのに10時間必要です! ..
私は必要な情報が公開されているので、私はフォロワー(そして本名)を得るために各ツイッターアカウントのhtmlページをダウンロードすることにしました。同様に:
WebRequest myWebRequest = WebRequest.Create("http://twitter.com/" + userName);
WebResponse myWebResponse = myWebRequest.GetResponse();
Stream ReceiveStream = myWebResponse.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader(ReceiveStream, encode);
string strResponse = readStream.ReadToEnd();
その後、単純な文字列解析を使用して、フォロワー数と実際の名前を取得します。
この解決策は有効です..しかし、htmlファイル全体(300kb +サイズ)をダウンロードすることは実際にそれを行うためのスマートな方法ではありません。さらに、タスクを完了するのにおよそ2時間かかります。
私は何を求めていますか?
私は、よりスマートで効率的な方法でTwitterからパブリック情報を取得することを望んでいます。
どのようにして最初にデータが必要なTwitterアカウントをあなたのアプリケーションに手に入れましたか?アカウントをお持ちの場合、アプリからアカウントにアクセスできるようにしましたか?必要な情報が公開されていることを理解しています。アカウントのトークンを持っている場合は、トークンをループして各アカウントの情報を個別に取得できるため、レート制限はありませんアカウントごとのリクエスト数が制限されます。彼らがレート制限を持つ理由の一部は、人々が承認なしにTwitterデータを養成することはできないからです。 – phreak3eb