Java 有可能获得100条以上的推文吗?

Java 有可能获得100条以上的推文吗?,java,twitter4j,Java,Twitter4j,使用Twitter4j API可以获得100条以上的推文吗? 如果有的话,有人能指出这样做的方法吗 需要查看您的代码以提供特定于您的案例的代码示例,但您可以通过完成此操作,因为\u id或max\u id 此信息用于Twitter API 要获取前100条推文,请执行以下操作: 在您刚刚通过查询检索到的集合中查找最低id 将max\u id选项设置为刚找到的id,执行相同的查询 要获取下100条推文,请执行以下操作: 查找集合中刚通过查询检索到的最高id 使用设置为刚找到的id的自\u id选项

使用Twitter4j API可以获得100条以上的推文吗?

如果有的话,有人能指出这样做的方法吗

需要查看您的代码以提供特定于您的案例的代码示例,但您可以通过
完成此操作,因为\u id
max\u id

此信息用于Twitter API

要获取前100条推文,请执行以下操作:
  • 在您刚刚通过查询检索到的集合中查找最低id
  • max\u id
    选项设置为刚找到的id,执行相同的查询
  • 要获取下100条推文,请执行以下操作:
  • 查找集合中刚通过查询检索到的最高id
  • 使用设置为刚找到的id的
    自\u id
    选项执行相同的查询

  • 在Twitter4j中,您的
    查询
    对象有两个字段表示上述API选项:
    sinceId
    maxId
    添加到Luke的方法Twitter4j确实提供了查询分页。您可以尝试为查询获取多个页面。设置每页的结果和页码

    但是我建议先尝试
    ,因为_id
    ,然后尝试分页

    但我不知道你为什么想要这个 您可以在“无止境页面”中加载所有推文,即每次用户滚动列表时加载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);
    }
    

    等等

    对于给定的查询,可以提取100条以上的tweet。为了快速演示,您可以下载twitter GUI应用程序,用于推特提取,网址为


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

    一些使用最低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);
    
    Query Query=新查询(“测试”);
    query.setCount(100);
    int searchResultCount;
    long lowestTweetId=long.MAX_值;
    做{
    QueryResult QueryResult=twitterInstance.search(查询);
    searchResultCount=queryResult.getTweets().size();
    对于(状态tweet:queryResult.getTweets()){
    //用推特做什么都行
    if(tweet.getId()
    以下是如何获取用户的所有推文(或至少高达3200条):


    当您得到一个包含前100个结果的响应时,您也会得到下一个响应id。此id可用作查询参数“下一步”=
    {您从上一次通话中收到的id}再次通话时,它将为您提供接下来的100条tweet。

    @NarendraPathai I I am..默认计数为100。我尝试了多次使用循环和查询,但我得到了相同的100条tweet。。这就是为什么我要问是否真的有办法?这个解决方案是最方便的。不幸的是,这个解决方案似乎并不适用于所有查询。如果您的查询具有特殊字符,例如
    query query=new query(“*”)
    然后
    result.nextQuery()
    没有正确编码它们,导致twitter api中出现错误“无法验证您”。请将max\u id设置为max\u id-1,否则,您将收到最后一条tweet两次
    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());