min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

はてなブログの全記事をPDFにバックアップ

2年前くらいに、自分のブログの記事をPDFにバックアップするスクリプトを書いた。

min117.hatenablog.com

 

年末だし。2年ぶりに全記事をバックアップする。

 

まずは、全ての記事のURLを取得する必要がある。Google Analyticsを使う(ブログ始めて早いうちに登録しといてよかった)。

 

行動メニューから辿る。

f:id:min117:20201229072443p:plain

 

検索期間をブログ開始日(2015/10/15)から今日までする。

f:id:min117:20201229072603p:plain

 

表示件数を5,000件にする。記事が1,000ちょっとくらいだから、全て表示される。

f:id:min117:20201229072724p:plain

※「ページタイトル」をクリックすると、読まれている記事のタイトルが分かる。オカネ絡みと、あとは実用的な記事がよく読まれてる印象。

 

右上のメニューからCSVにエクスポートできる。

f:id:min117:20201229072900p:plain

 

ダウンロードして

f:id:min117:20201229072928p:plain

f:id:min117:20201229072953p:plain

 

vimで覗いてみる。

   1 # ----------------------------------------

   2 # すべてのウェブサイトのデータ

   3 # ページ

   4 # 20151015-20201228

   5 # ----------------------------------------

   6 

   7 ページ,ページビュー数,ページ別訪問数,平均ページ滞在時間,閲覧開始数,直帰率,離脱率,ページの価値

 

おお。全記事のエントリーアドレスこれで分かる。

f:id:min117:20201229073300p:plain

これの頭に、ブログのURLをくっつけてやればいいから、

http://min117.hatenablog.com/entry/2017/09/26/021237

http://min117.hatenablog.com/entry/2017/05/20/091443

http://min117.hatenablog.com/entry/2018/10/19/231819

てな感じになるわけだ。

 

ここまでくれば

[bash Dropbox]$ cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228.csv | awk -F, '{print $1}' | egrep '^/entry/20../../../......$' | grep -v fbclid  | wc

    1331    1331   33279

[bash Dropbox]$ 

 

[bash Dropbox]$ cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228.csv | awk -F, '{print $1}' | egrep '^/entry/20../../../......$' | grep -v fbclid  | more

/entry/2017/09/26/021237

/entry/2017/05/20/091443

/entry/2018/10/19/231819

/entry/2018/02/04/094850

/entry/2017/11/18/112741

/entry/2018/08/20/005121

/entry/2018/07/22/122526

欲しい文字列を切り出せた。

 

tee してファイルに落とす。

[bash Dropbox]$ cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228.csv | awk -F, '{print $1}' | egrep '^/entry/20../../../......$' | grep -v fbclid | tee -a Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv

 

全ての行の先頭にhttp://***comをつけてやる。

   1 http://min117.hatenablog.com/entry/2017/09/26/021237

   2 /entry/2017/05/20/091443

   3 /entry/2018/10/19/231819

   4 /entry/2018/02/04/094850

   5 /entry/2017/11/18/112741

   6 /entry/2018/08/20/005121

vimの矩形選択を使うとイッパツ。

 

こうなる。

   1 http://min117.hatenablog.com/entry/2017/09/26/021237

   2 http://min117.hatenablog.com/entry/2017/05/20/091443

   3 http://min117.hatenablog.com/entry/2018/10/19/231819

   4 http://min117.hatenablog.com/entry/2018/02/04/094850

   5 http://min117.hatenablog.com/entry/2017/11/18/112741

   6 http://min117.hatenablog.com/entry/2018/08/20/005121

 

これをscpでfedoraに送って

[fedora PT3]$ cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv | wc

   1331    1331   33279

[fedora PT3]$ 

 

まずは1件確認。

[fedora PT3]$ cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv | head -n 1

/entry/2017/09/26/021237

よし。

 

wkhtmltopdfでPDF化する。自作スクリプトmywkmtltopdf.shを使う。

f:id:min117:20201229075724p:plain

[fedora 20201229_hatena_blog_backup]$ ll

合計 64

-rwxrwxrwx 1 root root 33279 12月 29 07:59 Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv

-rwxrwxrwx 1 root root 26774 12月 29 07:58 mywkhtmltopdf.sh

[fedora 20201229_hatena_blog_backup]$ 

[fedora 20201229_hatena_blog_backup]$ ./mywkhtmltopdf.sh 

20201229_075932

引数不足 最低1個必要

=======================

./mywkhtmltopdf.sh URL

=======================

[fedora 20201229_hatena_blog_backup]$ 

 

まずは1件。

[fedora 20201229_hatena_blog_backup]$ ./mywkhtmltopdf.sh $(cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv | head -n 1)

 

実行。

-----------------

日付をつける

-----------------

20201229_080427_Amazon_MasterCard_のリボ払いの罠を回避する(リボ支払額の上限を最大化する)___min117の日記

 

======================================================================

URL:http://min117.hatenablog.com/entry/2017/09/26/021237

OUT:20201229_080427_Amazon_MasterCard_のリボ払いの罠を回避する(リボ支払額の上限を最大化する)___min117の日記.pdf

======================================================================

Loading page (1/2)

Error: Failed to load https://www.hatena.ne.jp/notify/notices.count.json?services=1&callback=jQuery1124008069457970279714_1609196670657&_=1609196670658, with network status code 201 and http status code 403 - Error transferring https://www.hatena.ne.jp/notify/notices.count.json?services=1&callback=jQuery1124008069457970279714_1609196670657&_=1609196670658 - server replied: Forbidden

Warning: Failed to load https://id.rlcdn.com/709414.gif (ignore)  

Printing pages (2/2)                                               

Warning: Received createRequest signal on a disposed ResourceObject's NetworkAccessManager. This might be an indication of an iframe taking too long to load.

Done                                                           

Exit with code 1 due to network error: ContentAccessDenied

[fedora 20201229_hatena_blog_backup]$ 

[fedora 20201229_hatena_blog_backup]$ ll

合計 2968

-rwxrwxrwx 1 root root 2935571 12月 29 08:04 20201229_080427_Amazon_MasterCard_のリボ払いの罠を回避する(リボ支払額の上限を最大化する)___min117の日記.pdf

-rwxrwxrwx 1 root root   70547 12月 29 08:03 Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv

-rwxrwxrwx 1 root root   26774 12月 29 07:58 mywkhtmltopdf.sh

[fedora 20201229_hatena_blog_backup]$ 

よし。カンペキ。

f:id:min117:20201229080738p:plain

f:id:min117:20201229080811p:plain

 

あとはこれをfor文で回す。サーバに負荷かけないように10秒のsleepを入れよう。

[fedora 20201229_hatena_blog_backup]$ for i in $(cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv)

> do

> echo "$i"

> ./mywkhtmltopdf.sh "$i"

> sleep 10

> clear

> done

 

あとは丸一日放置。1300記事がバックアップされるはずだ。

f:id:min117:20201229081150p:plain