我一直在处理android中的twitter应用程序。我使用了Oauth身份验证,并做了一些搜索给定的关键字。

问题是速率限制。我无法执行很多搜索。

在进行详尽搜索之后,我发现了该链接:Using the Search API

它说:


  作为用户,最好的选择是从twitter.com/search执行搜索


然后,我在Google Play Twitter Search中找到了一个甚至不使用身份验证并且执行无限搜索的应用程序。

我怀疑开发人员是否使用了这种逻辑。


是否可以直接从Twitter Search进行搜索?
如果是,我应该遵循哪些库/方法/方式?

最佳答案

是否可以直接从
  twitter.com/search?


从技术上讲是可以的,但应尽可能避免这样做。您将不得不解析HTML,这是一个缓慢且容易出错的过程。


  我应该遵循哪些库/方法/方式?


您应该坚持使用官方API。我意识到此速率限制是一种方式,但是我相信您可以通过减少对API的调用总量并更有效地使用每个调用来缓解此问题。您必须记住,这是官方的Twitter API。 Twitter肯定希望Twitter应用程序很棒且很棒,尽管每小时100个呼叫的速率限制似乎很低,但通常应该绰绰有余。无论如何,只要达到速率限制,您只需要适当的错误处理即可。我知道,大多数第三方Twitter应用程序在达到速率限制时只会冻结其内容。将显示一条错误消息,通知用户他不能再更新一个小时,但他仍可以像以前一样继续使用该应用程序,并保留先前调用中的所有缓存数据。

由于您尚未发布任何代码,因此我不确定还能告诉您什么,只要对每个电话都保持警惕即可。尽可能使用缓存的数据,仅在绝对必要时才执行API调用。



编辑:我认为从https://mobile.twitter.com/search解析数据将是您的最佳选择。只需使用类timeline查找div。该div中的每个<table />都包含一条推文。解析起来应该没有那么困难。

我使用HtmlCleaner对其进行了测试:

HtmlCleaner cleaner = new HtmlCleaner();
TagNode root = cleaner.clean("https://mobile.twitter.com/search?q=asdf");
... // Filter out div with class "timeline"
List<? extends TagNode> tweets = timeLineDiv.getElementListByAttValue("class", "tweet", false, true);

07-24 09:23