ウェブページのタイトルをターミナルから取得する方法
ウェブページのタイトルをターミナル( Bash )上から取得する方法についてです。
処理の流れはおおよそ次のとおりとなります。
- HTML を取得し、
- その中から
title
部分を抽出する。
1 の部分は curl
や http
、 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 --versionggrep (GNU grep) 2.22Packaged by HomebrewCopyright (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 正規表現の「後読み」「先読み」はちょっと使わないとすぐに忘れてしまいますが、うまく使うととても便利で重宝します。