LoginSignup
1
1

More than 5 years have passed since last update.

facebook の友達数の推移、投稿数の推移を API を使わずに取得する

Posted at

概要

facebook の友達数や投稿数などを、API を使わずに取得、加工する。

方法

  1. facebook の「Facebookデータをダウンロード」機能で全データをダウンロードする。
  2. awk でごにょごにょして csv とかに加工する。
  3. 表計算ソフトでごにょごにょしてグラフを作ったりする。

まずは友達数の推移を得てみる

fbdice.sh
#!/bin/bash
basedir=/mnt/virya/Downloads/facebook-takeyukikojima
htmldir=${basedir}/html
awk -v today=20170131 -f friends.awk ${htmldir}/friends.htm
# end of file
friends.awk
BEGIN {
    RS = ">";
    caps["友達"] = "friends";
    caps["Sent Friend Requests"] = "sentRequests";
    caps["友達リクエストを受信しました"] = "recievedRequests";
    caps["Deleted Friend Requests"] = "deletedRequests";
    caps["削除した友達"] = "deleted";
    caps["ファン:"] = "fan";
    caps["Friend Peer Group"] = "group";
    if (today != "") {
        today_year  = substr(today, 1, 4);
        today_month = substr(today, 5, 2);
        today_day   = substr(today, 7, 2);
    }
}

match($0, /^(.+)<\/h2$/, a) {
    caption = caps[a[1]];
    delete m; m[caption] = 1;
    next;
}

m["friends"] {
    if (! parseNameAndDay($0)) next;
    piars[name]++;
    from[name] = date;
    next;
}

m["sentRequests"] {
    if (! match($0, /^(.+) <\/li$/, a)) next;
    name = a[1];
    piars[name]++;
    sent[name]++;
    next;
}

m["recievedRequests"] {
    if (! parseNameAndDay($0)) next;
    piars[name]++;
    received[name] = date;
    next;
}

m["deleted"] {
    if (! parseNameAndDay($0)) next;
    piars[name]++;
    deleted[name] = date;
    next;
}

END {
    OFS = ",";
    for (name in piars) {
        print name, from[name], sent[name], received[name], deleted[name];
    }
}

function parseNameAndDay(line) {
    if (! match(line, /^(.+) \((.+)\)<\/li$/, a)) return 0;
    name = a[1];
    date = a[2];
    if (date == "今日") {
        date = today_year "/" today_month "/" today_day;
    } else if (match(date, /^(([0-9]+))?([0-9]+)([0-9]+)日$/, d)) {;
        date = (d[2] == "" ? today_year : d[2]) "/" d[3] "/" d[4];
    } else {
        date = "**" date;
    }
    return 1;
}

# end of file

作ってみた友達数推移グラフ

無題.png

そのうち、投稿数の経時推移グラフも

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1