アメブロ Excelでアクセス数管理、HTMLコードからデータ抽出し蓄積

スポンサーリンク

アクセス数の過去データ

アメブロのアクセス解析は当月を含んで過去3カ月分のデータしか見れません。Amebaアプリを使ったアクセス数がアメブロのアクセス解析でしか収集できないためアクセス数管理をするには過去データは自分でセーブして蓄積していくしかありません。

htmlコードから抽出

Web画面に表示された数値をコピーする方法は別で紹介しました。ただこのやり方は数値が表示されているリンク元別や記事別では使えますが、日別アクセス総数などのグラフ上にマウスカーソルを置かないと数値が表示されない画面では使えません。
この場合はhtmlコードから直接数値データを抽出します。抽出したデータをExcelを使って加工して数値データとして使えるようにしていきます。

ブラウザのデベロッパーツールを使う

コードを見るのはブラウザ標準で装備されているデベロッパーツールを使います。
ブラウザとしては以下の4つで確認しています。

  • Chrome
  • Edge
  • Firefox
  • IE11

デベロッパーツールは各ブラウザ実装されていてF12キーで起動できます。
今回はアメブロ投稿時のおすすめブラウザであるChromeを使って解説します。

F12キーでデベロッパーツール起動

コードを探す

アクセス解析の1ヶ月分の日別アクセス数の画面で抽出を行ってみます。
その画面でF12キーを押すとそのWebページのコードが表示されます。
ツールの表示エリアは境目を自由に動かせますので見やすいように広げてください。

ツールの左上にある選択ツールをクリックします。
選択ツールはマウスカーソルを置くと
【select an element in the page to inspect】
と表示されるマークのところです。

アクセス解析の日別グラフの真ん中あたりの日を選択します。(真ん中の日の方がコード画面で区別しやすいので)
ツール側でそのグラフに該当するhtmlコードにジャンプします。
以下のコードかその配下に行くはずです。

<li class=”p-barChart__item”>

このコードが日数分あります。31日まである月なら31個です。その1番最初のコードまで上がってください。その1行上に次のコードがあるはずです。

<ul class=”p-barChart__list p-barChart__list–month p-barChart__list–pv”>

このコードを選ぶとアクセス解析の日別グラフ全体が選択状態になります。ならなければ違うコードを選んでいます。

コードの選択

コードの選択

そしてこのコードを右クリックしてメニューをだします。
【Edit as HTML】
を選択します。
EdgeやIE11なら【HTMLとして編集】と表示されます。

HTMLとして編集

HTMLとして編集

すると編集可能な状態でhtmlコードが表示されます。
そのコードをトリプルクリックするとコード全体が選択されます。
その状態から右クリックしてコピーします。
コードが1行でコピーされます。

Excelで編集

使っているExcelバージョンは2016です。旧バージョンでもほぼ同じはずです。

コピーしたコードをA1セルに貼り付けます。1行が一つのセルに入ります。
ここで1点注意があります。
Excelの1セルに入力できる文字数に制限があります。

1セル最大32,767 文字

これが最大文字数制限です。日別アクセス数のコードではこの制限は超えませんが他のデータでは超えることもあります。文字制限数を超えると下のセルに分割されて貼り付きます。

以下は関数の解説ですが、不要であれば一番下の「入力する関数のまとめ」まで飛ばして記載してある関数をそのまま指定したセルにコピぺしてください。

日付とアクセス数の抽出

A1セルに貼り付けたコードから日付とアクセス数だけを抜き出します。
マクロよりも簡単な関数で全部抜き出していきます。
方法はコードの中からキーワードを探していく方法です。

このhtmlコードには「アクセス数」という文字が日数分使われていることがわかります。よってこの「アクセス数」という文字をキーワードとして探していきます。
使う関数はFIND関数です。

FIND関数

この関数は指定された文字列を他の文字列の中で検索し、その文字列が最初に現れる位置を左端から数え、その番号を返します。

FIND(検索文字列, 対象, [開始位置])

今回はこうなります。A2セルに記入します。

=FIND(“アクセス数”,$A$1)

$記号でセルを固定してください。
A3セルに次の「アクセス数」という文字を探す関数を記入します。

=FIND(“アクセス数”,$A$1,A2+1)

A2で探した文字数に1を足してそこから次の「アクセス数」という文字を探します。
これ以下のセルはA3セルのコピーで可能です。31日分なのでA32セルまでコピーします。

日付位置の探索ですが、「アクセス数」という文字の前にあります。間には<br></span>という11文字のコードがあります。日付は12/31(月)のような8文字と1/1(火)のような6文字があります。とうことで「アクセス数」という文字の先頭から11+8=19文字前から11+6=17文字前の間にあることになります。

日付が何文字かはわからないので日付の前の文字を探索します。日付の前には <span> というコードがあるのでこの > 文字を探すことにします。
B2セルに次の関数と記入します。

=FIND(“>”,$A$1,A2-20)

A2は「アクセス数」という文字の先頭番号、そこから17~19文字前が日付の先頭なのでそのさらに1文字前の20文字前で > を探します。
B3セルからB32セルにはB2セルをコピーします。

次にアクセス数の数字部分の探索です。
「アクセス数」+「:」の次が数値の始まりになっていますので数値の終わり位置を探せればいいことになります。これも「アクセス数」の次の</span>コードの < を探します。
C3セルに次の関数を記入します。

=FIND(“<“,$A$1,A2)

これで文字位置を探せたので次は文字を抜き出すMID関数です。

MID関数

この関数は文字列の指定された位置から指定された文字数の文字を返します。

MID(文字列, 開始位置, 文字数)

次のようになります。D2セルに記入。

=MID($A$1,B2+1,A2-B2-15)

この状態では文字列として日付が抽出されるので統計などで扱うには不便です。Excelで扱う日付の数値にしたい場合はDATEVALUE関数を使います。

DATEVALUE 関数

この関数は文字列として格納された日付を、Excel で日付として認識できるシリアル値に変換します。

DATEVALUE(日付文字列)

こうなります。

=DATEVALUE(MID($A$1,B2+1,A2-B2-15))

セルの書式設定で日付表示にしておけば日付で表示されます。曜日を表示したい場合は書式設定を以下のようにしてください。

yyyy/m/d(aaa)

最後の(aaa)で曜日を(水)のような形式で表示してくれます。

そしてアクセス数値の抜き出しもMID関数です。
E2セルに次のように記入します。

=MID($A$1,A2+6,C2-A2-6)

これも文字列で抽出されるのでVALUE関数で数値に変換します。

VALUE 関数

この関数は数値を表す文字列を数値に変換します。

VALUE(文字列)

こうなります。

=VALUE(MID($A$1,A2+6,C2-A2-6))

これで日付と数値がきれいに並びました。

入力する関数まとめ

記入するセルと内容

  • A1 htmlコード貼付け
  • A2 =FIND(“アクセス数”,$A$1)
  • A3 =FIND(“アクセス数”,$A$1,A2+1)
  • B2 =FIND(“>”,$A$1,A2-20)
  • C2 =FIND(“<“,$A$1,A2)
  • D2 =DATEVALUE(MID($A$1,B2+1,A2-B2-15))
  • E2 =VALUE(MID($A$1,A2+6,C2-A2-6))
  • 以下はセルのコピーを32行以上行う(31日分)
入力した関数

入力した関数

あとは関数を数値に置き換えるためD列、E列をコピーして違うシートや列に値として貼り付けます。
このExcelシートを保存しておけば別の月の日別アクセス数のhtmlコードをA1セルに貼り付けるだけで日付と数値の抜き出しが完了します。