今回はGoogle Chromeの閲覧履歴をSQliteを使って取得する方法を見ていきます。

| (1) Chromeの履歴データ

Chromeブラウザは何十件かづつであれば、下記のように右上の三本線ボタンから「履歴」で表示することができます。

Google Chrome

ただ、分析する際に、これまでのすべての履歴を逐一コピペするわけにもいきませんので、
一覧でcsvファイルで取得する方法を見ていきます。
アウトプットイメージは下記のように、タイムスタンプごとの閲覧URLが、一覧で並んでいるものとなります。

Google Chrome履歴


| (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 1を使用しますがmacの場合、もともとインストールされております。
windowsの場合は、公式ページからインストールしておいてください。

historyファイルの中には以下のテーブルが含まれております。
ちなみに、sqlにおいてテーブル一覧、および各テーブルの項目は下記の手順で確認できます。


「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」とすればよいですので、
下記で目的のファイルを得ることができます。


以上により冒頭に示したような下記のようなファイルが抽出できます。

Google Chrome履歴


| (4) Chromeの履歴データの可視化

最後に、このようにして得られたGoogle Chromeのタイムスタンプですが、通常のUNIXタイムではなく、
1601年1月1日0:00からの”マイクロ秒”となっている点に注意しましょう。
もしエクセルにて、B列にGoogle Chromeデータの時刻が入っていて、それを日本時間に変換する場合は、
下記数式を変換後のセルに入れておけばよいでしょう。

「=(B7/1000000-11644473600+9*60*60)/86400+25569」

これで、得られたデータから、
ヒストグラムを書いたり、あるサイトを閲覧する前後の傾向を分析したりすることができます。

ちなみに下記が私の閲覧履歴の散布図です。
※横軸が1時間ごとの時刻、縦軸がカウント数(該当時刻、曜日で閲覧された数)、
曜日ごとにマーカーを分けて表示

Google Chrome閲覧履歴

まあまあ朝型の生活なのではないでしょうか。
頻度は相対的に少ないものの、土曜日はエキセントリックな時間(深夜〜早朝)にも閲覧履歴があるようです。

以上、今回は、Google Chromeの閲覧履歴をSQliteから書き出す方法を見ていきました。

Notes:

  1. サーバサイドではなくアプリケーション上などで実行出来る軽量のデータベース(from wiki)