1

いくつかの Twitter アカウントのフォロワー数を取得するという簡単なタスクが与えられました。私が作成しているアプリケーションが各ユーザーのフォロワー数を取得して合計することになっている 1000 の Twitter ユーザー名が存在する可能性があります。

簡単な作業のように思えるので、私が行ったことは、( C# クライアントからの) Twitter API 呼び出しを使用して、各ユーザーに必要な情報を取得することでした。私が求めている情報は特別なものではなく、一部の公開データであるため、認証されていない呼び出しを使用しました。

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(); 
      }
}

これは(速度と目的を十分に満たすという点で)非常に機能しますが、レート制限に問題があります。つまり、1 時間あたり 100 件以上のリクエストを処理することはできません。したがって、1000 人のユーザーの場合、この単純なタスクを実行するのに 10 時間かかることになります。..

私は別の道を歩もうとしました.. 必要な情報は公開されているので、フォロワー (および本名) を取得するために、各 Twitter アカウントの 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 から公開情報を取得するための、よりスマートで効率的な方法があることを期待/確信しています。

4

3 に答える 3

2

たぶんあなたはこの解決策を使うことができます:https ://dev.twitter.com/docs/api/1/get/users/lookup

https://api.twitter.com/1/users/lookup.json?screen_name=bloodyairtimer,geertvdcのように、最大​​100のユーザー名(コンマ区切り)のデータをリクエストすることができます 。

結果をxmlまたはjsonのどちらにするかを自分で決めることができます。たぶん、jsonのサイズはxmlよりも小さくなります。

于 2012-01-05T14:49:53.667 に答える
1

私は同じ問題を抱えています。開発者フォーラムから Twitter サポートに問い合わせましたが、有益な回答がありません。すべての API メソッドにはレート制限があります。一般に、認証されている場合はより大きな値 (パブリック メソッドの場合は 150、認証済みの場合は 350) を設定できますが、それほど大きな値ではありません。

複数の IP アドレスを使用できる場合は、異なるリクエスト カウントを使用できますが、この場合のカウントは IP ではなくユーザーに対してであるため、認証を使用して API を呼び出した方が適切です。

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

于 2012-01-05T09:10:19.080 に答える
0

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

彼らはすべてのツイッターを保存しました!

于 2012-01-17T10:03:23.490 に答える