今回はGoogle Chromeの閲覧履歴をSQliteを使って取得する方法を見ていきます。
| (1) Chromeの履歴データ
Chromeブラウザは何十件かづつであれば、下記のように右上の三本線ボタンから「履歴」で表示することができます。
ただ、分析する際に、これまでのすべての履歴を逐一コピペするわけにもいきませんので、
一覧でcsvファイルで取得する方法を見ていきます。
アウトプットイメージは下記のように、タイムスタンプごとの閲覧URLが、一覧で並んでいるものとなります。
| (2) Chromeの履歴データの保存場所
まずは、Chromeの閲覧履歴のデータがどこにあるか確認します。
macの場合は、通常、下記のフォルダにあります”History”ファイルが該当のものとなります。
「Machintosh HD/ユーザ/(ユーザ名)/ライブラリ/Application Support/Google/Chrome/Default」
※もし上記に無い場合は、「ライブラリ」配下から「Chrome」フォルダを探してみてください。
ちなみに、余談ですが、mac環境において「(ユーザ名)」フォルダから「ライブラリ」が表示されない場合は、
右クリックで「表示オプションを表示」→「”ライブラリ”フォルダを表示」を選択しましょう。
※windowsの場合は、「Local Settings/Application Data/Google/Chrome/User Data/Default」
内にあるかと思います。
念のため、元ファイルはそのままにして、任意の場所にコピーして、以降の作業にうつると良いかと思います。
| (3) SQLiteでのChromeの履歴データの集計
Google Chromeの履歴データである、”history”ファイルはSQliteの形式となっております。
ここからSQlite[ref]サーバサイドではなくアプリケーション上などで実行出来る軽量のデータベース(from wiki)[/ref]を使用しますがmacの場合、もともとインストールされております。
windowsの場合は、公式ページからインストールしておいてください。
historyファイルの中には以下のテーブルが含まれております。
ちなみに、sqlにおいてテーブル一覧、および各テーブルの項目は下記の手順で確認できます。
1 2 3 |
sqlite3 history .tables .schema |
「historyファイル内のテーブル一覧」
downloads |
download_url_chains |
meta |
urls |
keyword_search_terms |
segments |
segment_usage |
visits |
visit_source |
このうち、今回は、「urls」テーブルと、「visits」テーブルを使用します。
それぞれの項目は下記の通りとなります。
「urls」
id |
url |
title |
visit_count |
typed_count |
last_visit_time |
hidden |
favicon_id |
「visits」
id |
url |
visit_time |
from_visit |
transition |
segment_id |
visit_duration |
ここで注意は、「visits」テーブル中の”url”は文字列ではなくint型のurl idということです。
一方、「urls」の”id”はurl idで、”url”は文字列でのURLとなります。
つまり、「visits」の”url”と「urls」の”id”で両テーブルをひもづけることができます。
SQliteで結果をcsvで書き出すには「.mode」、「.output (任意のファイル名).csv」とすればよいですので、
下記で目的のファイルを得ることができます。
1 2 3 |
.mode .output result.csv select visits.url,visits.visit_time,urls.url from visits left join urls on visits.url = urls.id; |
以上により冒頭に示したような下記のようなファイルが抽出できます。
| (4) Chromeの履歴データの可視化
最後に、このようにして得られたGoogle Chromeのタイムスタンプですが、通常のUNIXタイムではなく、
1601年1月1日0:00からの”マイクロ秒”となっている点に注意しましょう。
もしエクセルにて、B列にGoogle Chromeデータの時刻が入っていて、それを日本時間に変換する場合は、
下記数式を変換後のセルに入れておけばよいでしょう。
「=(B7/1000000-11644473600+9*60*60)/86400+25569」
これで、得られたデータから、
ヒストグラムを書いたり、あるサイトを閲覧する前後の傾向を分析したりすることができます。
ちなみに下記が私の閲覧履歴の散布図です。
※横軸が1時間ごとの時刻、縦軸がカウント数(該当時刻、曜日で閲覧された数)、
曜日ごとにマーカーを分けて表示
まあまあ朝型の生活なのではないでしょうか。
頻度は相対的に少ないものの、土曜日はエキセントリックな時間(深夜〜早朝)にも閲覧履歴があるようです。
以上、今回は、Google Chromeの閲覧履歴をSQliteから書き出す方法を見ていきました。