【问题标题】:How to search twitter.com/search and parse the data in android如何在android中搜索twitter.com/search并解析数据
【发布时间】:2014-07-02 20:29:36
【问题描述】:

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

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

经过一番搜索后,我发现了那个链接:Using the Search API

上面写着:

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

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

我怀疑Twitter Search 开发者是否使用了这种逻辑。

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

【问题讨论】:

    标签: android search twitter


    【解决方案1】:

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

    技术上是的,但应尽可能避免这种情况。您必须解析 HTML,这是一个既缓慢又容易出错的过程。

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

    您应该坚持使用官方 API。我意识到这个速率限制有点碍事,但我相信你可以通过减少对 API 的调用总量和更有效地使用每个调用来缓解这个问题。你必须记住,这是官方的 Twitter API。 Twitter 肯定希望 Twitter 应用程序既好又好,虽然每小时 100 个呼叫的速率限制似乎很低,但通常应该绰绰有余。如果无论如何达到速率限制,您只需要一些适当的错误处理。我知道大多数第三方推特应用程序在达到速率限制时都会冻结其内容。将显示一个错误,通知用户他无法再更新一个小时,但他仍然可以像以前一样继续使用应用程序,并使用之前调用的所有缓存数据。

    由于您还没有发布任何代码,我不知道还能告诉您什么,请尽量对每个电话保持明智。尽可能使用缓存数据,仅在绝对必要时执行 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);
    

    【讨论】:

    • 你好,我的朋友。我确实意识到 twitter 希望使用它的 API。我已经和我的公司反复讨论过这个问题。作为这个项目的一部分,我包含了一个搜索按钮,它使用户能够获得关键字的热门推文。这意味着我必须获取所有推文,对它们进行排序……事实上,这个过程有点慢。并且没有太多机会使用缓存数据,因为它只搜索。嗯,浏览以前通话中使用过的活动对我来说是有意义的。但恐怕并非所有用户都如此。相反,我想制作...
    • ...直接从推特网页搜索。从mobile.twitter.com 更准确地说,这是因为它需要更少的内存来加载并且会更快。至于推文的速度已经是顶级推文,这意味着我不再需要对它们进行排序 - 只需解析它们即可。它还有一个好处是我不会在Rate Limit 错误中运行。简而言之,它最符合我的要求。对于解析,我考虑过jsoup
    • 很好,只是在解析 HTML 时要小心。我也可以推荐HtmlCleaner。我已经用它来解析 HTML 几次了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 2022-06-14
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多