我正在编写一个程序,该程序使用 twitter4j 从用户时间线中获取大量推文,并将它们写入 CSV 文件。目前我的代码将所有推文返回到控制台,但只将最后一个值写入我的 .CSV 文件。我知道某个地方存在问题,因为在控制台中,每条推文后都会显示“完成”。
Twitter twitter1 = TwitterFactory.getSingleton();
List<Status> statuses = twitter1.getUserTimeline();
System.out.println("Showing home timeline.");
for (Status status : statuses) {
System.out.println(status.getUser().getScreenName() + ":" +
status.getText());
PrintWriter pw = new PrintWriter(new File("/Desktop/cwk/4104/tweets.csv"));
StringBuilder sb = new StringBuilder ();
sb.append("ID");
sb.append(",");
sb.append("UserId");
sb.append(",");
sb.append("Username");
sb.append(",");
sb.append("Name");
sb.append(",");
sb.append("Location");
sb.append(",");
sb.append("Tweet");
sb.append("\n");
for( int i = 0; i < 20; i++ ) {
sb.append(1+i);
sb.append(",");
sb.append(status.getUser().getId());
sb.append(",");
sb.append(status.getUser().getScreenName());
sb.append(",");
sb.append(status.getUser().getName());
sb.append(",");
sb.append(status.getUser().getLocation());
sb.append(",");
sb.append(status.getText());
sb.append("\n");
}
pw.write(sb.toString());
pw.close();
System.out.println("done");
}