ブログの「内部リンク」と「はてブ情報」をPythonで分析・可視化する方法と結果

f:id:karaage:20180103184316p:plain:w640

自分のブログを分析してみようと思い立った

 そういえば、自分のブログとか分析したこと無かったと思ったので、やってみることにしました。正確には、一応Google Analyticsは登録して設定はしているのですが、画面がたくさんあって何を見れば良いのかも分からず、あんまり興味も湧かなかったので放置していました。

 そんな中、Pythonでブログを分析している人をみかけて「Pythonだったら、自分でソースも多少はいじれそうだし面白そう!」と思い、とりあえず試してみることにしました。具体的には、以下2つの記事を参考に、ほぼそのままやってみました。

 ただ、いつものように自分の環境だとそのまま動かなかったり、多少工夫したりしたところがあるので、結果と合わせて備忘録として記録を残しておきます。

 対象は、はてなブログを想定していますが、今回の内容なら多分他のブログプラットフォームでも多分大丈夫と思います(ダメだったらすみません)。

ブログの分析結果

 今回は、最初に分析結果を載せておきます。こんな結果が分かるようになるという例ですので、興味沸いたら分析手法の方を参照してみて下さい。

内部リンク分析

 内部リンクがどれだけ貼られているかという指標です。詳しくは、ほけきよ(id:imslotter)さんの以下記事を参照下さい。

 結果は以下のような感じです。

f:id:karaage:20180103184316p:plain:w640

f:id:karaage:20180103184313p:plain:w640

 2つ目のグラフは、0の値が大きいので「内部リンク貼ってないないページがたくさんあるぞ!」ということらしいです(多分)

 上のグラフをみると、中の方にごちゃっと密になっている部分があるので「ちゃんと貼ってあるページもあるぞ」ということなのかもしれません。ある時期を境に、一緒に見ておいた方がよい記事を、関連記事として紹介するようにしたのでその影響なのかもしれません。

 改善するには、昔の記事からもリンク貼るということなのでしょうが、昔の記事ってそもそも魂の叫び的な日記だったり、ひたすら下ネタばかりなので関連記事もクソもないのですよね…アクセス数のこと気にするなら、そういう記事は消してしまった方が良いのでしょうけど、そういうのも含めて私のブログなのでまぁ良いかなと。Googleなんて糞食らえということです。

はてなブックマーク分析

 はてなブックマークの分析に関しては、Dai Kawai(@never_be_a_pm)さんの以下記事を参考にしました。

 上の記事では、はてなブックマーク自体のトレンド分析なのですが、今回は少しだけ着眼点を変えて、自分のブログについて書かれているサイトのはてなブックマークの分析をしてみました。

 まずは、ブックマーク数上位の記事をみてみます。

f:id:karaage:20180103184440p:plain:w480

 ふむふむ、見事なまでに一貫性のない記事です。共通点がある単語ってIoTくらいでしょうか?とりあえずIoTって書いておけばOKということが分かりますね(本当か?)

 こんなの「はてなブックマーク」のページで自分のアドレスを検索して、人気順でソートすれば分かるという話は置いておいて下さい。というかここからが本番なので。

 次に、年ごとのはてなブックマーク数をプロットしてみます。

f:id:karaage:20180103184424p:plain:w480

 見事な右肩上がりのグラフですね。実はこのグラフ、私のサイトへのアドレスが含まれている記事を全部拾ってしまうので、私の記事にリンクしている記事も含まれています(寄稿したはてなニュースの記事とか)。なので、純粋に私のブログ記事へのブックマーク数は、もっと少ないのですが今回は寄稿記事も入れたかったのと、大体傾向が分かればよいのでOKとします(まとめサイト的なところはいくつか除外しました)。

 ブックマーク数、ちょっと増えすぎてしまったのでもうこれ以上あんまり増えすぎないようにしたいなと思わせるグラフですね。

 ちなみに、年ごとの記事数の変化は以下となります。

f:id:karaage:20180112105652p:plain:w480

 記事数はどんどん減っていますね。1記事あたりのブックマーク数が増えているということでしょう(多分)

 続いて、はてなブックマークついている記事のブックマーク数のヒストグラムです。

