Goutte: シンプルなPHPウェブスクレイパー
Goutteは、PHP用のスクリーンスクレイピングおよびウェブクロールライブラリです。このライブラリは、ウェブサイトをクロールし、HTML/XMLレスポンスからデータを抽出するための素晴らしいAPIを提供します。しかし、注意が必要です。Goutteは非推奨となっており、バージョン4以降はSymfony BrowserKitコンポーネントのHttpBrowserクラスへの単純なプロキシとなっています。移行するには、コード内のGoutte\Client
をSymfony\Component\BrowserKit\HttpBrowser
に置き換えてください。
要件
GoutteはPHP 7.1以上に依存しています。
インストール
composer.json
ファイルにfabpot/goutteを依存関係として追加します:
composer require fabpot/goutte
使用方法
Goutteクライアントインスタンスを作成します(これはSymfony\Component\BrowserKit\HttpBrowser
を拡張しています):
use Goutte\Client;
$client = new Client();
リクエストを送信
リクエストメソッドを使用してリクエストを送信します:
// symfony.comのウェブサイトにアクセス
$crawler = $client->request('GET', 'https://www.symfony.com/blog/');
このメソッドは、Crawler
オブジェクト(Symfony\Component\DomCrawler\Crawler
)を返します。
リンクをクリック
// "Security Advisories"リンクをクリック
$link = $crawler->selectLink('Security Advisories')->link();
$crawler = $client->click($link);
データを抽出
// このカテゴリの最新の投稿を取得し、タイトルを表示
$crawler->filter('h2 > a')->each(function ($node) {
print $node->text()."\n";
});
フォームを送信
$crawler = $client->request('GET', 'https://github.com/');
$crawler = $client->click($crawler->selectLink('Sign in')->link());
$form = $crawler->selectButton('Sign in')->form();
$crawler = $client->submit($form, ['login' => 'fabpot', 'password' => 'xxxxxx']);
$crawler->filter('.flash-error')->each(function ($node) {
print $node->text()."\n";
});
さらなる情報
Goutteの詳細については、BrowserKit、DomCrawler、およびHttpClient Symfonyコンポーネントのドキュメントを参照してください。
発音
Goutteは「グッテ」と発音されます。ブーツと韻を踏んでいますが、アウトとは韻を踏んでいません。
技術情報
Goutteは、以下のSymfonyコンポーネントの薄いラッパーです:BrowserKit、CssSelector、DomCrawler、およびHttpClient。
ライセンス
GoutteはMITライセンスの下でライセンスされています。
結論
Goutteは、PHPでのウェブスクレイピングを簡素化するための強力なツールですが、非推奨であるため、他の選択肢を検討することをお勧めします。最新の情報を得るために、公式ドキュメントを確認してください。