ウェブページのタイトルをターミナルから取得する方法

ウェブページのタイトルをターミナル( Bash )上から取得する方法についてです。

処理の流れはおおよそ次のとおりとなります。

  1. HTML を取得し、
  2. その中から title 部分を抽出する。

1 の部分は curlhttp 、 2 の部分は grep コマンドなどを使うとよいでしょう。

Mac の場合の例をあげてみます。

function http_get_title_of_page {
  curl -s ${1} | ggrep -oP "(?<=<title>)(.+)(?=</title>)"
}

http_get_title_of_page https://gotohayato.com
# => タイトルが返ってくる 

以下上記コードの解説です。

  • curl は HTTP でウェブページを取得するコマンドです。デフォルトでは標準出力に結果を返します。
  • curl-s オプションは silent の略で、ステータスや進捗などの表示を表示しないように設定します。
  • ggrep は Homebrew に登録されている GNU grep コマンドです。 Mac にデフォルトで入っている grep コマンドには Perl 正規表現の「後読み」「先読み」の機能が無いため、今回は後読み/先読みができる ggrep を使いました。
  • ggrep-o オプションは only-matching の略で、「正規表現に一致した部分のみを返す」よう指定するオプションです。 -o オプションがないとタイトルが含まれる行全体が返されます。
  • ggrep-P オプションは perl-regexp の略で、上述の「後読み」「先読み」機能( Perl 正規表現)を有効にするオプションです。

ggrep は Mac にデフォルトで入っているものではなく Homebrew のパッケージです。 Homebrew が入っていれば次のコマンドでインストールすることができます。

$ # GNU grep をインストール
$ brew install grep

$ # 問題なくインストールできたことの確認
$ ggrep --version
ggrep (GNU grep) 2.22
Packaged by Homebrew
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

通常の grep にかぶせて使いたい場合はエイリアス設定をするとよいでしょう。

$ # ggrep を grep として使う
$ alias grep='ggrep'

以上です。

Perl 正規表現の「後読み」「先読み」はちょっと使わないとすぐに忘れてしまいますが、うまく使うととても便利で重宝します。