如何搜索twitter.com/search并解析android中的数据

时间:2014-06-27 10:41:46

标签: android search twitter

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

问题是速率限制。我无法进行多次搜索。

经过排气搜索后,我发现了这个链接:Using the Search API

它说:

  

作为用户,您最好的办法是从twitter.com/search

执行搜索

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

我怀疑Twitter Search开发人员是否使用过该逻辑。

  • 是否可以直接从twitter.com/search
  • 进行搜索
  • 如果是,我应该遵循哪些图书馆/方法/方式?

1 个答案:

答案 0 :(得分:2)

  

是否可以直接进行搜索   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);