PHP Simple HTML DOM ParserというPHPライブラリでスクレイピングをおこなう手法があるが、このライブラリを使って対象ページのmeta descriptionを取得する方法があまり共有されていなかったので、そのやり方についてまとめておく。
まず、以下のリンクからライブラリのファイルをダウンロードする。
https://sourceforge.net/projects/simplehtmldom/
使い方は簡単で、ダウンロードしたファイルを適当なディレクトリ(今回はlibディレクトリ)に配置し、require_onceで読み込む。
<?php
require_once './lib/simple_html_dom.php';
$url = 'https://example.com';
$html = file_get_html($url);
そして、ライブラリ内で定義されているfile_get_html関数を実行することで、対象ページのDOMを取得することができる。
ここからがポイントなのだが、まず普通のHTMLタグ要素を取得する場合は以下のようにシンプルな書き方でOK。
※CMSなどでソースコードが出力されていると余計な空白が入っている場合があるので、念のためtrim関数で空白を除去している。
$title = trim($html->find('title', 0)->plaintext);
この場合、ページのタイトルタグを取得することができる。
H1タグを取得する場合は、titleをh1に変えるだけだ。
しかし、meta descriptionを取得する場合は、少し書き方が変わる。
$description = trim($html->find('meta[name=description]', 0)->content);
上記のようにname属性にdescriptionを指定し、値を取得する際はcontentにアクセスする必要があるのだ。