首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Twitter速率限制

Twitter速率限制
EN

Stack Overflow用户
提问于 2012-01-05 08:53:06
回答 3查看 1.6K关注 0票数 1

我被赋予了一个简单的任务,那就是让关注者清点一些twitter账户。我正在创建的应用程序可能有1000个twitter用户名,用于计算每个用户的关注者数量并对其进行汇总。

这似乎是一个简单的任务,所以我所做的就是使用Twitter调用(来自一个客户机)来获取每个用户所需的信息。因为我想要的信息没有什么特别之处,只是一些公共数据,所以我使用了未经身份验证的calls.Like:

代码语言:javascript
运行
复制
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(); 
      }
}

这是很大的工作(就速度和充分的目的),但它有速度限制的问题。也就是说,我每小时不能做超过100个请求。所以对于1000个用户,我需要10个小时来完成这个简单的任务!

我试着走另一条路..。由于我需要的信息是公开的,我决定下载每个twitter帐户的html页面,以获得追随者(和真实姓名)。就像这样:

代码语言:javascript
运行
复制
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获取公共信息。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-05 14:49:53

也许您可以使用以下解决方案:https://dev.twitter.com/docs/api/1/get/users/lookup

它使您能够请求多达100个用户名(逗号分隔)的数据,如:https://api.twitter.com/1/users/lookup.json?screen_name=bloodyairtimer,geertvdc

您可以自行决定是否希望xml或json中的结果。也许json的大小将小于xml。

票数 2
EN

Stack Overflow用户

发布于 2012-01-05 09:10:19

我也有同样的问题。我通过开发者论坛请求twitter支持,但我没有收到有用的回复。每个API方法都有一个速率限制,一般来说,如果您是经过身份验证的,您可以有一个更大的(公共方法150,身份验证350 ),但它不是很大的价值。

如果您可以使用多个IP地址,则可以有不同的请求计数,但是最好是使用身份验证调用API,因为在这种情况下,计数不是针对IP的,而是针对用户的。

twitter利率限制策略在这里定义:https://dev.twitter.com/docs/rate-limiting/faq

票数 1
EN

Stack Overflow用户

发布于 2012-01-17 10:03:23

您也可以使用像Gnip这样的服务。

他们储存了所有的推特!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8739801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档