【问题标题】:get all tweets in a month in java在java中获取一个月内的所有推文
【发布时间】:2017-09-12 17:18:47
【问题描述】:

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

    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();

    }

【问题讨论】:

    标签: java twitter


    【解决方案1】:

    很遗憾,您无法使用搜索 API 获取 2017 年第一个月的推文。 来自documentation

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

    因此,您只能从搜索 API 获取最近的推文。对数据也要小心,因为它是关于相关性而不是完整性,来自同一个文档:

    在参与之前,重要的是要知道 Search API 关注的是相关性而不是完整性。这意味着搜索结果中可能会丢失一些推文和用户。如果你想匹配完整性,你应该考虑使用 Streaming API。

    如果您真的需要较旧的推文,您将不得不从其他来源获取它们,例如 Gnip。否则,您将不得不以不同的方式处理您的问题。

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

    【讨论】: