我想用这个主题标签收集所有推文:“#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();
}
答案 0 :(得分:0)
可悲的是,您无法使用搜索API从2017年的第一个月开始发送推文。 来自documentation:
搜索API不是所有推文的完整索引,而是最近推文的索引。目前索引包含6-9天的推文。
因此,您只能从搜索API获取最近的推文。在相同的文档中,请注意数据的相关性而不是完整性:
在介入之前,重要的是要知道Search API专注于相关性而非完整性。这意味着搜索结果中可能缺少某些推文和用户。如果要匹配完整性,则应考虑使用Streaming API。
如果您真的需要较旧的推文,则必须从Gnip等其他来源获取。否则你将不得不采取不同的方式解决你的问题
如果您拥有要获取信息的所有用户的姓名(或ID),您可以从每个用户获得最多3200条推文的timelines。