今回は、PHPのスクレイピングライブラリであるGoutteを使用して、指定したURLに対するWebページのタイトルを取得してみます。
Goutteパッケージのインストール
Goutteパッケージはcoposerのfabpot/goutteパッケージとして提供されています。
composerをインストールしたうえで、下記のコマンドでライブラリを取得できます。
$ composer require fabpot/goutte
パッケージの取得後に、composer show
でバージョンを確認すると、本記事を書いている時点ではver3.2.2でした。goutteは内部でguzzlehttpパッケージなどを使用しているため、依存パッケージも一緒に取得されています。
$ composer show
fabpot/goutte v3.2.2 A simple PHP Web Scraper
guzzlehttp/guzzle 6.3.0 Guzzle is a PHP HTTP client library
guzzlehttp/promises v1.3.1 Guzzle promises library
guzzlehttp/psr7 1.4.2 PSR-7 message implementation that also provides common utility methods
psr/http-message 1.0.1 Common interface for HTTP messages
symfony/browser-kit v4.0.2 Symfony BrowserKit Component
symfony/css-selector v4.0.2 Symfony CssSelector Component
symfony/dom-crawler v4.0.2 Symfony DomCrawler Component
symfony/polyfill-mbstring v1.6.0 Symfony polyfill for the Mbstring extension
スクレイピングするphpプログラムを書く
composerでパッケージを取得したら、以下のような形でGoutteを使用したphpスクリプトを作成します。
<?php
require_once("vendor/autoload.php");
use Goutte\Client;
// 指定されたページへアクセスする
$url = "http://yahoo.co.jp/";
$client = new Client();
$crawler = $client->request('GET', $url);
// アクセス結果からタイトルタグのテキストを取得
$titleNode = $crawler->filter('title');
$title = $titleNode->text();
// 取得したタイトルを出力
echo( $title . PHP_EOL );
このプログラムをtests.phpとして保存し、phpコマンドで実行すると、以下のようにタイトルが出力されました。
$ php test.php
Yahoo! JAPAN
こちらもおススメ