说 Twitter API 将在 7 天内提供推文,但是当我尝试使用 java 实现我的代码时,我得到的推文结果还不够。它仅在 1 到 2 分钟内涵盖了推文。数据或推文的数量远远满足不了我的需要。我的代码有什么错误吗? 这是我的代码:
public class TweetPublic {
public static void main(String[] args) {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true).setOAuthConsumerKey("key")
.setOAuthConsumerSecret("key")
.setOAuthAccessToken("key")
.setOAuthAccessTokenSecret("key");
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
FileOutputStream fos;
DataOutputStream dos;
try {
File file = new File("C:/Users/Charlie Siagian/Desktop/data.doc");
fos = new FileOutputStream(file);
dos = new DataOutputStream(fos);
try {
Query query = new Query("(#hadoop) OR (#bigdata) OR (#data) OR (#datamining) "
+ "OR (#mapreduce) OR (#flume) OR (#semanticanalytic) OR (#dataset) OR (#rdbms)"
+ "OR (#database) OR (#mysql)");
QueryResult result;
result = twitter.search(query);
List<Status> tweets = result.getTweets();
for (Status tweet : tweets) {
System.out.println("@" + tweet.getUser().getScreenName() + " - " + tweet.getText() + "\n=======\n"
+ tweet.getCreatedAt());
dos.writeBytes("@" + tweet.getUser().getScreenName() + " - " + tweet.getText() + "\n"
+ tweet.getCreatedAt() + "\n=======\n");
}
System.exit(0);
} catch (TwitterException te) {
te.printStackTrace();
System.out.println("Failed to search tweets: " + te.getMessage());
System.exit(-1);
}
} catch (IOException e) {
e.printStackTrace();
}
}
最佳答案
您有一个热门查询,因此您只能获取最后 10 条推文。您可以以 100 为一组返回。使用“&max_id=ID&count=100”
因此添加一个外循环并记住您在之前的迭代中看到的最小 id。对于第一次迭代,不要设置 max_id,然后在后续迭代中不断将 max_id 更新为新的最小值。
https://api.twitter.com/1.1/search/tweets.json?q=%23hadoop+OR+%23bigdata+OR+%23data+OR+%23datamining+OR+%23mapreduce+OR+%23flume+OR+%23semanticanalytic+OR+%23dataset+OR+%23rdbms+OR+%23database+OR+%23mysql&max_id=758939297495982100&count=100
看起来可以在这里找到 http://twitter4j.org/javadoc/twitter4j/Query.html#setMaxId-long-
更一般的文档 https://dev.twitter.com/rest/reference/get/search/tweets
关于java - 为什么我的代码只在 Twitter4j 中获取最近 1 或 2 分钟的推文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38652250/