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にアクセスする必要があるのだ。