f:id:karaage:20180103184433p:plain:w480

 要は、99%以上の記事のブックマーク数が0ということです。たくさんブックマークがつく記事とつかない記事で2極化しているという当たりことですね。といっても、ブックマークたくさんつくのが良い記事かというと、全然そんなことないので(はてなブックマークのページを見ればよく分かると思います)。特に気にする必要は無いと思います。

 じゃあ、なんで分析したんだという話なのですが、ほんと何で分析しちゃったんでしょうね…

ブログの分析手法

 ここからは、今回使ったブログの分析方法の詳細です。宇宙語が続くので、気になる人だけ読んで下さい。Macを想定していますが、Windowsでも環境構築のところが少し変わるだけで、基本同じ要領でできると思います。

Python環境構築

 まずは、以下の記事をもとにPythonの環境をセットアップしましょう。Python3を使うので、anaconda3の仮想環境を作るところまでやればOKです。

 後は、スクレイピングに必要なseleniumphantomjsをインストールしておきましょう。Macの場合は以下コマンド実行すればOKです。

$ pip install selenium
$ brew install phantomjs

 参考までに、私が試したPython及び関係するライブラリのバージョンは以下です。

python 3.6.1
matplotlib 2.0.2
numpy 1.12.1
pandas 0.20.1
selenium 3.8.0

 分析に使用するソフトですが、ほけきよさんのGitHubのtaikutsu_blog_worksリポジトリをフォークしてDaiさんのスクリプトをベースに作成(Daiさんには改編許可を頂いています)したJupyter Notebookを加えた、以下リポジトリを用意しました。

 以下コマンドでクローン(コピー)して、ディレクトリに移動しておいて下さい。

$ git clone https://github.com/karaage0703/taikutsu_blog_works
$ cd taikutsu_blog_works

 え?まって、そもそもGitHubって何という方は以下参照下さい(GitやGitHub自体は理解していなくてもスクリプト自体の使用は可能です)。

 ここまでできれば準備完了です。

内部リンク分析方法

 以下実行するだけです。アドレスは分析したいサイトに変えて下さい。ページ数多いとかなり時間かかりますので、放置して昼寝するのがオススメです。

$ python all_in_one.py -u http://karaage.hatenadiary.jp -d karaage -g

 ほけきよさんのall_in_one.pyは多機能で、コマンドにオプション追加するだけで、他にも様々なことができます。興味ある方は以下の記事を見て見ましょう。

はてなブックマーク分析

 Jupyter Notebookで書かれているhatebu_analysis.ipynbを以下コマンドで開きましょう。

$ jupyter notebook hatebu_analysis.ipynb

 Jupyter Notebookがよく分からないという人は、以下記事参照ください。

 後はShift + Enterを連打していけば自動的に分析されます。注意点としては、9番目のセルの以下の箇所を自分のアドレスに書き換えることです。またusers=1のところを書き換えれば、対象の記事のブックマーク数の最小値を変えれます。例えば、users=50とすれば50ブクマ以上の記事だけを対象にできます。

url = "http://b.hatena.ne.jp/search/text?q=http%3A%2F%2Fkaraage.hatenadiary.jp%2F&users=1"

まとめ

 ブログをPythonで分析してみました。ただ、この分析が何か役に立ったり、フィードバックできたかというと、全くそんなことはありませんでした。そもそも、私がアクセス数増やしたいとか、はてなブックマークをたくさん欲しいといったモチベーションがそれほどないのですよね。

 当たり前の話なのですが、データ分析はモチベーション(目的)に基づいて、仮説を立てて検証する。そのためのツールとして使うといったことをしないと意味がないのだと、あらためて実感しました。Google Analysisも同じですね。目的や仮説がないと、いくら分析しても何もでてきません。

 結果的にはPythonの勉強になったので良いかなと思っています。これも何でもやってみないと分からないという教訓ですね(笑)みなさんも興味あれば一度試してみると色々分かることあるかもしれません。

参考リンク

【Python】スクレイピング→データ収集→整形→分析までの流れを初心者向けにまとめておく ~Pythonに関するはてな記事を10年分スクレイピングし、Pythonトレンド分析を実際にやってみた~

スクレイピングの最強ツールはGoogle Spreadsheetで決まり!面倒な情報収集はGoogle Spreadsheetにやらせよう!|Review of My Life

はてブ情報をpythonで可視化できるようにしたよ! - プロクラシスト

Python、Seleniumの基本 - naritoブログ

関連記事