【Linux】ハテナブログに投稿した記事の一覧を取得する方法
【結論】
【目次】
はじめに
「120日間毎日ブログ投稿したぜ💪」的な記事を出すための下準備として、ハテナブログに投稿した記事のタイトルとURLをスクレイピングで取得しようと思います。
ただし、スクレイピングといってもコードは書きません。
Linuxのコマンドを1回実行するだけです。
ハテナブログの分析
スクレイピングをするには対象サイトのページ構成を把握する必要があります。
ハテナブログでは、記事の一覧は月間アーカイブのリンク先で確認することができます。
記事の一覧表示では、1ページあたりに30記事分のリンクを表示し、次のようなURLのフォーマットになっており、年単位や月単位での一覧表示できます。
https://[アカウント名].hatenablog.com/archive/[年]/[月]?page=[ページ数]
記事一覧に表示される各記事へのリンクは、次のようなフォーマットで記述されています。
<a class="entry-title-link" href="[記事へのリンク]">[記事のタイトル]</a>
ここまで分かれば後はコマンドを実行するだけです。
実行するコマンド
以下のコマンドを実行すると、hira98
アカウントが2019
年にハテナブログに投稿した記事の一覧をURL,記事のタイトル
の形式でhira98.txt
ファイルに出力してくれます。
seq 12 | xargs -I@ curl https://hira98.hatenablog.com/archive/2019/@?page=1 | grep "entry-title-link" | sed 's/^.*href="\(.*\)">\(.*\)<.*$/\1,\2/' > hira98.txt;seq 12 | xargs -I@ curl https://hira98.hatenablog.com/archive/2019/@?page=2 | grep "entry-title-link" | sed 's/^.*href="\(.*\)">\(.*\)<.*$/\1,\2/' >> hira98.txt
若干使いづらいのでシェル化しようとも考えたのですが、うまく動作しないので諦めました。
個人でしか使わない上に、アカウント名と年を置換すれば流用できるので良しとします。
コマンドの動作確認
念の為、他のアカウントでも試してみました。
以下のアカウントだと、#
でコメントアウトされた行もヒットしましたが、それを除けば意図した結果を取得できました。
seq 12 | xargs -I@ curl https://ryoutaku-jo.hatenablog.com/archive/2019/@?page=1 | grep "entry-title-link" | sed 's/^.*href="\(.*\)">\(.*\)<.*$/\1,\2/' > ryoutaku-jo.txt;seq 12 | xargs -I@ curl https://ryoutaku-jo.hatenablog.com/archive/2019/@?page=2 | grep "entry-title-link" | sed 's/^.*href="\(.*\)">\(.*\)<.*$/\1,\2/' >> ryoutaku-jo.txt
...因みに本当に欲しかったのは、上記コマンドの実行結果だったりします。
参考情報
sedでダブルクォーテーションの中にある文字列を抽出する - Qiita
Linuxコマンド【 seq 】連続した数字の列を出力・表示 - Linux入門 - Webkaru
xargsコマンドで覚えておきたい使い方・組み合わせ7個(+1個) | 俺的備忘録 〜なんかいろいろ〜
Linuxコマンド【 seq 】連続した数字の列を出力・表示 - Linux入門 - Webkaru
さいごに
以前聞いた、インフラエンジニアの「コマンド実行すればいいでしょ。」発言の意味が少しだけ分かってきた気がします。