Twitterのツイート/フォロー/フォロワー/いいね数を取得

GoogleAppsScriptを使用したTwitterのスクライピングです。

ソースコード

twitter.gs// Twitterのツイート/フォロー/フォロワー/いいね数を取得する
function getTwitterData() {
  // HTML取得
  var url = 'https://twitter.com/TwitterJP';
  var postheader = {
    "timeout":"50000"
  }
  var parameters = {
    "method":"get",
    "muteHttpExceptions": true,
    "headers": postheader
  }
  var html = UrlFetchApp.fetch(url, parameters).getContentText('UTF-8');

  // HTML解析
  var data = {};
  var items = finds(html, '<li class="ProfileNav-item', '</li>');
  for (var i=0; i<items.length; i++) {
    var navs = finds(items[i], 'data-nav="', '"');
    var datas = finds(items[i], 'data-count=', ' ');
    if (navs.length == 1 && datas.length == 1) {
      data[navs[0]] = datas[0];
    }
  }

  // データ出力
  Logger.log(data);  // [18-11-27 17:20:01:485 JST] {favorites=627, followers=2230809, following=127, tweets=9022}
}

// 開始終了に挟まれた文字列の配列を取得する
function finds(html, start, end) {
  var results = [];
  var index = 0;
  while (true) {
    var s = html.indexOf(start, index);
    if (s != -1) {
      var e = html.indexOf(end, s + start.length);
      if (e != -1) {
        results.push(html.substring(s + start.length, e));
        index = e + end.length;
        continue;
      }
    }
    break;
  }
  return results;
}

補足

  • 改善案
    • GoogleスプレッドシートからURLを取得する
    • Googleスプレッドシートに結果を書き込む
    • 直近のツイートを取得する
    • ツイート一覧を取得する
      • 素直にAPI使ったほうが...。

参考