2012-01-05 29 views
1

私はフォロワーにいくつかのツイッターアカウントの数をカウントさせるという簡単なタスクを与えられました。作成しているアプリケーションが各ユーザーのフォロワー数を集計して合計すると思われる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からパブリック情報を取得することを望んでいます。

+0

どのようにして最初にデータが必要なTwitterアカウントをあなたのアプリケーションに手に入れましたか?アカウントをお持ちの場合、アプリからアカウントにアクセスできるようにしましたか?必要な情報が公開されていることを理解しています。アカウントのトークンを持っている場合は、トークンをループして各アカウントの情報を個別に取得できるため、レート制限はありませんアカウントごとのリクエスト数が制限されます。彼らがレート制限を持つ理由の一部は、人々が承認なしにTwitterデータを養成することはできないからです。 – phreak3eb

答えて

2

はたぶん、あなたはこのソリューションを使用することができます:それはあなたに最大100のユーザ名のデータを要求する機能を提供しますhttps://dev.twitter.com/docs/api/1/get/users/lookup

を(カンマ区切り)。このよう: https://api.twitter.com/1/users/lookup.json?screen_name=bloodyairtimer,geertvdc

結果をxmlまたはjsonにしたいかどうかを決めることができます。おそらく、jsonのサイズはxmlより小さくなるでしょう。

+0

ありがとうございました!これはまさに私が必要としていたものです。 (答えとしてマークされている)\。 – aamran

+0

それがあなたを助けたと聞いてよかったです。ツイッターAPIには同じ結果が出るいくつかの道があります。 – ChristiaanV

1

私は同じ問題を抱えています。私は開発者フォーラムを通じてTwitterサポートに頼んだが、役に立たない返答を受け取っていない。すべてのAPIメソッドにはレート制限があります。一般に、認証されている場合は、より大きな値(パブリックメソッドの場合は150、認証の場合は350)を持つことができますが、大きな価値はありません。

複数のIPアドレスを使用できる場合は、リクエストカウントを変えることができますが、この場合のカウントはIPではなくユーザー向けであるため、認証でAPIを呼び出す方がよいでしょう。

Twitterのレート制限ポリシーは、ここで定義されています https://dev.twitter.com/docs/rate-limiting/faq

+0

ありがとうございます。私は2つの異なる型を認識していますが、いずれも私の使用事例では十分ではありません。私は取得しようとしている情報はレート制限なしにTwitterのウェブサイトを通じて公然とアクセスできるので、私は無限の解決策を望んでいた。 – aamran

0

あなたはまた、彼らはツイッターのすべてを保存しているGnip

のようなサービスを使用することができます!