是否可以获得超过100条推文?

时间:2013-07-26 18:00:14

标签: java twitter4j

使用Twitter4j API可以获得超过100条推文吗? 如果是这样,任何人都可以指出这样做的方法吗?

7 个答案:

答案 0 :(得分:23)

需要查看您的代码以提供特定于您的案例的代码示例,但您可以通过since_idmax_id执行此操作。

此信息适用于Twitter API。

要获取之前的 100条推文:

  1. 在您使用查询检索的集合中找到最低 ID
  2. 执行相同的查询,max_id选项设置为您刚刚找到的ID。
  3. 要获取下一个 100条推文:

    1. 在您刚刚使用查询检索的集合中找到最高 ID
    2. 执行相同的查询,since_id选项设置为您刚刚找到的ID。
    3. 在Twitter4j中,您的Query对象有两个代表上述API选项的字段:sinceIdmaxId

答案 1 :(得分:4)

You can't load more than 100 tweet per request但我不知道你为什么要这样做 您可以在“无尽页面”中加载所有推文,即每次用户滚动列表时加载10个项目。

例如

Query query = new Query("stackoverflow");
query.setCount(10);// sets the number of tweets to return per page, up to a max of 100
QueryResult  result = twitter.search(query);

现在如果你想加载下一页 简单易用

if(result.hasNext())//there is more pages to load
{
query = result.nextQuery();
result = twitter.search(query);
}

等等。

答案 2 :(得分:4)

使用最低id迭代到较旧页面的某些Java代码可能如下所示:

Query query = new Query("test");
query.setCount(100);

int searchResultCount;
long lowestTweetId = Long.MAX_VALUE;

do {
    QueryResult queryResult = twitterInstance.search(query);

    searchResultCount = queryResult.getTweets().size();

    for (Status tweet : queryResult.getTweets()) {

        // do whatever with the tweet

        if (tweet.getId() < lowestTweetId) {
            lowestTweetId = tweet.getId();
            query.setMaxId(lowestTweetId);
        }
    }

} while (searchResultCount != 0 && searchResultCount % 100 == 0);

答案 3 :(得分:4)

以下是如何为用户获取所有推文(或至少高达~3200):

import java.util.*;
import twitter4j.*;
import twitter4j.conf.*;

ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey("");
cb.setOAuthConsumerSecret("");
cb.setOAuthAccessToken("");
cb.setOAuthAccessTokenSecret("");

Twitter twitter = new TwitterFactory(cb.build()).getInstance();

int pageno = 1;
String user = "cnn";
List statuses = new ArrayList();

while (true) {

  try {

    int size = statuses.size(); 
    Paging page = new Paging(pageno++, 100);
    statuses.addAll(twitter.getUserTimeline(user, page));
    if (statuses.size() == size)
      break;
  }
  catch(TwitterException e) {

    e.printStackTrace();
  }
}

System.out.println("Total: "+statuses.size());

答案 4 :(得分:2)

为了增加Luke的方法,Twitter4j确实为查询提供了分页。您可以尝试为查询提取多个页面。设置每页的结果和页码。

但我建议首先尝试since_id,然后尝试分页。

答案 5 :(得分:1)

当您收到包含前100个结果的响应时,您还将获得该响应的下一个ID。此ID可用作查询参数“ next” = {您在上一次通话中收到的ID},而在再次拨打电话时,它将向您发送下100条推文。

答案 6 :(得分:0)

对于给定的查询,可以提取超过100条推文。对于快速演示,您可以下载用于推文提取的推特GUI应用程序http://preciselyconcise.com/apis_and_installations/tweets_extraction_from_twitter.php

通过从该查询的所有可用页面中提取查询结果,您将能够在该查询下提取超过100条推文。我下载了该网站提供的GUI应用程序,我能够提取超过1000条推文以查询#happy。