Goutte: シンプルなPHPウェブスクレイパーの紹介

Goutte

Goutte: シンプルなPHPウェブスクレイパーの紹介

GoutteはPHP用のウェブスクレイピングライブラリで、データ抽出を簡単にしますが、非推奨です。

サイトを訪問

Goutte: シンプルなPHPウェブスクレイパー

Goutteは、PHP用のスクリーンスクレイピングおよびウェブクロールライブラリです。このライブラリは、ウェブサイトをクロールし、HTML/XMLレスポンスからデータを抽出するための素晴らしいAPIを提供します。しかし、注意が必要です。Goutteは非推奨となっており、バージョン4以降はSymfony BrowserKitコンポーネントのHttpBrowserクラスへの単純なプロキシとなっています。移行するには、コード内のGoutte\ClientSymfony\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でのウェブスクレイピングを簡素化するための強力なツールですが、非推奨であるため、他の選択肢を検討することをお勧めします。最新の情報を得るために、公式ドキュメントを確認してください。

Goutteの代替ツール