/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

はてなブログの記事一覧のURLを取得する

f:id:yatta47:20190804214207p:plain

はてなブログの記事一覧URLを取得します。

調べるとPythonを使ってAPIたたいたり、GoogleAppScriptでスクレイピングしたりする方法が多いですが、Linuxのコマンドで実施します。

URLのもとは、エクスポートしたファイルを利用します。

 

ファイルの中身を確認

エクスポートしたファイルの中身(このサイトの場合はyatta47.hateblo.jp.export.txt)を見てみると、こんな構造になっています。

AUTHOR: yatta47
TITLE: Azureのポータルが英語になってしまったので日本語に戻した
BASENAME: 2019/08/03/230501
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 0
DATE: 08/03/2019 23:05:01
CATEGORY: Azure
IMAGE: https://images-fe.ssl-images-amazon.com/images/I/51H2%2BUmoGvL._SL160_.jpg
-----
BODY:
<p>個人で使っているAzureの管理ポータルにログインしたところ、何かが変わったようで、メニューが英語になっていました。</p>

<p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/y/yatta47/20190803/20190803224607.png" alt="f:id:yatta47:20190803224607p:plain" title="f:id:yatta47:20190803224607p:plain" class="hatena-fotolife" itemprop="image"></span></p>
:
:
:

 

BASENAMEにURL・・・というかパスが入っているので、そこをgrepで取り出します。

コマンドラインは以下。

$ grep "BASENAME" yatta47.hateblo.jp.export.txt | awk -F" " '{print "https://yatta47.hateblo.jp/entry/"$2}'

ちょっと補足。

grepでBASENAMEの行を取り出します。

その中で2列目のデータが欲しいのでawkで2列目を指定します。

そして、URL先頭がないので、それを手動で付け加えてあげてます。

こんな感じになります。

$ grep "BASENAME" yatta47.hateblo.jp.export.txt | awk -F" " '{print "https://yatta47.hateblo.jp/entry/"$2}'
https://yatta47.hateblo.jp/entry/2019/08/03/230501
https://yatta47.hateblo.jp/entry/2019/07/21/124039
https://yatta47.hateblo.jp/entry/2019/07/18/200000
https://yatta47.hateblo.jp/entry/2019/07/20/221043
https://yatta47.hateblo.jp/entry/2019/07/19/090000
https://yatta47.hateblo.jp/entry/2019/07/20/134321
https://yatta47.hateblo.jp/entry/2019/07/01/204357

 

まとめ

簡単に取れるかなーと思っていたらPythonとかRubyとかプログラミングする記事が多かったので、もっとシンプルな方法がないかなーと思って結局Linuxコマンドラインにたどり着きました。

このあとはこのURLを使って、GoogleAppsScriptを使ってタイトル一覧を取得してみようと思います。