Goutte

最終更新日時:2017-04-12 16:32:50
PHP

Goutte(ゲットと発音するらしい)は、PHP でいわゆるスクレイピングするためのパッケージです。

インストール


Composer を使ってインストール可能なので、とても楽ちんです( ̄ー ̄)

 % composer require fabpot/goutte


だけでOKです( ̄ー ̄)


使用方法


以下のような感じです。
autoloader.php を読み込みつつ、Goutte\Client を use し、あとはインスタンスを作ったら request() で HTTP リクエストを投げるような手順ですね。


 require_once '../vendor/autoload.php';
 use Goutte\Client;
 
 $client = new Client();
 $cw = $client->request('GET', 'http:/xxxx.com/xxx.html');
 $a = $cw->html();



とても簡単ですね。
GET だけでなく、以下のように POST ももちろん可能です。

 $cw = $client->request('POST', 'http:/xxxx.com/xxx', array('param1' => 'test'));


また、上記では単に HTML 形式で取得した内容を $a に格納していますが、この部分はフィルターをかけたりいろいろと出来るようです。
ある程度のパース処理は Goutte の方で装備されているので、特定のタグの内容を取得するレベルであれば簡単に書けます。
なかなかよく出来ていますね~


日本語対応


詳しいところまでは追っていないのですが、UTF-8 についてはきちんと対応できているように思えます。
ただ、そのままだと HTML エンコードされた状態でコンテンツが取得されるようなので、PHP コード内で処理するには以下のようにデコードする必要があるようです。

 $b =  html_entity_decode($a, ENT_QUOTES, 'UTF-8');


ただ、、、、UTF-8 は今のところ上記で問題ないのですが、Shift-JIS のページだと問題が起きます。
具体的には、、、一部のみ文字化けが発生します。

ということで、、、自分的には Goutte を使うのはまだ時期尚早かな~という印象です。
使いやすいので限定的には使えると思いますが、小回りを利かせる必要があるのであれば、Perl の WWW::Mechanize を使う方がいいかな、と思いました。

お問い合わせは 掲示板 にて。