。以下の方法があります:","クランチベース","会社概要","素晴らしいサポートをありがとう!","クイックリンク","アフィリエイト・プログラム","プレミアム","ProxyScrape プレミアムトライアル","プロキシの種類","代理国","プロキシの使用例","重要","クッキーポリシー","免責事項","プライバシーポリシー","ご利用条件","ソーシャルメディア","フェイスブック","LinkedIn","ツイッター","クオラ","テレグラム","ディスコード","\n © Copyright 2025 -Thib BV| Brugstraat 18 | 2812 Mechelen | ベルギー | VAT BE 0749 716 760\n"]}
ウェブスクレイピングは、ウェブから情報を抽出して分析する必要のある開発者やデータアナリストにとって不可欠なツールとなっています。商品価格の追跡、調査のためのデータ収集、カスタマイズされたダッシュボードの構築など、ウェブスクレイピングには無限の可能性があります。
もしあなたがPHP愛好家なら、Goutteはウェブスクレイピングのニーズに応える素晴らしいライブラリだ。 Goutteは軽量でユーザーフレンドリーかつ強力で、Guzzle のHTTP クライアント機能とSymfony の DomCrawlerを組み合わせることで、スムーズで効率的な Web スクレイピングを実現します。
このガイドでは、Goutteを使用したPHPによるWebスクレイピングの基本から、インストール、最初のスクリプト、フォーム処理やページネーションなどの高度なテクニックまでを紹介します。
Goutteは様々な理由で開発者の間で人気を博しており、PHPのスクレイピング・ライブラリとしてよく使われている:
PHPの初心者でもベテランの開発者でも、Goutteはシンプルさとパワーの理想的なバランスを保っている。
コーディングに飛び込む前に、必要な前提条件が整っていることを確認する:
Goutteをインストールするには、ターミナルで以下のコマンドを実行するだけだ:
コンポーザーはファブポット/グートを必要とする
インストールが完了したら、プロジェクトにComposerのオートローダーが必要なので、ライブラリにアクセスできることを確認する:
require 'vendor/autoload.php';
これでスクレイピングを始める準備ができた!
簡単な例から始めよう。Goutteを使ってウェブページのタイトルをスクレイピングしてみよう。以下は基本的なスクリプトである:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
// Initialize Goutte Client
$client = new Client();
// Send a GET request to the target URL
$crawler = $client->request('GET', 'https://books.toscrape.com/');
// Extract the title of the page
$title = $crawler->filter('title')->text();
echo "Page Title: $title\n";
// Extract the titles of the first 5 books
echo "First 5 Book Titles:\n";
$crawler->filter('.product_pod h3 a')->slice(0, 5)->each(function ($node) {
echo "- " . $node->attr('title') . "\n";
});
?>
出力:
ページタイトル: 全商品|刮目すべき本-サンドボックス
最初の5冊:
- 屋根裏の光
- ティッピング・ザ・ベルベット
- スウミッション
- シャープ・オブジェクト
- サピエンス人類史
これほど簡単なことはない!たった数行のコードで タイトル
タグを使用する。
ウェブページを取得する方法を学んだら、次のステップは、特定のHTML要素からリンクやコンテンツなどの特定のデータを抽出することです。
以下のスクリプトは href = "/stock/stock_detail.html?
すべての <a>
タグをウェブページに貼り付ける:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://books.toscrape.com/');
// Extract all <a> tags
$links = $crawler->filter('a')->each(function ($node) {
return $node->attr('href');
});
// Print all extracted links
foreach ($links as $link) {
echo $link . "\n";
}
これは、ページ上に存在するすべてのハイパーリンクを返します。
Goutteを使えば、HTMLからデータを抽出したり解析したりするのが簡単になる。 クラス
または 身分証明書
セレクタを使用します。この例では ウェブサイトをスクラップする本.具体的には、各書籍の情報をスクレイピングする、 プロダクトポッド
.ウェブサイトでの表示はこうだ:
以下は、グーテを使った例である:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://books.toscrape.com/');
// Extract all <a> tags
$links = $crawler->filter('a')->each(function ($node) {
return $node->attr('href');
});
// Print all extracted links
foreach ($links as $link) {
echo $link . "\n";
}
// Extract elements with class 'product_pod'
$products = $crawler->filter('.product_pod')->each(function ($node) {
return $node->text();
});
// Print all extracted product details
foreach ($products as $product) {
echo $product . "\n";
}
では、ページ間を移動したり、ページ送りしたりする方法を探ってみよう。今回使用するサンプル・ページには、次のページへのページ送りを可能にする "Next "ボタンがあります。このボタンを活用して、ページ送りを実装してみましょう。
まず、ボタンの位置をその クラス
属性の値として 次のページ
.この要素の中に <a>
タグには次のページのURLが含まれています。このURLを抽出することで、新しいリクエストを送信し、シームレスに次のページに移動するために使用することができます。 次のページ
ボタンをクリックする。
これを実現するコードはこんな感じだ:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://books.toscrape.com/');
// Handle pagination using the 'next' button
while ($crawler->filter('li.next a')->count() > 0) {
$nextLink = $crawler->filter('li.next a')->attr('href');
$crawler = $client->request('GET', 'https://books.toscrape.com/catalogue/' . $nextLink);
// Extract and print the current page URL
echo "Currently on: " . $crawler->getUri() . "\n";
}
この方法を使えば、ページ間のナビゲーションを自動化し、データをスクレイピングし続けることができる。
Goutteはフォームを扱うこともできます。この機能を実証するために、下の画像に示すような入力フィールドが1つあるこのウェブサイトを使ってみましょう:
このフォームを送信するコードはこんな感じです:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://www.scrapethissite.com/pages/forms/');
// Submit the search form with a query
$form = $crawler->selectButton('Search')->form();
$form['q'] = 'Canada';
$crawler = $client->submit($form);
// Extract and print the results
$results = $crawler->filter('.team')->each(function ($node) {
return $node->text();
});
foreach ($results as $result) {
echo $result . "\n";
}
このスクリプトは q
を持つ。 ウェブスクレイピング
と入力して送信する。ここから、先の例と同じように、検索結果ページからコンテンツを抽出することができる。
ネットワーク接続の失敗や存在しないURLのような不測の事態に対処するために、常にエラー処理を追加してください。
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
try {
$crawler = $client->request('GET', 'https://invalid-url-example.com');
echo "Page title: " . $crawler->filter('title')->text();
} catch (Exception $e) {
echo "An error occurred: " . $e->getMessage();
}
}
ウェブスクレイピングは、常に倫理的かつ責任を持って行われるべきです。robots.txt`ファイルは、ウェブサイトがウェブクローラーと通信するために使用するシンプルなテキストファイルで、サイトのどの部分にアクセスできるか、またはアクセスできないかを概説しています。スクレイピングを行う前に、`robots.txt`ファイルを確認し、そのサイトのルールに従っているか、その条件を尊重しているかを確認することが重要です。これらのガイドラインを無視すると、法的および倫理的な問題につながる可能性があるため、スクレイピング・プロセスでは常にこのステップを優先してください。
続きを読む robots.txt
これ.
短時間に多くのリクエストを送信すると、サーバーに負担がかかり、他のユーザーのパフォーマンスが低下する可能性があります。サーバーへの負荷を最小限に抑え、トラフィックを効率的に処理できるようにするため、各リクエストの間に短い遅延を設けるのは良い習慣です。このような手順を踏むことは、サーバーの安定性を維持するのに役立つだけでなく、共有リソースの責任ある思いやりのある利用を示すことにもなります。
sleep(1);// リクエスト間で1秒待つ
ウェブスクレイピングは、効率的にデータを収集するための強力なツールですが、よくある落とし穴を避け、倫理的な使用を保証するためには、責任を持って思慮深いアプローチが必要です。ウェブサイトの利用規約を尊重し、リクエスト間の適切な遅延を実装し、動的コンテンツを処理できるツールを使用するなどのベストプラクティスを遵守することで、サーバーへの影響を最小限に抑えながら効果的に動作するスクレイパーを作成することができます。さらに、HTTPS証明書を確認し、セキュリティに留意することで、スクレーパーとそれが収集するデータを保護することができます。適切な計画と実行により、ウェブスクレイピングは調査、分析、革新のための貴重なリソースとなる。