ホームページ  >  記事  >  バックエンド開発  >  PHP ベースの Web クローラーを作成する

PHP ベースの Web クローラーを作成する

WBOY
WBOYオリジナル
2023-05-11 12:10:35645ブラウズ

インターネットの急速な発展に伴い、情報の取得と活用の重要性がますます高まっています。 Web クローラーは自動プログラムとして、インターネットから情報を迅速にクロールして処理するのに役立ち、情報の利用効率が大幅に向上します。この記事では、PHPを使用して簡単なWebクローラーを作成する方法を説明します。

1. Web クローラーの基礎知識

Web クローラーは、Web ページ上の人間の閲覧動作をシミュレートし、Web ページ上の関連情報を自動的にキャプチャできる自動プログラムです。 Web クローラーには、検索エンジンのクローリング、データ マイニング、価格比較、コンテンツの集約など、さまざまな用途があります。

Web クローラーの実行プロセスは大まかに次のとおりです。

  1. クロールする Web ページのアドレスを決定します。
  2. ターゲット Web ページに HTTP リクエストを送信し、応答を取得します。
  3. 応答から必要なデータを抽出します。
  4. データを処理して保存します。

Web クローラーの中核は、HTML ドキュメントを解析して必要な情報を抽出することです。 PHP では、DOMDocument クラスまたは SimpleXMLElement クラスを使用して XML ドキュメントを解析し、正規表現または文字列関数を使用して HTML ドキュメントを解析できます。

2. PHP ベースの Web クローラーを作成する

以下では、Douban の映画ランキング、映画情報をクロールできる PHP ベースの Web クローラーを作成する方法を実際の例を使用して説明します。

  1. クロールする Web ページのアドレスを決定します

クロールするターゲットは Douban 映画ランキングです。URL は https://movie.douban.com です。 / チャート。

  1. ターゲット Web ページに HTTP リクエストを送信し、応答を取得します。

PHP では、cURL ライブラリを使用して HTTP リクエストを送信し、応答を取得できます。 cURL は、HTTP、FTP、SMTP などの複数のプロトコルをサポートするオープンソースのネットワーク ライブラリです。

次は、cURL ライブラリを使用して HTTP リクエストを送信する例です:

$url = "https://movie.douban.com/chart";
$ch =curl_init() ;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response =curl_exec($ch);
curl_close($ ch);

上記のコードでは、まずクロールする Web ページのアドレス $url を定義し、curl_init() 関数を使用して cURL セッションを初期化します。次に、curl_setopt() 関数を使用して、リクエストする URL、応答を返すかどうかなどのcurl オプションを設定します。最後に、curl_exec() 関数を使用して HTTP リクエストを送信し、応答を取得し、curl_close() 関数を使用して cURL セッションを閉じます。

  1. 応答から必要なデータを抽出する

応答を取得した後、応答から必要な映画情報を抽出する必要があります。 Doubanの映画ランキングでは、各映画に固有のIDが付与されており、このIDをもとに各映画の詳細情報を取得することができます。

正規表現を使用してムービー ID を抽出する例を次に示します:

$pattern = '/ce47a1571fbc4e91103bbda1e91edcf6.?(. ?)/s';
preg_match_all($pattern, $response, $matches);

上記のコードでは、ムービー ID と一致する正規表現 $pattern を定義し、映画の名前。 preg_match_all() 関数を使用して応答を照合し、すべての一致結果を $matches 配列に保存します。

次に、前に取得した映画 ID を使用して、各映画の詳細情報を取得します。ここでは、SimpleXMLElement クラスを使用して XML ドキュメントを解析し、映画情報を抽出します。映画情報を抽出する例を次に示します。

foreach ($matches[1] as $url) {

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$xml = new SimpleXMLElement($response);
echo "电影名称:" . $xml->xpath('//title')[0] . "

";

echo "导演:" . $xml->xpath('//a[@rel="v:directedBy"]/text()')[0] . "

";

echo "主演:" . implode(", ", $xml->xpath('//a[@rel="v:starring"]/text()')) . "

";

echo "评分:" . $xml->xpath('//strong[@class="ll rating_num"]/text()')[0] . "

";
}

上記のコードでは、各ムービーの ID をループし、cURL ライブラリを使用して各ムービーの詳細を取得しています。次に、SimpleXMLElement クラスを使用して XML ドキュメントを解析し、映画名、監督、主演、評価などの情報を抽出します。

  1. データの処理と保存

最後に、抽出した映画情報を処理して保存できます。ここでは、echo ステートメントを使用して結果をコマンド ライン ウィンドウに出力します。

データをデータベースに保存する場合は、PDO または mysqli 拡張機能を使用してデータベースに接続し、対応するテーブルにデータを挿入できます。

3. 概要

Web クローラーは、インターネットから情報を迅速に取得してさらなる処理を実行するのに役立つ、一般的に使用される自動プログラムです。 PHP では、cURL ライブラリを使用して HTTP リクエストを送信し、DOMDocument クラスまたは SimpleXMLElement クラスを使用して XML ドキュメントまたは正規表現を解析して HTML ドキュメントと照合することで、Web クローラーの開発を実現できます。この記事が Web クローラーの基本的な知識を理解し、PHP を使用して Web クローラーを作成するのに役立つことを願っています。

以上がPHP ベースの Web クローラーを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。