在java中获取一个月内的所有推文

时间:2017-09-12 17:18:47

标签: java twitter

我想用这个主题标签收集所有推文:“#Iran”2017年的第一个月,我尝试了这段代码,但它不起作用,请帮忙。

    ConfigurationBuilder configurationBuilder = new ConfigurationBuilder()
            .setDebugEnabled(true)
            .setOAuthAccessTokenSecret(AccessTokenSecret)
            .setOAuthAccessToken(AccessToken)
            .setOAuthConsumerKey(ConsumerKey)
            .setOAuthConsumerSecret(ConsumerSecret);

    TwitterFactory twitterFactory = new TwitterFactory(configurationBuilder.build());
    Twitter twitter = twitterFactory.getInstance();




    Query query = new Query("#IRAN");

    query.setCount(100);

    query.setSince("2017-01-01");
    query.setUntil("2017-02-01");

    QueryResult queryResult = twitter.search(query);

    while (queryResult.hasNext()) {
        List<Status> status = queryResult.getTweets();
        for (Status status1 : status) {
            System.out.println("user : " + status1.getUser() + "\n" + status1.getText() + "\n" +
                    "ID : " + status1.getId() + "\n" + "Date : " + status1.getCreatedAt() +
            "\n\n*****************************************************");
        }
        query = queryResult.nextQuery();

    }

1 个答案:

答案 0 :(得分:0)

可悲的是,您无法使用搜索API从2017年的第一个月开始发送推文。 来自documentation

  

搜索API不是所有推文的完整索引,而是最近推文的索引。目前索引包含6-9天的推文。

因此,您只能从搜索API获取最近的推文。在相同的文档中,请注意数据的相关性而不是完整性:

  

在介入之前,重要的是要知道Search API专注于相关性而非完整性。这意味着搜索结果中可能缺少某些推文和用户。如果要匹配完整性,则应考虑使用Streaming API。

如果您真的需要较旧的推文,则必须从Gnip等其他来源获取。否则你将不得不采取不同的方式解决你的问题

如果您拥有要获取信息的所有用户的姓名(或ID),您可以从每个用户获得最多3200条推文的timelines