Twitterから特定のテレビ番組の実況ツイートを取得する方法とプログラムをまとめます。
開発言語はjavaとし、Twitterからツイートを取得するためにTwitter4Jを使用しました。
<参考サイト>
Twitterからつぶやきを取得する。 -放浪するエンジニアの覚え書き
<プログラム>
- 取得したツイートをcsvファイルに書き込む
- RT、@、URL、ハッシュタグの削除
- 投稿日時、ユーザ名、本文を取得し、csvファイルには本文だけ書き込む
// 初期化 Twitter twitter = new TwitterFactory().getInstance(); Query query = new Query(); try { File file = new File("C:\\csv\\Tweet21.csv"); PrintWriter pw = new PrintWriter(file, "Shift-JIS"); //追記で書き込む // pw = new PrintWriter(new BufferedWriter(new FileWriter(file,true))); DefaultTableModel tableModel = new DefaultTableModel(new String[]{"日付", "名前", "本文"}, 0); // 検索ワードをセット //query.setQuery("#" + txtSearchText.getText()); query.setQuery("#" +txtSearchText.getText()); // 1度のリクエストで取得するTweetの数(100が最大) query.setCount(100); query.setSince("2016-09-01"); query.setUntil("2016-09-10"); // 1500件(15ページ)最大数 for (int i = 1; i <= 15; i++) { // 検索実行 QueryResult result = twitter.search(query); System.out.println("ヒット数 : " + result.getTweets().size()); System.out.println("ページ数 : " + new Integer(i).toString()); // 検索結果を見てみる for (Status tweet : result.getTweets()) { // 本文 // String s = tweet. // Dateクラスとユーザ名 String date = tweet.getCreatedAt().toString(); String user = tweet.getUser().getName(); String str = tweet.getText(); // 特定の文字の削除 str = str.replaceAll("RT", ""); // str = str.replaceAll("@", ""); if (str.charAt(1) == '@') { int index = str.indexOf(":"); // str = str.substring(index + 1, str.length()); str = str.substring(index + 1); } // httpから始まるURLの削除 if (str.contains("http")) { int index = str.indexOf("http"); str = str.substring(0, index); // System.out.println(index + ", total = " + str.length()); } if(str.contains("#")){ int index =str.indexOf("#"); str =str.substring(0,index); } if(str.contains("#")){ int index =str.indexOf("#"); str =str.substring(0,index); } // pw.println(date + "," + user + ","); pw.println(str); tableModel.addRow(new String[]{date, user, str}); // リツイート int ret = tweet.getRetweetCount(); // ハッシュタグとURLの削除 StringTokenizer sta = new StringTokenizer(str, " "); //トークンの出力 /* while (sta.hasMoreTokens()) { String wk = sta.nextToken(); // if (wk.contains("http") // && wk.contains("RT") && wk.contains("@")) { pw.print(", ," + wk); // } } */ } if (result.hasNext()) { query = result.nextQuery(); } else { break; } } pw.close(); tableTweets.setModel(tableModel); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }