インターネットの発達により、私たちはさまざまな検索エンジンを通じてさまざまな情報を簡単に得ることができます。開発者にとって、検索エンジンからさまざまなデータをどのように取得するかは非常に重要なスキルです。今日は、PHP を使用して Baidu の検索結果をクロールするクローラーを作成する方法を学びます。
1. クローラーの動作原理
始める前に、まずクローラーの動作の基本原理を理解しましょう。
2. Baidu 検索結果をクロールするプロセス
まず、リクエスト URL をベースに構築する必要があります。キーワードについて。 「PHP クローラー」の検索を例にとると、リクエスト URL は次のとおりです。 https://www.baidu.com/s?ie=UTF-8&wd=PHP クローラー
このうち、ie=UTF- 8 は、UTF-8 コーディング方式を使用することを意味します; wd= の後に検索キーワードが続きます。
PHP では、cURL ライブラリを使用して HTTP リクエストを送信できます。具体的な実装コードは次のとおりです。
<?php function curl_request($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $output = curl_exec($ch); curl_close($ch); return $output; } $url = 'https://www.baidu.com/s?ie=UTF-8&wd=PHP%20%E7%88%AC%E8%99%AB'; $html = curl_request($url); echo $html; ?>
ここでは、curl_request() 関数を使用してリクエストを送信し、ページのコンテンツを取得します。
次に、正規表現を使用してページ コンテンツを解析し、検索結果に必要なデータを抽出する必要があります。ブラウザの開発者ツールを使用してページのソース コードを表示し、必要なデータに対応する HTML 要素を見つけて、正規表現を使用して照合することができます。
たとえば、検索結果のタイトルとリンクを取得したい場合、ページのソース コードから次のコードを見つけることができます:
<h3 class="t"><a href="链接地址" target="_blank">标题</a></h3>
次の正規表現を使用して、 match:
$pattern = '/<h3 class="t"><a([sS]*?)href="(.*?)"[sS]*?>([sS]*?)</a></h3>/'; preg_match_all($pattern, $html, $matches);
ここでは、preg_match_all() 関数を使用して正規表現マッチングを実装し、マッチング結果を $matches 変数に保存します。
最後に、抽出した検索結果を出力して、必要なデータを取得します。具体的な実装コードは次のとおりです。
$url) { echo ($key + 1) . '、' . $matches[3][$key] . '
'; } ?>
ここでは、foreach ループを使用して、一致したリンクとタイトルを走査し、結果をページに出力します。
3. 概要
この記事の導入部を通じて、PHP クローラーの基本原理と、PHP を使用して Baidu の検索結果をクロールする方法を理解しました。同時に、クローラの利用には法的、倫理的等の問題にも注意が必要であることも認識しており、関連法規を遵守し、違法・違法なクローリング操作を行わないことが必要です。
以上がPHP クローラーの練習: Baidu の検索結果をクロールするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。